cosmopolitan/libc/str/iswpunct.c
Justine Tunney b8a6a989c0
Create ELF aliases for identical symbols
This change greatly reduces the number of modules that need to be
compiled. The only issue right now is that sometimes when viewing
symbol table entries, the aliased symbol is chosen.
2023-06-06 03:33:49 -07:00

543 lines
30 KiB
C
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/*-*- mode:c;indent-tabs-mode:nil;c-basic-offset:2;tab-width:8;coding:utf-8 -*-│
│vi: set net ft=c ts=2 sts=2 sw=2 fenc=utf-8 :vi│
╞══════════════════════════════════════════════════════════════════════════════╡
│ Copyright 2020 Justine Alexandra Roberts Tunney │
│ │
│ Permission to use, copy, modify, and/or distribute this software for │
│ any purpose with or without fee is hereby granted, provided that the │
│ above copyright notice and this permission notice appear in all copies. │
│ │
│ THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL │
│ WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED │
│ WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE │
│ AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL │
│ DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR │
│ PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER │
│ TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR │
│ PERFORMANCE OF THIS SOFTWARE. │
╚─────────────────────────────────────────────────────────────────────────────*/
#include "libc/str/str.h"
/**
* Returns nonzero if c is punctuation mark.
*/
int iswpunct(wint_t c) {
if (c < 0xa0) {
switch (c) {
case '!':
case '"':
case '#':
case '$':
case '%':
case '&':
case '\'':
case '(':
case ')':
case '*':
case '+':
case ',':
case '-':
case '.':
case '/':
case ':':
case ';':
case '<':
case '=':
case '>':
case '?':
case '@':
case '[':
case '\\':
case ']':
case '^':
case '_':
case '`':
case '{':
case '|':
case '}':
case '~':
return 1;
default:
return 0;
}
}
switch (c) {
case u'¡': // INVERTED EXCLAMATION MARK (0x00a1 Po)
case u'§': // SECTION SIGN (0x00a7 Po)
case u'«': // LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (0x00ab Pi)
case u'': // PILCROW SIGN (0x00b6 Po)
case u'·': // MIDDLE DOT (0x00b7 Po)
case u'»': // RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (0x00bb Pf)
case u'¿': // INVERTED QUESTION MARK (0x00bf Po)
case u';': // GREEK QUESTION MARK (0x037e Po)
case u'·': // GREEK ANO TELEIA (0x0387 Po)
case u'՚': // ARMENIAN APOSTROPHE (0x055a Po)
case u'՛': // ARMENIAN EMPHASIS MARK (0x055b Po)
case u'՜': // ARMENIAN EXCLAMATION MARK (0x055c Po)
case u'՝': // ARMENIAN COMMA (0x055d Po)
case u'՞': // ARMENIAN QUESTION MARK (0x055e Po)
case u'՟': // ARMENIAN ABBREVIATION MARK (0x055f Po)
case u'։': // ARMENIAN FULL STOP (0x0589 Po)
case u'֊': // ARMENIAN HYPHEN (0x058a Pd)
case 0x05be: // HEBREW PUNCTUATION MAQAF (0x05be Pd)
case 0x05c0: // HEBREW PUNCTUATION PASEQ (0x05c0 Po)
case 0x05c3: // HEBREW PUNCTUATION SOF PASUQ (0x05c3 Po)
case 0x05c6: // HEBREW PUNCTUATION NUN HAFUKHA (0x05c6 Po)
case 0x05f3: // HEBREW PUNCTUATION GERESH (0x05f3 Po)
case 0x05f4: // HEBREW PUNCTUATION GERSHAYIM (0x05f4 Po)
case 0x0609: // ARABIC-INDIC PER MILLE SIGN (0x0609 Po)
case 0x060a: // ARABIC-INDIC PER TEN THOUSAND SIGN (0x060a Po)
case 0x060c: // ARABIC COMMA (0x060c Po)
case 0x060d: // ARABIC DATE SEPARATOR (0x060d Po)
case 0x061b: // ARABIC SEMICOLON (0x061b Po)
case u'؞': // ARABIC TRIPLE DOT PUNCTUATION MARK (0x061e Po)
case u'؟': // ARABIC QUESTION MARK (0x061f Po)
case u'٪': // ARABIC PERCENT SIGN (0x066a Po)
case u'٫': // ARABIC DECIMAL SEPARATOR (0x066b Po)
case u'٬': // ARABIC THOUSANDS SEPARATOR (0x066c Po)
case u'٭': // ARABIC FIVE POINTED STAR (0x066d Po)
case u'۔': // ARABIC FULL STOP (0x06d4 Po)
case u'߷': // NKO SYMBOL GBAKURUNEN (0x07f7 Po)
case u'߸': // NKO COMMA (0x07f8 Po)
case u'߹': // NKO EXCLAMATION MARK (0x07f9 Po)
case u'': // DEVANAGARI DANDA (0x0964 Po)
case u'': // DEVANAGARI DOUBLE DANDA (0x0965 Po)
case u'': // DEVANAGARI ABBREVIATION SIGN (0x0970 Po)
case 0x09fd: // BENGALI ABBREVIATION SIGN (0x09fd Po)
case 0x0a76: // GURMUKHI ABBREVIATION SIGN (0x0a76 Po)
case 0x0af0: // GUJARATI ABBREVIATION SIGN (0x0af0 Po)
case 0x0c77: // TELUGU SIGN SIDDHAM (0x0c77 Po)
case 0x0c84: // KANNADA SIGN SIDDHAM (0x0c84 Po)
case u'': // SINHALA PUNCTUATION KUNDDALIYA (0x0df4 Po)
case u'': // THAI CHARACTER FONGMAN (0x0e4f Po)
case u'': // THAI CHARACTER ANGKHANKHU (0x0e5a Po)
case u'': // THAI CHARACTER KHOMUT (0x0e5b Po)
case u'': // TIBETAN MARK INITIAL YIG MGO MDUN MA (0x0f04 Po)
case u'': // TIBETAN MARK CLOSING YIG MGO SGAB MA (0x0f05 Po)
case u'': // TIBETAN MARK CARET YIG MGO PHUR SHAD MA (0x0f06 Po)
case u'': // TIBETAN MARK YIG MGO TSHEG SHAD MA (0x0f07 Po)
case u'': // TIBETAN MARK SBRUL SHAD (0x0f08 Po)
case u'': // TIBETAN MARK BSKUR YIG MGO (0x0f09 Po)
case u'': // TIBETAN MARK BKA- SHOG YIG MGO (0x0f0a Po)
case u'': // TIBETAN MARK INTERSYLLABIC TSHEG (0x0f0b Po)
case u'': // TIBETAN MARK DELIMITER TSHEG BSTAR (0x0f0c Po)
case u'': // TIBETAN MARK SHAD (0x0f0d Po)
case u'': // TIBETAN MARK NYIS SHAD (0x0f0e Po)
case u'': // TIBETAN MARK TSHEG SHAD (0x0f0f Po)
case u'': // TIBETAN MARK NYIS TSHEG SHAD (0x0f10 Po)
case u'': // TIBETAN MARK RIN CHEN SPUNGS SHAD (0x0f11 Po)
case u'': // TIBETAN MARK RGYA GRAM SHAD (0x0f12 Po)
case u'': // TIBETAN MARK GTER TSHEG (0x0f14 Po)
case u'': // TIBETAN MARK GUG RTAGS GYON (0x0f3a Ps)
case u'': // TIBETAN MARK GUG RTAGS GYAS (0x0f3b Pe)
case u'': // TIBETAN MARK ANG KHANG GYON (0x0f3c Ps)
case u'': // TIBETAN MARK ANG KHANG GYAS (0x0f3d Pe)
case u'': // TIBETAN MARK PALUTA (0x0f85 Po)
case u'': // TIBETAN MARK BSKA- SHOG GI MGO RGYAN (0x0fd0 Po)
case u'': // TIBETAN MARK MNYAM YIG GI MGO RGYAN (0x0fd1 Po)
case u'': // TIBETAN MARK NYIS TSHEG (0x0fd2 Po)
case u'': // TIBETAN MARK INITIAL BRDA RNYING YIG MGO MDUN MA (0x0fd3 Po)
case u'': // TIBETAN MARK CLOSING BRDA RNYING YIG MGO SGAB MA (0x0fd4 Po)
case u'': // TIBETAN MARK LEADING MCHAN RTAGS (0x0fd9 Po)
case u'': // TIBETAN MARK TRAILING MCHAN RTAGS (0x0fda Po)
case u'': // MYANMAR SIGN LITTLE SECTION (0x104a Po)
case u'': // MYANMAR SIGN SECTION (0x104b Po)
case u'': // MYANMAR SYMBOL LOCATIVE (0x104c Po)
case u'': // MYANMAR SYMBOL COMPLETED (0x104d Po)
case u'': // MYANMAR SYMBOL AFOREMENTIONED (0x104e Po)
case u'': // MYANMAR SYMBOL GENITIVE (0x104f Po)
case u'': // GEORGIAN PARAGRAPH SEPARATOR (0x10fb Po)
case u'': // ETHIOPIC SECTION MARK (0x1360 Po)
case u'': // ETHIOPIC WORDSPACE (0x1361 Po)
case u'': // ETHIOPIC FULL STOP (0x1362 Po)
case u'': // ETHIOPIC COMMA (0x1363 Po)
case u'': // ETHIOPIC SEMICOLON (0x1364 Po)
case u'': // ETHIOPIC COLON (0x1365 Po)
case u'': // ETHIOPIC PREFACE COLON (0x1366 Po)
case u'': // ETHIOPIC QUESTION MARK (0x1367 Po)
case u'': // ETHIOPIC PARAGRAPH SEPARATOR (0x1368 Po)
case u'': // CANADIAN SYLLABICS HYPHEN (0x1400 Pd)
case u'': // CANADIAN SYLLABICS FULL STOP (0x166e Po)
case u'': // OGHAM FEATHER MARK (0x169b Ps)
case u'': // OGHAM REVERSED FEATHER MARK (0x169c Pe)
case u'': // RUNIC SINGLE PUNCTUATION (0x16eb Po)
case u'': // RUNIC MULTIPLE PUNCTUATION (0x16ec Po)
case u'': // RUNIC CROSS PUNCTUATION (0x16ed Po)
case u'': // PHILIPPINE SINGLE PUNCTUATION (0x1735 Po)
case u'': // PHILIPPINE DOUBLE PUNCTUATION (0x1736 Po)
case u'': // KHMER SIGN KHAN (0x17d4 Po)
case u'': // KHMER SIGN BARIYOOSAN (0x17d5 Po)
case u'': // KHMER SIGN CAMNUC PII KUUH (0x17d6 Po)
case u'': // KHMER SIGN BEYYAL (0x17d8 Po)
case u'': // KHMER SIGN PHNAEK MUAN (0x17d9 Po)
case u'': // KHMER SIGN KOOMUUT (0x17da Po)
case u'': // MONGOLIAN BIRGA (0x1800 Po)
case u'': // MONGOLIAN ELLIPSIS (0x1801 Po)
case u'': // MONGOLIAN COMMA (0x1802 Po)
case u'': // MONGOLIAN FULL STOP (0x1803 Po)
case u'': // MONGOLIAN COLON (0x1804 Po)
case u'': // MONGOLIAN FOUR DOTS (0x1805 Po)
case u'': // MONGOLIAN TODO SOFT HYPHEN (0x1806 Pd)
case u'': // MONGOLIAN SIBE SYLLABLE BOUNDARY MARKER (0x1807 Po)
case u'': // MONGOLIAN MANCHU COMMA (0x1808 Po)
case u'': // MONGOLIAN MANCHU FULL STOP (0x1809 Po)
case u'': // MONGOLIAN NIRUGU (0x180a Po)
case u'': // LIMBU EXCLAMATION MARK (0x1944 Po)
case u'': // LIMBU QUESTION MARK (0x1945 Po)
case u'': // BUGINESE PALLAWA (0x1a1e Po)
case u'': // BUGINESE END OF SECTION (0x1a1f Po)
case u'': // OL CHIKI PUNCTUATION MUCAAD (0x1c7e Po)
case u'᱿': // OL CHIKI PUNCTUATION DOUBLE MUCAAD (0x1c7f Po)
case u'': // HYPHEN (0x2010 Pd)
case u'': // NON-BREAKING HYPHEN (0x2011 Pd)
case u'': // FIGURE DASH (0x2012 Pd)
case u'': // EN DASH (0x2013 Pd)
case u'': // EM DASH (0x2014 Pd)
case u'': // HORIZONTAL BAR (0x2015 Pd)
case u'': // DOUBLE VERTICAL LINE (0x2016 Po)
case u'': // DOUBLE LOW LINE (0x2017 Po)
case u'': // LEFT SINGLE QUOTATION MARK (0x2018 Pi)
case u'': // RIGHT SINGLE QUOTATION MARK (0x2019 Pf)
case u'': // SINGLE LOW-9 QUOTATION MARK (0x201a Ps)
case u'': // SINGLE HIGH-REVERSED-9 QUOTATION MARK (0x201b Pi)
case u'': // LEFT DOUBLE QUOTATION MARK (0x201c Pi)
case u'': // RIGHT DOUBLE QUOTATION MARK (0x201d Pf)
case u'': // DOUBLE LOW-9 QUOTATION MARK (0x201e Ps)
case u'': // DOUBLE HIGH-REVERSED-9 QUOTATION MARK (0x201f Pi)
case u'': // DAGGER (0x2020 Po)
case u'': // DOUBLE DAGGER (0x2021 Po)
case u'': // BULLET (0x2022 Po)
case u'': // TRIANGULAR BULLET (0x2023 Po)
case u'': // ONE DOT LEADER (0x2024 Po)
case u'': // TWO DOT LEADER (0x2025 Po)
case u'': // HORIZONTAL ELLIPSIS (0x2026 Po)
case u'': // HYPHENATION POINT (0x2027 Po)
case u'': // PER MILLE SIGN (0x2030 Po)
case u'': // PER TEN THOUSAND SIGN (0x2031 Po)
case u'': // PRIME (0x2032 Po)
case u'': // DOUBLE PRIME (0x2033 Po)
case u'': // TRIPLE PRIME (0x2034 Po)
case u'': // REVERSED PRIME (0x2035 Po)
case u'': // REVERSED DOUBLE PRIME (0x2036 Po)
case u'': // REVERSED TRIPLE PRIME (0x2037 Po)
case u'': // CARET (0x2038 Po)
case u'': // SINGLE LEFT-POINTING ANGLE QUOTATION MARK (0x2039 Pi)
case u'': // SINGLE RIGHT-POINTING ANGLE QUOTATION MARK (0x203a Pf)
case u'': // REFERENCE MARK (0x203b Po)
case u'': // DOUBLE EXCLAMATION MARK (0x203c Po)
case u'': // INTERROBANG (0x203d Po)
case u'': // OVERLINE (0x203e Po)
case u'': // UNDERTIE (0x203f Pc)
case u'': // CHARACTER TIE (0x2040 Pc)
case u'': // CARET INSERTION POINT (0x2041 Po)
case u'': // ASTERISM (0x2042 Po)
case u'': // HYPHEN BULLET (0x2043 Po)
case u'': // LEFT SQUARE BRACKET WITH QUILL (0x2045 Ps)
case u'': // RIGHT SQUARE BRACKET WITH QUILL (0x2046 Pe)
case u'': // DOUBLE QUESTION MARK (0x2047 Po)
case u'': // QUESTION EXCLAMATION MARK (0x2048 Po)
case u'': // EXCLAMATION QUESTION MARK (0x2049 Po)
case u'': // TIRONIAN SIGN ET (0x204a Po)
case u'': // REVERSED PILCROW SIGN (0x204b Po)
case u'': // BLACK LEFTWARDS BULLET (0x204c Po)
case u'': // BLACK RIGHTWARDS BULLET (0x204d Po)
case u'': // LOW ASTERISK (0x204e Po)
case u'': // REVERSED SEMICOLON (0x204f Po)
case u'': // CLOSE UP (0x2050 Po)
case u'': // TWO ASTERISKS ALIGNED VERTICALLY (0x2051 Po)
case u'': // SWUNG DASH (0x2053 Po)
case u'': // INVERTED UNDERTIE (0x2054 Pc)
case u'': // FLOWER PUNCTUATION MARK (0x2055 Po)
case u'': // THREE DOT PUNCTUATION (0x2056 Po)
case u'': // QUADRUPLE PRIME (0x2057 Po)
case u'': // FOUR DOT PUNCTUATION (0x2058 Po)
case u'': // FIVE DOT PUNCTUATION (0x2059 Po)
case u'': // TWO DOT PUNCTUATION (0x205a Po)
case u'': // FOUR DOT MARK (0x205b Po)
case u'': // DOTTED CROSS (0x205c Po)
case u'': // TRICOLON (0x205d Po)
case u'': // VERTICAL FOUR DOTS (0x205e Po)
case u'': // SUPERSCRIPT LEFT PARENTHESIS (0x207d Ps)
case u'': // SUPERSCRIPT RIGHT PARENTHESIS (0x207e Pe)
case u'': // SUBSCRIPT LEFT PARENTHESIS (0x208d Ps)
case u'': // SUBSCRIPT RIGHT PARENTHESIS (0x208e Pe)
case u'': // LEFT CEILING (0x2308 Ps)
case u'': // RIGHT CEILING (0x2309 Pe)
case u'': // LEFT FLOOR (0x230a Ps)
case u'': // RIGHT FLOOR (0x230b Pe)
case u'': // LEFT-POINTING ANGLE BRACKET (0x2329 Ps)
case u'': // RIGHT-POINTING ANGLE BRACKET (0x232a Pe)
case u'': // MEDIUM LEFT PARENTHESIS ORNAMENT (0x2768 Ps)
case u'': // MEDIUM RIGHT PARENTHESIS ORNAMENT (0x2769 Pe)
case u'': // MEDIUM FLATTENED LEFT PARENTHESIS ORNAMENT (0x276a Ps)
case u'': // MEDIUM FLATTENED RIGHT PARENTHESIS ORNAMENT (0x276b Pe)
case u'': // MEDIUM LEFT-POINTING ANGLE BRACKET ORNAMENT (0x276c Ps)
case u'': // MEDIUM RIGHT-POINTING ANGLE BRACKET ORNAMENT (0x276d Pe)
case u'': // HEAVY LEFT-POINTING ANGLE QUOTATION MARK ORNAMENT (0x276e Ps)
case u'': // HEAVY RIGHT-POINTING ANGLE QUOT MARK ORNAMENT (0x276f Pe)
case u'': // HEAVY LEFT-POINTING ANGLE BRACKET ORNAMENT (0x2770 Ps)
case u'': // HEAVY RIGHT-POINTING ANGLE BRACKET ORNAMENT (0x2771 Pe)
case u'': // LIGHT LEFT TORTOISE SHELL BRACKET ORNAMENT (0x2772 Ps)
case u'': // LIGHT RIGHT TORTOISE SHELL BRACKET ORNAMENT (0x2773 Pe)
case u'': // MEDIUM LEFT CURLY BRACKET ORNAMENT (0x2774 Ps)
case u'': // MEDIUM RIGHT CURLY BRACKET ORNAMENT (0x2775 Pe)
case u'': // LEFT S-SHAPED BAG DELIMITER (0x27c5 Ps)
case u'': // RIGHT S-SHAPED BAG DELIMITER (0x27c6 Pe)
case u'': // MATHEMATICAL LEFT WHITE SQUARE BRACKET (0x27e6 Ps)
case u'': // MATHEMATICAL RIGHT WHITE SQUARE BRACKET (0x27e7 Pe)
case u'': // MATHEMATICAL LEFT ANGLE BRACKET (0x27e8 Ps)
case u'': // MATHEMATICAL RIGHT ANGLE BRACKET (0x27e9 Pe)
case u'': // MATHEMATICAL LEFT DOUBLE ANGLE BRACKET (0x27ea Ps)
case u'': // MATHEMATICAL RIGHT DOUBLE ANGLE BRACKET (0x27eb Pe)
case u'': // MATHEMATICAL LEFT WHITE TORTOISE SHELL BRACKET (0x27ec Ps)
case u'': // MATHEMATICAL RIGHT WHITE TORTOISE SHELL BRACKET (0x27ed Pe)
case u'': // MATHEMATICAL LEFT FLATTENED PARENTHESIS (0x27ee Ps)
case u'': // MATHEMATICAL RIGHT FLATTENED PARENTHESIS (0x27ef Pe)
case u'': // LEFT WHITE CURLY BRACKET (0x2983 Ps)
case u'': // RIGHT WHITE CURLY BRACKET (0x2984 Pe)
case u'': // LEFT WHITE PARENTHESIS (0x2985 Ps)
case u'': // RIGHT WHITE PARENTHESIS (0x2986 Pe)
case u'': // Z NOTATION LEFT IMAGE BRACKET (0x2987 Ps)
case u'': // Z NOTATION RIGHT IMAGE BRACKET (0x2988 Pe)
case u'': // Z NOTATION LEFT BINDING BRACKET (0x2989 Ps)
case u'': // Z NOTATION RIGHT BINDING BRACKET (0x298a Pe)
case u'': // LEFT SQUARE BRACKET WITH UNDERBAR (0x298b Ps)
case u'': // RIGHT SQUARE BRACKET WITH UNDERBAR (0x298c Pe)
case u'': // LEFT SQUARE BRACKET WITH TICK IN TOP CORNER (0x298d Ps)
case u'': // RIGHT SQUARE BRACKET WITH TICK IN BOTTOM CORNER (0x298e Pe)
case u'': // LEFT SQUARE BRACKET WITH TICK IN BOTTOM CORNER (0x298f Ps)
case u'': // RIGHT SQUARE BRACKET WITH TICK IN TOP CORNER (0x2990 Pe)
case u'': // LEFT ANGLE BRACKET WITH DOT (0x2991 Ps)
case u'': // RIGHT ANGLE BRACKET WITH DOT (0x2992 Pe)
case u'': // LEFT ARC LESS-THAN BRACKET (0x2993 Ps)
case u'': // RIGHT ARC GREATER-THAN BRACKET (0x2994 Pe)
case u'': // LEFT BLACK TORTOISE SHELL BRACKET (0x2997 Ps)
case u'': // RIGHT BLACK TORTOISE SHELL BRACKET (0x2998 Pe)
case u'': // LEFT WIGGLY FENCE (0x29d8 Ps)
case u'': // RIGHT WIGGLY FENCE (0x29d9 Pe)
case u'': // LEFT DOUBLE WIGGLY FENCE (0x29da Ps)
case u'': // RIGHT DOUBLE WIGGLY FENCE (0x29db Pe)
case u'': // LEFT-POINTING CURVED ANGLE BRACKET (0x29fc Ps)
case u'': // RIGHT-POINTING CURVED ANGLE BRACKET (0x29fd Pe)
case u'': // TIFINAGH SEPARATOR MARK (0x2d70 Po)
case u'': // EDITORIAL CORONIS (0x2e0e Po)
case u'': // PARAGRAPHOS (0x2e0f Po)
case u'': // FORKED PARAGRAPHOS (0x2e10 Po)
case u'': // REVERSED FORKED PARAGRAPHOS (0x2e11 Po)
case u'': // HYPODIASTOLE (0x2e12 Po)
case u'': // DOTTED OBELOS (0x2e13 Po)
case u'': // DOWNWARDS ANCORA (0x2e14 Po)
case u'': // UPWARDS ANCORA (0x2e15 Po)
case u'': // DOTTED RIGHT-POINTING ANGLE (0x2e16 Po)
case u'': // DOUBLE OBLIQUE HYPHEN (0x2e17 Pd)
case u'': // PALM BRANCH (0x2e19 Po)
case u'': // HYPHEN WITH DIAERESIS (0x2e1a Pd)
case u'': // TILDE WITH RING ABOVE (0x2e1b Po)
case u'': // TILDE WITH DOT ABOVE (0x2e1e Po)
case u'': // TILDE WITH DOT BELOW (0x2e1f Po)
case u'': // TWO DOTS OVER ONE DOT PUNCTUATION (0x2e2a Po)
case u'': // ONE DOT OVER TWO DOTS PUNCTUATION (0x2e2b Po)
case u'': // SQUARED FOUR DOT PUNCTUATION (0x2e2c Po)
case u'': // FIVE DOT MARK (0x2e2d Po)
case u'': // REVERSED QUESTION MARK (0x2e2e Po)
case u'': // RING POINT (0x2e30 Po)
case u'': // WORD SEPARATOR MIDDLE DOT (0x2e31 Po)
case u'': // TURNED COMMA (0x2e32 Po)
case u'': // RAISED DOT (0x2e33 Po)
case u'': // RAISED COMMA (0x2e34 Po)
case u'': // TURNED SEMICOLON (0x2e35 Po)
case u'': // DAGGER WITH LEFT GUARD (0x2e36 Po)
case u'': // DAGGER WITH RIGHT GUARD (0x2e37 Po)
case u'': // TURNED DAGGER (0x2e38 Po)
case u'': // TOP HALF SECTION SIGN (0x2e39 Po)
case u'': // TWO-EM DASH (0x2e3a Pd)
case u'': // THREE-EM DASH (0x2e3b Pd)
case u'': // STENOGRAPHIC FULL STOP (0x2e3c Po)
case u'': // VERTICAL SIX DOTS (0x2e3d Po)
case u'': // WIGGLY VERTICAL LINE (0x2e3e Po)
case u'⸿': // CAPITULUM (0x2e3f Po)
case u'': // DOUBLE HYPHEN (0x2e40 Pd)
case u'': // REVERSED COMMA (0x2e41 Po)
case u'': // DOUBLE LOW-REVERSED-9 QUOTATION MARK (0x2e42 Ps)
case u'': // DASH WITH LEFT UPTURN (0x2e43 Po)
case u'': // DOUBLE SUSPENSION MARK (0x2e44 Po)
case u'': // INVERTED LOW KAVYKA (0x2e45 Po)
case u'': // INVERTED LOW KAVYKA WITH KAVYKA ABOVE (0x2e46 Po)
case u'': // LOW KAVYKA (0x2e47 Po)
case u'': // LOW KAVYKA WITH DOT (0x2e48 Po)
case u'': // DOUBLE STACKED COMMA (0x2e49 Po)
case u'': // DOTTED SOLIDUS (0x2e4a Po)
case u'': // TRIPLE DAGGER (0x2e4b Po)
case u'': // MEDIEVAL COMMA (0x2e4c Po)
case u'': // PARAGRAPHUS MARK (0x2e4d Po)
case u'': // PUNCTUS ELEVATUS MARK (0x2e4e Po)
case u'': // CORNISH VERSE DIVIDER (0x2e4f Po)
case u'': // IDEOGRAPHIC COMMA (0x3001 Po)
case u'': // IDEOGRAPHIC FULL STOP (0x3002 Po)
case u'': // DITTO MARK (0x3003 Po)
case u'': // LEFT ANGLE BRACKET (0x3008 Ps)
case u'': // RIGHT ANGLE BRACKET (0x3009 Pe)
case u'': // LEFT DOUBLE ANGLE BRACKET (0x300a Ps)
case u'': // RIGHT DOUBLE ANGLE BRACKET (0x300b Pe)
case u'': // LEFT CORNER BRACKET (0x300c Ps)
case u'': // RIGHT CORNER BRACKET (0x300d Pe)
case u'': // LEFT WHITE CORNER BRACKET (0x300e Ps)
case u'': // RIGHT WHITE CORNER BRACKET (0x300f Pe)
case u'': // LEFT BLACK LENTICULAR BRACKET (0x3010 Ps)
case u'': // RIGHT BLACK LENTICULAR BRACKET (0x3011 Pe)
case u'': // LEFT TORTOISE SHELL BRACKET (0x3014 Ps)
case u'': // RIGHT TORTOISE SHELL BRACKET (0x3015 Pe)
case u'': // LEFT WHITE LENTICULAR BRACKET (0x3016 Ps)
case u'': // RIGHT WHITE LENTICULAR BRACKET (0x3017 Pe)
case u'': // LEFT WHITE TORTOISE SHELL BRACKET (0x3018 Ps)
case u'': // RIGHT WHITE TORTOISE SHELL BRACKET (0x3019 Pe)
case u'': // LEFT WHITE SQUARE BRACKET (0x301a Ps)
case u'': // RIGHT WHITE SQUARE BRACKET (0x301b Pe)
case u'': // WAVE DASH (0x301c Pd)
case u'': // REVERSED DOUBLE PRIME QUOTATION MARK (0x301d Ps)
case u'': // DOUBLE PRIME QUOTATION MARK (0x301e Pe)
case u'': // LOW DOUBLE PRIME QUOTATION MARK (0x301f Pe)
case u'': // WAVY DASH (0x3030 Pd)
case u'': // PART ALTERNATION MARK (0x303d Po)
case u'': // KATAKANA-HIRAGANA DOUBLE HYPHEN (0x30a0 Pd)
case u'': // KATAKANA MIDDLE DOT (0x30fb Po)
case u'': // LISU PUNCTUATION COMMA (0xa4fe Po)
case u'': // LISU PUNCTUATION FULL STOP (0xa4ff Po)
case u'': // VAI COMMA (0xa60d Po)
case u'': // VAI FULL STOP (0xa60e Po)
case u'': // VAI QUESTION MARK (0xa60f Po)
case u'': // CYRILLIC KAVYKA (0xa67e Po)
case u'': // PHAGS-PA SINGLE HEAD MARK (0xa874 Po)
case u'': // PHAGS-PA DOUBLE HEAD MARK (0xa875 Po)
case u'': // PHAGS-PA MARK SHAD (0xa876 Po)
case u'': // PHAGS-PA MARK DOUBLE SHAD (0xa877 Po)
case u'': // SAURASHTRA DANDA (0xa8ce Po)
case u'': // SAURASHTRA DOUBLE DANDA (0xa8cf Po)
case u'': // DEVANAGARI SIGN PUSHPIKA (0xa8f8 Po)
case u'': // DEVANAGARI GAP FILLER (0xa8f9 Po)
case u'': // DEVANAGARI CARET (0xa8fa Po)
case u'': // DEVANAGARI SIGN SIDDHAM (0xa8fc Po)
case u'': // JAVANESE LEFT RERENGGAN (0xa9c1 Po)
case u'': // JAVANESE RIGHT RERENGGAN (0xa9c2 Po)
case u'': // JAVANESE PADA ANDAP (0xa9c3 Po)
case u'': // JAVANESE PADA MADYA (0xa9c4 Po)
case u'': // JAVANESE PADA LUHUR (0xa9c5 Po)
case u'': // JAVANESE PADA WINDU (0xa9c6 Po)
case u'': // JAVANESE PADA PANGKAT (0xa9c7 Po)
case u'': // JAVANESE PADA LINGSA (0xa9c8 Po)
case u'': // JAVANESE PADA LUNGSI (0xa9c9 Po)
case u'': // JAVANESE PADA ADEG (0xa9ca Po)
case u'': // JAVANESE PADA ADEG ADEG (0xa9cb Po)
case u'': // JAVANESE PADA PISELEH (0xa9cc Po)
case u'': // JAVANESE TURNED PADA PISELEH (0xa9cd Po)
case u'': // JAVANESE PADA TIRTA TUMETES (0xa9de Po)
case u'': // JAVANESE PADA ISEN-ISEN (0xa9df Po)
case u'': // CHAM PUNCTUATION SPIRAL (0xaa5c Po)
case u'': // CHAM PUNCTUATION DANDA (0xaa5d Po)
case u'': // CHAM PUNCTUATION DOUBLE DANDA (0xaa5e Po)
case u'': // CHAM PUNCTUATION TRIPLE DANDA (0xaa5f Po)
case u'': // TAI VIET SYMBOL HO HOI (0xaade Po)
case u'': // TAI VIET SYMBOL KOI KOI (0xaadf Po)
case u'': // MEETEI MAYEK CHEIKHAN (0xaaf0 Po)
case u'': // MEETEI MAYEK AHANG KHUDAM (0xaaf1 Po)
case u'': // MEETEI MAYEK CHEIKHEI (0xabeb Po)
case u'': // PRESENTATION FORM FOR VERTICAL COMMA (0xfe10 Po)
case u'': // PRESENTATION FORM FOR VERTICAL IDEOGRAPHIC COMMA (0xfe11 Po)
case u'': // PRESENTATION FORM FOR VERTICAL IDEO FULL STOP (0xfe12 Po)
case u'': // PRESENTATION FORM FOR VERTICAL COLON (0xfe13 Po)
case u'': // PRESENTATION FORM FOR VERTICAL SEMICOLON (0xfe14 Po)
case u'': // PRESENTATION FORM FOR VERTICAL EXCLAMATION MARK (0xfe15 Po)
case u'': // PRESENTATION FORM FOR VERTICAL QUESTION MARK (0xfe16 Po)
case u'': // PRESENTATION ... LEFT WHITE LENTICULAR BRACKET (0xfe17 Ps)
case u'': // PRESENTATION ... RIGHT WHITE LENTICULAR BRAKCET (0xfe18 Pe)
case u'': // PRESENTATION ... VERTICAL HORIZONTAL ELLIPSIS (0xfe19 Po)
case u'': // PRESENTATION FORM FOR VERTICAL TWO DOT LEADER (0xfe30 Po)
case u'': // PRESENTATION FORM FOR VERTICAL EM DASH (0xfe31 Pd)
case u'': // PRESENTATION FORM FOR VERTICAL EN DASH (0xfe32 Pd)
case u'': // PRESENTATION FORM FOR VERTICAL LOW LINE (0xfe33 Pc)
case u'': // PRESENTATION FORM FOR VERTICAL WAVY LOW LINE (0xfe34 Pc)
case u'': // PRESENTATION FORM FOR VERTICAL LEFT PARENTHESIS (0xfe35 Ps)
case u'': // PRESENTATION FORM FOR VERTICAL RIGHT PARENTHESIS (0xfe36 Pe)
case u'': // PRESENTATION ... VERTICAL LEFT CURLY BRACKET (0xfe37 Ps)
case u'': // PRESENTATION ... VERTICAL RIGHT CURLY BRACKET (0xfe38 Pe)
case u'': // PRESENTATION ... LEFT TORTOISE SHELL BRACKET (0xfe39 Ps)
case u'': // PRESENTATION ... RIGHT TORTOISE SHELL BRACKET (0xfe3a Pe)
case u'': // PRESENTATION ... LEFT BLACK LENTICULAR BRACKET (0xfe3b Ps)
case u'': // PRESENTATION ... RIGHT BLACK LENTICULAR BRACKET (0xfe3c Pe)
case u'': // PRESENTATION ... LEFT DOUBLE ANGLE BRACKET (0xfe3d Ps)
case u'': // PRESENTATION ... RIGHT DOUBLE ANGLE BRACKET (0xfe3e Pe)
case u'︿': // PRESENTATION ... LEFT ANGLE BRACKET (0xfe3f Ps)
case u'': // PRESENTATION ... RIGHT ANGLE BRACKET (0xfe40 Pe)
case u'': // PRESENTATION ... LEFT CORNER BRACKET (0xfe41 Ps)
case u'': // PRESENTATION ... RIGHT CORNER BRACKET (0xfe42 Pe)
case u'': // PRESENTATION ... LEFT WHITE CORNER BRACKET (0xfe43 Ps)
case u'': // PRESENTATION ... RIGHT WHITE CORNER BRACKET Pe)
case u'': // SESAME DOT (0xfe45 Po)
case u'': // WHITE SESAME DOT (0xfe46 Po)
case u'': // PRESENTATION ... VERTICAL LEFT SQUARE BRACKET (0xfe47 Ps)
case u'': // PRESENTATION ... VERTICAL RIGHT SQUARE BRACKET (0xfe48 Pe)
case u'': // DASHED OVERLINE (0xfe49 Po)
case u'': // CENTRELINE OVERLINE (0xfe4a Po)
case u'': // WAVY OVERLINE (0xfe4b Po)
case u'': // DOUBLE WAVY OVERLINE (0xfe4c Po)
case u'': // DASHED LOW LINE (0xfe4d Pc)
case u'': // CENTRELINE LOW LINE (0xfe4e Pc)
case u'': // WAVY LOW LINE (0xfe4f Pc)
case u'': // SMALL COMMA (0xfe50 Po)
case u'': // SMALL IDEOGRAPHIC COMMA (0xfe51 Po)
case u'': // SMALL FULL STOP (0xfe52 Po)
case u'': // SMALL SEMICOLON (0xfe54 Po)
case u'': // SMALL COLON (0xfe55 Po)
case u'': // SMALL QUESTION MARK (0xfe56 Po)
case u'': // SMALL EXCLAMATION MARK (0xfe57 Po)
case u'': // SMALL EM DASH (0xfe58 Pd)
case u'': // SMALL LEFT PARENTHESIS (0xfe59 Ps)
case u'': // SMALL RIGHT PARENTHESIS (0xfe5a Pe)
case u'': // SMALL LEFT CURLY BRACKET (0xfe5b Ps)
case u'': // SMALL RIGHT CURLY BRACKET (0xfe5c Pe)
case u'': // SMALL LEFT TORTOISE SHELL BRACKET (0xfe5d Ps)
case u'': // SMALL RIGHT TORTOISE SHELL BRACKET (0xfe5e Pe)
case u'': // SMALL NUMBER SIGN (0xfe5f Po)
case u'': // SMALL AMPERSAND (0xfe60 Po)
case u'': // SMALL ASTERISK (0xfe61 Po)
case u'': // SMALL HYPHEN-MINUS (0xfe63 Pd)
case u'': // SMALL REVERSE SOLIDUS (0xfe68 Po)
case u'': // SMALL PERCENT SIGN (0xfe6a Po)
case u'': // SMALL COMMERCIAL AT (0xfe6b Po)
case u'': // FULLWIDTH EXCLAMATION MARK (0xff01 Po)
case u'': // FULLWIDTH QUOTATION MARK (0xff02 Po)
case u'': // FULLWIDTH NUMBER SIGN (0xff03 Po)
case u'': // FULLWIDTH PERCENT SIGN (0xff05 Po)
case u'': // FULLWIDTH AMPERSAND (0xff06 Po)
case u'': // FULLWIDTH APOSTROPHE (0xff07 Po)
case u'': // FULLWIDTH LEFT PARENTHESIS (0xff08 Ps)
case u'': // FULLWIDTH RIGHT PARENTHESIS (0xff09 Pe)
case u'': // FULLWIDTH ASTERISK (0xff0a Po)
case u'': // FULLWIDTH COMMA (0xff0c Po)
case u'': // FULLWIDTH HYPHEN-MINUS (0xff0d Pd)
case u'': // FULLWIDTH FULL STOP (0xff0e Po)
case u'': // FULLWIDTH SOLIDUS (0xff0f Po)
case u'': // FULLWIDTH COLON (0xff1a Po)
case u'': // FULLWIDTH SEMICOLON (0xff1b Po)
case u'': // FULLWIDTH QUESTION MARK (0xff1f Po)
case u'': // FULLWIDTH COMMERCIAL AT (0xff20 Po)
case u'': // FULLWIDTH LEFT SQUARE BRACKET (0xff3b Ps)
case u'': // FULLWIDTH REVERSE SOLIDUS (0xff3c Po)
case u'': // FULLWIDTH RIGHT SQUARE BRACKET (0xff3d Pe)
case u'_': // FULLWIDTH LOW LINE (0xff3f Pc)
case u'': // FULLWIDTH LEFT CURLY BRACKET (0xff5b Ps)
case u'': // FULLWIDTH RIGHT CURLY BRACKET (0xff5d Pe)
case u'': // FULLWIDTH LEFT WHITE PARENTHESIS (0xff5f Ps)
case u'': // FULLWIDTH RIGHT WHITE PARENTHESIS (0xff60 Pe)
case u'': // HALFWIDTH IDEOGRAPHIC FULL STOP (0xff61 Po)
case u'': // HALFWIDTH LEFT CORNER BRACKET (0xff62 Ps)
case u'': // HALFWIDTH RIGHT CORNER BRACKET (0xff63 Pe)
case u'': // HALFWIDTH IDEOGRAPHIC COMMA (0xff64 Po)
case u'': // HALFWIDTH KATAKANA MIDDLE DOT (0xff65 Po)
return 1;
default:
return 0;
}
}
__weak_reference(iswpunct, iswpunct_l);