123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526 |
- #ifndef AG_CHAR_MAP_H_GUARD
- #define AG_CHAR_MAP_H_GUARD 1
- #ifdef HAVE_CONFIG_H
- # if defined(HAVE_INTTYPES_H)
- # include <inttypes.h>
- # elif defined(HAVE_STDINT_H)
- # include <stdint.h>
- # elif !defined(HAVE_UINT32_T)
- # if SIZEOF_INT == 4
- typedef unsigned int uint32_t;
- # elif SIZEOF_LONG == 4
- typedef unsigned long uint32_t;
- # endif
- # endif
- #else
- # include <inttypes.h>
- #endif
- #if 0
- #endif
- typedef uint32_t ag_char_map_mask_t;
- #define IS_NEWLINE_CHAR( _c) is_ag_char_map_char((char)(_c), 0x00000001)
- #define SPN_NEWLINE_CHARS(_s) spn_ag_char_map_chars(_s, 0)
- #define BRK_NEWLINE_CHARS(_s) brk_ag_char_map_chars(_s, 0)
- #define SPN_NEWLINE_BACK(s,e) spn_ag_char_map_back(s, e, 0)
- #define BRK_NEWLINE_BACK(s,e) brk_ag_char_map_back(s, e, 0)
- #define IS_NUL_BYTE_CHAR( _c) is_ag_char_map_char((char)(_c), 0x00000002)
- #define SPN_NUL_BYTE_CHARS(_s) spn_ag_char_map_chars(_s, 1)
- #define BRK_NUL_BYTE_CHARS(_s) brk_ag_char_map_chars(_s, 1)
- #define SPN_NUL_BYTE_BACK(s,e) spn_ag_char_map_back(s, e, 1)
- #define BRK_NUL_BYTE_BACK(s,e) brk_ag_char_map_back(s, e, 1)
- #define IS_DIR_SEP_CHAR( _c) is_ag_char_map_char((char)(_c), 0x00000004)
- #define SPN_DIR_SEP_CHARS(_s) spn_ag_char_map_chars(_s, 2)
- #define BRK_DIR_SEP_CHARS(_s) brk_ag_char_map_chars(_s, 2)
- #define SPN_DIR_SEP_BACK(s,e) spn_ag_char_map_back(s, e, 2)
- #define BRK_DIR_SEP_BACK(s,e) brk_ag_char_map_back(s, e, 2)
- #define IS_PERCENT_CHAR( _c) is_ag_char_map_char((char)(_c), 0x00000008)
- #define SPN_PERCENT_CHARS(_s) spn_ag_char_map_chars(_s, 3)
- #define BRK_PERCENT_CHARS(_s) brk_ag_char_map_chars(_s, 3)
- #define SPN_PERCENT_BACK(s,e) spn_ag_char_map_back(s, e, 3)
- #define BRK_PERCENT_BACK(s,e) brk_ag_char_map_back(s, e, 3)
- #define IS_COMMA_CHAR( _c) is_ag_char_map_char((char)(_c), 0x00000010)
- #define SPN_COMMA_CHARS(_s) spn_ag_char_map_chars(_s, 4)
- #define BRK_COMMA_CHARS(_s) brk_ag_char_map_chars(_s, 4)
- #define SPN_COMMA_BACK(s,e) spn_ag_char_map_back(s, e, 4)
- #define BRK_COMMA_BACK(s,e) brk_ag_char_map_back(s, e, 4)
- #define IS_COLON_CHAR( _c) is_ag_char_map_char((char)(_c), 0x00000020)
- #define SPN_COLON_CHARS(_s) spn_ag_char_map_chars(_s, 5)
- #define BRK_COLON_CHARS(_s) brk_ag_char_map_chars(_s, 5)
- #define SPN_COLON_BACK(s,e) spn_ag_char_map_back(s, e, 5)
- #define BRK_COLON_BACK(s,e) brk_ag_char_map_back(s, e, 5)
- #define IS_UNDERSCORE_CHAR( _c) is_ag_char_map_char((char)(_c), 0x00000040)
- #define SPN_UNDERSCORE_CHARS(_s) spn_ag_char_map_chars(_s, 6)
- #define BRK_UNDERSCORE_CHARS(_s) brk_ag_char_map_chars(_s, 6)
- #define SPN_UNDERSCORE_BACK(s,e) spn_ag_char_map_back(s, e, 6)
- #define BRK_UNDERSCORE_BACK(s,e) brk_ag_char_map_back(s, e, 6)
- #define IS_PLUS_CHAR( _c) is_ag_char_map_char((char)(_c), 0x00000080)
- #define SPN_PLUS_CHARS(_s) spn_ag_char_map_chars(_s, 7)
- #define BRK_PLUS_CHARS(_s) brk_ag_char_map_chars(_s, 7)
- #define SPN_PLUS_BACK(s,e) spn_ag_char_map_back(s, e, 7)
- #define BRK_PLUS_BACK(s,e) brk_ag_char_map_back(s, e, 7)
- #define IS_DOLLAR_CHAR( _c) is_ag_char_map_char((char)(_c), 0x00000100)
- #define SPN_DOLLAR_CHARS(_s) spn_ag_char_map_chars(_s, 8)
- #define BRK_DOLLAR_CHARS(_s) brk_ag_char_map_chars(_s, 8)
- #define SPN_DOLLAR_BACK(s,e) spn_ag_char_map_back(s, e, 8)
- #define BRK_DOLLAR_BACK(s,e) brk_ag_char_map_back(s, e, 8)
- #define IS_OPTION_MARKER_CHAR( _c) is_ag_char_map_char((char)(_c), 0x00000200)
- #define SPN_OPTION_MARKER_CHARS(_s) spn_ag_char_map_chars(_s, 9)
- #define BRK_OPTION_MARKER_CHARS(_s) brk_ag_char_map_chars(_s, 9)
- #define SPN_OPTION_MARKER_BACK(s,e) spn_ag_char_map_back(s, e, 9)
- #define BRK_OPTION_MARKER_BACK(s,e) brk_ag_char_map_back(s, e, 9)
- #define IS_HORIZ_WHITE_CHAR( _c) is_ag_char_map_char((char)(_c), 0x00000400)
- #define SPN_HORIZ_WHITE_CHARS(_s) spn_ag_char_map_chars(_s, 10)
- #define BRK_HORIZ_WHITE_CHARS(_s) brk_ag_char_map_chars(_s, 10)
- #define SPN_HORIZ_WHITE_BACK(s,e) spn_ag_char_map_back(s, e, 10)
- #define BRK_HORIZ_WHITE_BACK(s,e) brk_ag_char_map_back(s, e, 10)
- #define IS_ALT_WHITE_CHAR( _c) is_ag_char_map_char((char)(_c), 0x00000800)
- #define SPN_ALT_WHITE_CHARS(_s) spn_ag_char_map_chars(_s, 11)
- #define BRK_ALT_WHITE_CHARS(_s) brk_ag_char_map_chars(_s, 11)
- #define SPN_ALT_WHITE_BACK(s,e) spn_ag_char_map_back(s, e, 11)
- #define BRK_ALT_WHITE_BACK(s,e) brk_ag_char_map_back(s, e, 11)
- #define IS_WHITESPACE_CHAR( _c) is_ag_char_map_char((char)(_c), 0x00000C01)
- #define SPN_WHITESPACE_CHARS(_s) spn_ag_char_map_chars(_s, 12)
- #define BRK_WHITESPACE_CHARS(_s) brk_ag_char_map_chars(_s, 12)
- #define SPN_WHITESPACE_BACK(s,e) spn_ag_char_map_back(s, e, 12)
- #define BRK_WHITESPACE_BACK(s,e) brk_ag_char_map_back(s, e, 12)
- #define IS_NON_NL_WHITE_CHAR( _c) is_ag_char_map_char((char)(_c), 0x00000C00)
- #define SPN_NON_NL_WHITE_CHARS(_s) spn_ag_char_map_chars(_s, 13)
- #define BRK_NON_NL_WHITE_CHARS(_s) brk_ag_char_map_chars(_s, 13)
- #define SPN_NON_NL_WHITE_BACK(s,e) spn_ag_char_map_back(s, e, 13)
- #define BRK_NON_NL_WHITE_BACK(s,e) brk_ag_char_map_back(s, e, 13)
- #define IS_QUOTE_CHAR( _c) is_ag_char_map_char((char)(_c), 0x00001000)
- #define SPN_QUOTE_CHARS(_s) spn_ag_char_map_chars(_s, 14)
- #define BRK_QUOTE_CHARS(_s) brk_ag_char_map_chars(_s, 14)
- #define SPN_QUOTE_BACK(s,e) spn_ag_char_map_back(s, e, 14)
- #define BRK_QUOTE_BACK(s,e) brk_ag_char_map_back(s, e, 14)
- #define IS_PARENTHESES_CHAR( _c) is_ag_char_map_char((char)(_c), 0x00002000)
- #define SPN_PARENTHESES_CHARS(_s) spn_ag_char_map_chars(_s, 15)
- #define BRK_PARENTHESES_CHARS(_s) brk_ag_char_map_chars(_s, 15)
- #define SPN_PARENTHESES_BACK(s,e) spn_ag_char_map_back(s, e, 15)
- #define BRK_PARENTHESES_BACK(s,e) brk_ag_char_map_back(s, e, 15)
- #define IS_GRAPHIC_CHAR( _c) is_ag_char_map_char((char)(_c), 0x00004000)
- #define SPN_GRAPHIC_CHARS(_s) spn_ag_char_map_chars(_s, 16)
- #define BRK_GRAPHIC_CHARS(_s) brk_ag_char_map_chars(_s, 16)
- #define SPN_GRAPHIC_BACK(s,e) spn_ag_char_map_back(s, e, 16)
- #define BRK_GRAPHIC_BACK(s,e) brk_ag_char_map_back(s, e, 16)
- #define IS_INVERSION_CHAR( _c) is_ag_char_map_char((char)(_c), 0x00008000)
- #define SPN_INVERSION_CHARS(_s) spn_ag_char_map_chars(_s, 17)
- #define BRK_INVERSION_CHARS(_s) brk_ag_char_map_chars(_s, 17)
- #define SPN_INVERSION_BACK(s,e) spn_ag_char_map_back(s, e, 17)
- #define BRK_INVERSION_BACK(s,e) brk_ag_char_map_back(s, e, 17)
- #define IS_OCT_DIGIT_CHAR( _c) is_ag_char_map_char((char)(_c), 0x00010000)
- #define SPN_OCT_DIGIT_CHARS(_s) spn_ag_char_map_chars(_s, 18)
- #define BRK_OCT_DIGIT_CHARS(_s) brk_ag_char_map_chars(_s, 18)
- #define SPN_OCT_DIGIT_BACK(s,e) spn_ag_char_map_back(s, e, 18)
- #define BRK_OCT_DIGIT_BACK(s,e) brk_ag_char_map_back(s, e, 18)
- #define IS_DEC_DIGIT_CHAR( _c) is_ag_char_map_char((char)(_c), 0x00030000)
- #define SPN_DEC_DIGIT_CHARS(_s) spn_ag_char_map_chars(_s, 19)
- #define BRK_DEC_DIGIT_CHARS(_s) brk_ag_char_map_chars(_s, 19)
- #define SPN_DEC_DIGIT_BACK(s,e) spn_ag_char_map_back(s, e, 19)
- #define BRK_DEC_DIGIT_BACK(s,e) brk_ag_char_map_back(s, e, 19)
- #define IS_HEX_DIGIT_CHAR( _c) is_ag_char_map_char((char)(_c), 0x00070000)
- #define SPN_HEX_DIGIT_CHARS(_s) spn_ag_char_map_chars(_s, 20)
- #define BRK_HEX_DIGIT_CHARS(_s) brk_ag_char_map_chars(_s, 20)
- #define SPN_HEX_DIGIT_BACK(s,e) spn_ag_char_map_back(s, e, 20)
- #define BRK_HEX_DIGIT_BACK(s,e) brk_ag_char_map_back(s, e, 20)
- #define IS_LOWER_CASE_CHAR( _c) is_ag_char_map_char((char)(_c), 0x00080000)
- #define SPN_LOWER_CASE_CHARS(_s) spn_ag_char_map_chars(_s, 21)
- #define BRK_LOWER_CASE_CHARS(_s) brk_ag_char_map_chars(_s, 21)
- #define SPN_LOWER_CASE_BACK(s,e) spn_ag_char_map_back(s, e, 21)
- #define BRK_LOWER_CASE_BACK(s,e) brk_ag_char_map_back(s, e, 21)
- #define IS_UPPER_CASE_CHAR( _c) is_ag_char_map_char((char)(_c), 0x00100000)
- #define SPN_UPPER_CASE_CHARS(_s) spn_ag_char_map_chars(_s, 22)
- #define BRK_UPPER_CASE_CHARS(_s) brk_ag_char_map_chars(_s, 22)
- #define SPN_UPPER_CASE_BACK(s,e) spn_ag_char_map_back(s, e, 22)
- #define BRK_UPPER_CASE_BACK(s,e) brk_ag_char_map_back(s, e, 22)
- #define IS_ALPHABETIC_CHAR( _c) is_ag_char_map_char((char)(_c), 0x00180000)
- #define SPN_ALPHABETIC_CHARS(_s) spn_ag_char_map_chars(_s, 23)
- #define BRK_ALPHABETIC_CHARS(_s) brk_ag_char_map_chars(_s, 23)
- #define SPN_ALPHABETIC_BACK(s,e) spn_ag_char_map_back(s, e, 23)
- #define BRK_ALPHABETIC_BACK(s,e) brk_ag_char_map_back(s, e, 23)
- #define IS_ALPHANUMERIC_CHAR( _c) is_ag_char_map_char((char)(_c), 0x001B0000)
- #define SPN_ALPHANUMERIC_CHARS(_s) spn_ag_char_map_chars(_s, 24)
- #define BRK_ALPHANUMERIC_CHARS(_s) brk_ag_char_map_chars(_s, 24)
- #define SPN_ALPHANUMERIC_BACK(s,e) spn_ag_char_map_back(s, e, 24)
- #define BRK_ALPHANUMERIC_BACK(s,e) brk_ag_char_map_back(s, e, 24)
- #define IS_VAR_FIRST_CHAR( _c) is_ag_char_map_char((char)(_c), 0x00180040)
- #define SPN_VAR_FIRST_CHARS(_s) spn_ag_char_map_chars(_s, 25)
- #define BRK_VAR_FIRST_CHARS(_s) brk_ag_char_map_chars(_s, 25)
- #define SPN_VAR_FIRST_BACK(s,e) spn_ag_char_map_back(s, e, 25)
- #define BRK_VAR_FIRST_BACK(s,e) brk_ag_char_map_back(s, e, 25)
- #define IS_VARIABLE_NAME_CHAR( _c) is_ag_char_map_char((char)(_c), 0x001B0040)
- #define SPN_VARIABLE_NAME_CHARS(_s) spn_ag_char_map_chars(_s, 26)
- #define BRK_VARIABLE_NAME_CHARS(_s) brk_ag_char_map_chars(_s, 26)
- #define SPN_VARIABLE_NAME_BACK(s,e) spn_ag_char_map_back(s, e, 26)
- #define BRK_VARIABLE_NAME_BACK(s,e) brk_ag_char_map_back(s, e, 26)
- #define IS_OPTION_NAME_CHAR( _c) is_ag_char_map_char((char)(_c), 0x003B0040)
- #define SPN_OPTION_NAME_CHARS(_s) spn_ag_char_map_chars(_s, 27)
- #define BRK_OPTION_NAME_CHARS(_s) brk_ag_char_map_chars(_s, 27)
- #define SPN_OPTION_NAME_BACK(s,e) spn_ag_char_map_back(s, e, 27)
- #define BRK_OPTION_NAME_BACK(s,e) brk_ag_char_map_back(s, e, 27)
- #define IS_VALUE_NAME_CHAR( _c) is_ag_char_map_char((char)(_c), 0x003B0060)
- #define SPN_VALUE_NAME_CHARS(_s) spn_ag_char_map_chars(_s, 28)
- #define BRK_VALUE_NAME_CHARS(_s) brk_ag_char_map_chars(_s, 28)
- #define SPN_VALUE_NAME_BACK(s,e) spn_ag_char_map_back(s, e, 28)
- #define BRK_VALUE_NAME_BACK(s,e) brk_ag_char_map_back(s, e, 28)
- #define IS_NAME_SEP_CHAR( _c) is_ag_char_map_char((char)(_c), 0x00400000)
- #define SPN_NAME_SEP_CHARS(_s) spn_ag_char_map_chars(_s, 29)
- #define BRK_NAME_SEP_CHARS(_s) brk_ag_char_map_chars(_s, 29)
- #define SPN_NAME_SEP_BACK(s,e) spn_ag_char_map_back(s, e, 29)
- #define BRK_NAME_SEP_BACK(s,e) brk_ag_char_map_back(s, e, 29)
- #define IS_COMPOUND_NAME_CHAR( _c) is_ag_char_map_char((char)(_c), 0x007B0460)
- #define SPN_COMPOUND_NAME_CHARS(_s) spn_ag_char_map_chars(_s, 30)
- #define BRK_COMPOUND_NAME_CHARS(_s) brk_ag_char_map_chars(_s, 30)
- #define SPN_COMPOUND_NAME_BACK(s,e) spn_ag_char_map_back(s, e, 30)
- #define BRK_COMPOUND_NAME_BACK(s,e) brk_ag_char_map_back(s, e, 30)
- #define IS_SCHEME_NOTE_CHAR( _c) is_ag_char_map_char((char)(_c), 0x00003000)
- #define SPN_SCHEME_NOTE_CHARS(_s) spn_ag_char_map_chars(_s, 31)
- #define BRK_SCHEME_NOTE_CHARS(_s) brk_ag_char_map_chars(_s, 31)
- #define SPN_SCHEME_NOTE_BACK(s,e) spn_ag_char_map_back(s, e, 31)
- #define BRK_SCHEME_NOTE_BACK(s,e) brk_ag_char_map_back(s, e, 31)
- #define IS_UNQUOTABLE_CHAR( _c) is_ag_char_map_char((char)(_c), 0x00800000)
- #define SPN_UNQUOTABLE_CHARS(_s) spn_ag_char_map_chars(_s, 32)
- #define BRK_UNQUOTABLE_CHARS(_s) brk_ag_char_map_chars(_s, 32)
- #define SPN_UNQUOTABLE_BACK(s,e) spn_ag_char_map_back(s, e, 32)
- #define BRK_UNQUOTABLE_BACK(s,e) brk_ag_char_map_back(s, e, 32)
- #define IS_END_XML_TOKEN_CHAR( _c) is_ag_char_map_char((char)(_c), 0x01000C01)
- #define SPN_END_XML_TOKEN_CHARS(_s) spn_ag_char_map_chars(_s, 33)
- #define BRK_END_XML_TOKEN_CHARS(_s) brk_ag_char_map_chars(_s, 33)
- #define SPN_END_XML_TOKEN_BACK(s,e) spn_ag_char_map_back(s, e, 33)
- #define BRK_END_XML_TOKEN_BACK(s,e) brk_ag_char_map_back(s, e, 33)
- #define IS_PLUS_N_SPACE_CHAR( _c) is_ag_char_map_char((char)(_c), 0x00000C81)
- #define SPN_PLUS_N_SPACE_CHARS(_s) spn_ag_char_map_chars(_s, 34)
- #define BRK_PLUS_N_SPACE_CHARS(_s) brk_ag_char_map_chars(_s, 34)
- #define SPN_PLUS_N_SPACE_BACK(s,e) spn_ag_char_map_back(s, e, 34)
- #define BRK_PLUS_N_SPACE_BACK(s,e) brk_ag_char_map_back(s, e, 34)
- #define IS_PUNCTUATION_CHAR( _c) is_ag_char_map_char((char)(_c), 0x02000000)
- #define SPN_PUNCTUATION_CHARS(_s) spn_ag_char_map_chars(_s, 35)
- #define BRK_PUNCTUATION_CHARS(_s) brk_ag_char_map_chars(_s, 35)
- #define SPN_PUNCTUATION_BACK(s,e) spn_ag_char_map_back(s, e, 35)
- #define BRK_PUNCTUATION_BACK(s,e) brk_ag_char_map_back(s, e, 35)
- #define IS_SUFFIX_CHAR( _c) is_ag_char_map_char((char)(_c), 0x041B0000)
- #define SPN_SUFFIX_CHARS(_s) spn_ag_char_map_chars(_s, 36)
- #define BRK_SUFFIX_CHARS(_s) brk_ag_char_map_chars(_s, 36)
- #define SPN_SUFFIX_BACK(s,e) spn_ag_char_map_back(s, e, 36)
- #define BRK_SUFFIX_BACK(s,e) brk_ag_char_map_back(s, e, 36)
- #define IS_SUFFIX_FMT_CHAR( _c) is_ag_char_map_char((char)(_c), 0x041B000C)
- #define SPN_SUFFIX_FMT_CHARS(_s) spn_ag_char_map_chars(_s, 37)
- #define BRK_SUFFIX_FMT_CHARS(_s) brk_ag_char_map_chars(_s, 37)
- #define SPN_SUFFIX_FMT_BACK(s,e) spn_ag_char_map_back(s, e, 37)
- #define BRK_SUFFIX_FMT_BACK(s,e) brk_ag_char_map_back(s, e, 37)
- #define IS_FALSE_TYPE_CHAR( _c) is_ag_char_map_char((char)(_c), 0x08000002)
- #define SPN_FALSE_TYPE_CHARS(_s) spn_ag_char_map_chars(_s, 38)
- #define BRK_FALSE_TYPE_CHARS(_s) brk_ag_char_map_chars(_s, 38)
- #define SPN_FALSE_TYPE_BACK(s,e) spn_ag_char_map_back(s, e, 38)
- #define BRK_FALSE_TYPE_BACK(s,e) brk_ag_char_map_back(s, e, 38)
- #define IS_FILE_NAME_CHAR( _c) is_ag_char_map_char((char)(_c), 0x041B0004)
- #define SPN_FILE_NAME_CHARS(_s) spn_ag_char_map_chars(_s, 39)
- #define BRK_FILE_NAME_CHARS(_s) brk_ag_char_map_chars(_s, 39)
- #define SPN_FILE_NAME_BACK(s,e) spn_ag_char_map_back(s, e, 39)
- #define BRK_FILE_NAME_BACK(s,e) brk_ag_char_map_back(s, e, 39)
- #define IS_END_TOKEN_CHAR( _c) is_ag_char_map_char((char)(_c), 0x00000C03)
- #define SPN_END_TOKEN_CHARS(_s) spn_ag_char_map_chars(_s, 40)
- #define BRK_END_TOKEN_CHARS(_s) brk_ag_char_map_chars(_s, 40)
- #define SPN_END_TOKEN_BACK(s,e) spn_ag_char_map_back(s, e, 40)
- #define BRK_END_TOKEN_BACK(s,e) brk_ag_char_map_back(s, e, 40)
- #define IS_END_LIST_ENTRY_CHAR( _c) is_ag_char_map_char((char)(_c), 0x00000C13)
- #define SPN_END_LIST_ENTRY_CHARS(_s) spn_ag_char_map_chars(_s, 41)
- #define BRK_END_LIST_ENTRY_CHARS(_s) brk_ag_char_map_chars(_s, 41)
- #define SPN_END_LIST_ENTRY_BACK(s,e) spn_ag_char_map_back(s, e, 41)
- #define BRK_END_LIST_ENTRY_BACK(s,e) brk_ag_char_map_back(s, e, 41)
- #define IS_SET_SEPARATOR_CHAR( _c) is_ag_char_map_char((char)(_c), 0x10000C13)
- #define SPN_SET_SEPARATOR_CHARS(_s) spn_ag_char_map_chars(_s, 42)
- #define BRK_SET_SEPARATOR_CHARS(_s) brk_ag_char_map_chars(_s, 42)
- #define SPN_SET_SEPARATOR_BACK(s,e) spn_ag_char_map_back(s, e, 42)
- #define BRK_SET_SEPARATOR_BACK(s,e) brk_ag_char_map_back(s, e, 42)
- #define IS_SIGNED_NUMBER_CHAR( _c) is_ag_char_map_char((char)(_c), 0x00038000)
- #define SPN_SIGNED_NUMBER_CHARS(_s) spn_ag_char_map_chars(_s, 43)
- #define BRK_SIGNED_NUMBER_CHARS(_s) brk_ag_char_map_chars(_s, 43)
- #define SPN_SIGNED_NUMBER_BACK(s,e) spn_ag_char_map_back(s, e, 43)
- #define BRK_SIGNED_NUMBER_BACK(s,e) brk_ag_char_map_back(s, e, 43)
- #define IS_MAKE_SCRIPT_CHAR( _c) is_ag_char_map_char((char)(_c), 0x00000101)
- #define SPN_MAKE_SCRIPT_CHARS(_s) spn_ag_char_map_chars(_s, 44)
- #define BRK_MAKE_SCRIPT_CHARS(_s) brk_ag_char_map_chars(_s, 44)
- #define SPN_MAKE_SCRIPT_BACK(s,e) spn_ag_char_map_back(s, e, 44)
- #define BRK_MAKE_SCRIPT_BACK(s,e) brk_ag_char_map_back(s, e, 44)
- #define IS_LOAD_LINE_SKIP_CHAR( _c) is_ag_char_map_char((char)(_c), 0x00000600)
- #define SPN_LOAD_LINE_SKIP_CHARS(_s) spn_ag_char_map_chars(_s, 45)
- #define BRK_LOAD_LINE_SKIP_CHARS(_s) brk_ag_char_map_chars(_s, 45)
- #define SPN_LOAD_LINE_SKIP_BACK(s,e) spn_ag_char_map_back(s, e, 45)
- #define BRK_LOAD_LINE_SKIP_BACK(s,e) brk_ag_char_map_back(s, e, 45)
- static ag_char_map_mask_t const ag_char_map_table[128] = {
- 0x00000002, 0x00000000, 0x00000000, 0x00000000,
- 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x00000800, 0x00000400, 0x00000001, 0x00000800,
- 0x00000800, 0x00000800, 0x00000000, 0x00000000,
- 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x00000400, 0x02804000, 0x02005000, 0x02004000,
- 0x02804100, 0x02804008, 0x02804000, 0x02005000,
- 0x02006000, 0x02006000, 0x02004000, 0x12804080,
- 0x02004010, 0x06A0C200, 0x06C04000, 0x03804004,
- 0x08814000, 0x00814000, 0x00814000, 0x00814000,
- 0x00814000, 0x00814000, 0x00814000, 0x00814000,
- 0x00824000, 0x00824000, 0x02804020, 0x02004000,
- 0x02004000, 0x02004000, 0x03004000, 0x02004000,
- 0x02804000, 0x00944000, 0x00944000, 0x00944000,
- 0x00944000, 0x00944000, 0x08944000, 0x00904000,
- 0x00904000, 0x00904000, 0x00904000, 0x00904000,
- 0x00904000, 0x00904000, 0x08904000, 0x00904000,
- 0x00904000, 0x00904000, 0x00904000, 0x00904000,
- 0x00904000, 0x00904000, 0x00904000, 0x00904000,
- 0x00904000, 0x00904000, 0x00904000, 0x02404000,
- 0x02004004, 0x02404000, 0x02A04000, 0x04804040,
- 0x02004000, 0x008C4000, 0x008C4000, 0x008C4000,
- 0x008C4000, 0x008C4000, 0x088C4000, 0x00884000,
- 0x00884000, 0x00884000, 0x00884000, 0x00884000,
- 0x00884000, 0x00884000, 0x08884000, 0x00884000,
- 0x00884000, 0x00884000, 0x00884000, 0x00884000,
- 0x00884000, 0x00884000, 0x00884000, 0x00884000,
- 0x00884000, 0x00884000, 0x00884000, 0x02004000,
- 0x12804000, 0x02004000, 0x0280C000, 0x00000000
- };
- #include <stdio.h>
- #include <stdlib.h>
- #include <string.h>
- #ifndef _
- # define _(_s) _s
- #endif
- static unsigned char const * ag_char_map_spanners[46];
- static ag_char_map_mask_t const ag_char_map_masks[46] = {
- 0x00000001,
- 0x00000002,
- 0x00000004,
- 0x00000008,
- 0x00000010,
- 0x00000020,
- 0x00000040,
- 0x00000080,
- 0x00000100,
- 0x00000200,
- 0x00000400,
- 0x00000800,
- 0x00000C01,
- 0x00000C00,
- 0x00001000,
- 0x00002000,
- 0x00004000,
- 0x00008000,
- 0x00010000,
- 0x00030000,
- 0x00070000,
- 0x00080000,
- 0x00100000,
- 0x00180000,
- 0x001B0000,
- 0x00180040,
- 0x001B0040,
- 0x003B0040,
- 0x003B0060,
- 0x00400000,
- 0x007B0460,
- 0x00003000,
- 0x00800000,
- 0x01000C01,
- 0x00000C81,
- 0x02000000,
- 0x041B0000,
- 0x041B000C,
- 0x08000002,
- 0x041B0004,
- 0x00000C03,
- 0x00000C13,
- 0x10000C13,
- 0x00038000,
- 0x00000101,
- 0x00000600,
- };
- #undef LOCK_SPANNER_TABLES
- static unsigned char const *
- calc_ag_char_map_spanners(unsigned int mask_ix)
- {
- #ifdef LOCK_SPANNER_TABLES
- if (ag_char_map_spanners[mask_ix] != NULL)
- return ag_char_map_spanners[mask_ix];
- pthread_mutex_lock(&ag_char_map_mutex);
- if (ag_char_map_spanners[mask_ix] == NULL)
- #endif
- {
- int ix = 1;
- ag_char_map_mask_t mask = ag_char_map_masks[mask_ix];
- unsigned char * res = malloc(256 );
- if (res == NULL) {
- fputs(_("no memory for char-mapper span map\n"), stderr);
- exit(EXIT_FAILURE);
- }
- memset(res, 0, 256);
- for (; ix < 128; ix++)
- if (ag_char_map_table[ix] & mask)
- res[ix] = 1;
- ag_char_map_spanners[mask_ix] = res;
- }
- #ifdef LOCK_SPANNER_TABLES
- pthread_mutex_unlock(&ag_char_map_mutex);
- #endif
- return ag_char_map_spanners[mask_ix];
- }
- #define ag_char_map_masks POISONED_ag_char_map_masks
- static inline int
- is_ag_char_map_char(char ch, ag_char_map_mask_t mask)
- {
- unsigned int ix = (unsigned char)ch;
- return ((ix < 128) && ((ag_char_map_table[ix] & mask) != 0));
- }
- static inline char *
- spn_ag_char_map_chars(char const * p, unsigned int mask_ix)
- {
- unsigned char const * v = ag_char_map_spanners[mask_ix];
- if (v == NULL)
- v = calc_ag_char_map_spanners(mask_ix);
- while (v[(unsigned char)*p]) p++;
- return (char *)(uintptr_t)p;
- }
- static inline char *
- brk_ag_char_map_chars(char const * p, unsigned int mask_ix)
- {
- unsigned char const * v = ag_char_map_spanners[mask_ix];
- if (v == NULL)
- v = calc_ag_char_map_spanners(mask_ix);
- while ((*p != '\0') && (! v[(unsigned char)*p])) p++;
- return (char *)(uintptr_t)p;
- }
- static inline char *
- spn_ag_char_map_back(char const * s, char const * e, unsigned int mask_ix)
- {
- unsigned char const * v = ag_char_map_spanners[mask_ix];
- if (v == NULL)
- v = calc_ag_char_map_spanners(mask_ix);
- if (s >= e) e = s + strlen(s);
- while ((e > s) && v[(unsigned char)e[-1]]) e--;
- return (char *)(uintptr_t)e;
- }
- static inline char *
- brk_ag_char_map_back(char const * s, char const * e, unsigned int mask_ix)
- {
- unsigned char const * v = ag_char_map_spanners[mask_ix];
- if (v == NULL)
- v = calc_ag_char_map_spanners(mask_ix);
- if (s == e) e += strlen(e);
- while ((e > s) && (! v[(unsigned char)e[-1]])) e--;
- return (char *)(uintptr_t)e;
- }
- #endif
|