41#ifndef PCRE2_INTERNAL_H_IDEMPOTENT_GUARD
42#define PCRE2_INTERNAL_H_IDEMPOTENT_GUARD
50#if defined EBCDIC && defined SUPPORT_UNICODE
51#error The use of both EBCDIC and SUPPORT_UNICODE is not supported.
62#if (!defined PCRE2_BUILDING_PCRE2TEST && !defined PCRE2_DFTABLES) && \
63 (!defined PCRE2_CODE_UNIT_WIDTH || \
64 (PCRE2_CODE_UNIT_WIDTH != 8 && \
65 PCRE2_CODE_UNIT_WIDTH != 16 && \
66 PCRE2_CODE_UNIT_WIDTH != 32))
67#error PCRE2_CODE_UNIT_WIDTH must be defined as 8, 16, or 32.
68#include <AbandonCompile>
93#ifdef SUPPORT_VALGRIND
94#include <valgrind/memcheck.h>
102#ifdef HAVE_ATTRIBUTE_UNINITIALIZED
103#define PCRE2_KEEP_UNINITIALIZED __attribute__((uninitialized))
105#define PCRE2_KEEP_UNINITIALIZED
112#if defined(_MSC_VER) && (_MSC_VER < 1900)
113#define snprintf _snprintf
137#ifndef PCRE2_EXP_DECL
140# define PCRE2_EXP_DECL extern __declspec(dllexport)
141# define PCRE2_EXP_DEFN __declspec(dllexport)
143# define PCRE2_EXP_DECL extern PCRE2_EXPORT
144# define PCRE2_EXP_DEFN
148# define PCRE2_EXP_DECL extern "C" PCRE2_EXPORT
150# define PCRE2_EXP_DECL extern PCRE2_EXPORT
152# ifndef PCRE2_EXP_DEFN
153# define PCRE2_EXP_DEFN PCRE2_EXP_DECL
172#ifdef CUSTOM_SUBJECT_PTR
174#define PCRE2_SPTR CUSTOM_SUBJECT_PTR
182#if defined INT64_MAX || defined int64_t
183#define INT64_OR_DOUBLE int64_t
185#define INT64_OR_DOUBLE double
195#define PRIV(name) _pcre2_##name
203#define strlen(s) _strlen(s)
204#define strncmp(s1,s2,m) _strncmp(s1,s2,m)
205#define memcmp(s,c,n) _memcmp(s,c,n)
206#define memcpy(d,s,n) _memcpy(d,s,n)
207#define memmove(d,s,n) _memmove(d,s,n)
208#define memset(s,c,n) _memset(s,c,n)
216#define memmove(a, b, c) PRIV(memmove)(a, b, c)
223#define NOTACHAR 0xffffffff
227#define MAX_UTF_CODE_POINT 0x10ffff
239#define COMPILE_ERROR_BASE 100
248#define START_FRAMES_SIZE 20480
253#define DFA_START_RWS_SIZE 30720
258#define BSR_DEFAULT PCRE2_BSR_ANYCRLF
260#define BSR_DEFAULT PCRE2_BSR_UNICODE
272#define HASUTF8EXTRALEN(c) ((c) >= 0xc0)
283#define GETUTF8(c, eptr) \
285 if ((c & 0x20u) == 0) \
286 c = ((c & 0x1fu) << 6) | (eptr[1] & 0x3fu); \
287 else if ((c & 0x10u) == 0) \
288 c = ((c & 0x0fu) << 12) | ((eptr[1] & 0x3fu) << 6) | (eptr[2] & 0x3fu); \
289 else if ((c & 0x08u) == 0) \
290 c = ((c & 0x07u) << 18) | ((eptr[1] & 0x3fu) << 12) | \
291 ((eptr[2] & 0x3fu) << 6) | (eptr[3] & 0x3fu); \
292 else if ((c & 0x04u) == 0) \
293 c = ((c & 0x03u) << 24) | ((eptr[1] & 0x3fu) << 18) | \
294 ((eptr[2] & 0x3fu) << 12) | ((eptr[3] & 0x3fu) << 6) | \
297 c = ((c & 0x01u) << 30) | ((eptr[1] & 0x3fu) << 24) | \
298 ((eptr[2] & 0x3fu) << 18) | ((eptr[3] & 0x3fu) << 12) | \
299 ((eptr[4] & 0x3fu) << 6) | (eptr[5] & 0x3fu); \
305#define GETUTF8INC(c, eptr) \
307 if ((c & 0x20u) == 0) \
308 c = ((c & 0x1fu) << 6) | (*eptr++ & 0x3fu); \
309 else if ((c & 0x10u) == 0) \
311 c = ((c & 0x0fu) << 12) | ((*eptr & 0x3fu) << 6) | (eptr[1] & 0x3fu); \
314 else if ((c & 0x08u) == 0) \
316 c = ((c & 0x07u) << 18) | ((*eptr & 0x3fu) << 12) | \
317 ((eptr[1] & 0x3fu) << 6) | (eptr[2] & 0x3fu); \
320 else if ((c & 0x04u) == 0) \
322 c = ((c & 0x03u) << 24) | ((*eptr & 0x3fu) << 18) | \
323 ((eptr[1] & 0x3fu) << 12) | ((eptr[2] & 0x3fu) << 6) | \
329 c = ((c & 0x01u) << 30) | ((*eptr & 0x3fu) << 24) | \
330 ((eptr[1] & 0x3fu) << 18) | ((eptr[2] & 0x3fu) << 12) | \
331 ((eptr[3] & 0x3fu) << 6) | (eptr[4] & 0x3fu); \
339#define GETUTF8LEN(c, eptr, len) \
341 if ((c & 0x20u) == 0) \
343 c = ((c & 0x1fu) << 6) | (eptr[1] & 0x3fu); \
346 else if ((c & 0x10u) == 0) \
348 c = ((c & 0x0fu) << 12) | ((eptr[1] & 0x3fu) << 6) | (eptr[2] & 0x3fu); \
351 else if ((c & 0x08u) == 0) \
353 c = ((c & 0x07u) << 18) | ((eptr[1] & 0x3fu) << 12) | \
354 ((eptr[2] & 0x3fu) << 6) | (eptr[3] & 0x3fu); \
357 else if ((c & 0x04u) == 0) \
359 c = ((c & 0x03u) << 24) | ((eptr[1] & 0x3fu) << 18) | \
360 ((eptr[2] & 0x3fu) << 12) | ((eptr[3] & 0x3fu) << 6) | \
366 c = ((c & 0x01u) << 30) | ((eptr[1] & 0x3fu) << 24) | \
367 ((eptr[2] & 0x3fu) << 18) | ((eptr[3] & 0x3fu) << 12) | \
368 ((eptr[4] & 0x3fu) << 6) | (eptr[5] & 0x3fu); \
401 CHAR_HT, CHAR_SPACE, CHAR_NBSP, \
402 0x1680, 0x180e, 0x2000, 0x2001, 0x2002, 0x2003, 0x2004, 0x2005, \
403 0x2006, 0x2007, 0x2008, 0x2009, 0x200A, 0x202f, 0x205f, 0x3000, \
406#define HSPACE_MULTIBYTE_CASES \
424#define HSPACE_BYTE_CASES \
429#define HSPACE_CASES \
431 HSPACE_MULTIBYTE_CASES
434 CHAR_LF, CHAR_VT, CHAR_FF, CHAR_CR, CHAR_NEL, 0x2028, 0x2029, NOTACHAR
436#define VSPACE_MULTIBYTE_CASES \
440#define VSPACE_BYTE_CASES \
447#define VSPACE_CASES \
449 VSPACE_MULTIBYTE_CASES
454#define HSPACE_LIST CHAR_HT, CHAR_SPACE, CHAR_NBSP, NOTACHAR
456#define HSPACE_BYTE_CASES \
461#define HSPACE_CASES HSPACE_BYTE_CASES
465 CHAR_VT, CHAR_FF, CHAR_CR, CHAR_NEL, CHAR_LF, NOTACHAR
468 CHAR_VT, CHAR_FF, CHAR_CR, CHAR_LF, CHAR_NEL, NOTACHAR
471#define VSPACE_BYTE_CASES \
478#define VSPACE_CASES VSPACE_BYTE_CASES
490#define NLTYPE_FIXED 0
492#define NLTYPE_ANYCRLF 2
496#define IS_NEWLINE(p) \
497 ((NLBLOCK->nltype != NLTYPE_FIXED)? \
498 ((p) < NLBLOCK->PSEND && \
499 PRIV(is_newline)((p), NLBLOCK->nltype, NLBLOCK->PSEND, \
500 &(NLBLOCK->nllen), utf)) \
502 ((p) <= NLBLOCK->PSEND - NLBLOCK->nllen && \
503 UCHAR21TEST(p) == NLBLOCK->nl[0] && \
504 (NLBLOCK->nllen == 1 || UCHAR21TEST(p+1) == NLBLOCK->nl[1]) \
510#define WAS_NEWLINE(p) \
511 ((NLBLOCK->nltype != NLTYPE_FIXED)? \
512 ((p) > NLBLOCK->PSSTART && \
513 PRIV(was_newline)((p), NLBLOCK->nltype, NLBLOCK->PSSTART, \
514 &(NLBLOCK->nllen), utf)) \
516 ((p) >= NLBLOCK->PSSTART + NLBLOCK->nllen && \
517 UCHAR21TEST(p - NLBLOCK->nllen) == NLBLOCK->nl[0] && \
518 (NLBLOCK->nllen == 1 || UCHAR21TEST(p - NLBLOCK->nllen + 1) == NLBLOCK->nl[1]) \
526#define PCRE2_MODE8 0x00000001
527#define PCRE2_MODE16 0x00000002
528#define PCRE2_MODE32 0x00000004
529#define PCRE2_FIRSTSET 0x00000010
530#define PCRE2_FIRSTCASELESS 0x00000020
531#define PCRE2_FIRSTMAPSET 0x00000040
532#define PCRE2_LASTSET 0x00000080
533#define PCRE2_LASTCASELESS 0x00000100
534#define PCRE2_STARTLINE 0x00000200
535#define PCRE2_JCHANGED 0x00000400
536#define PCRE2_HASCRORLF 0x00000800
537#define PCRE2_HASTHEN 0x00001000
538#define PCRE2_MATCH_EMPTY 0x00002000
539#define PCRE2_BSR_SET 0x00004000
540#define PCRE2_NL_SET 0x00008000
541#define PCRE2_NOTEMPTY_SET 0x00010000
542#define PCRE2_NE_ATST_SET 0x00020000
543#define PCRE2_DEREF_TABLES 0x00040000
544#define PCRE2_NOJIT 0x00080000
545#define PCRE2_HASBKPORX 0x00100000
546#define PCRE2_DUPCAPUSED 0x00200000
547#define PCRE2_HASBKC 0x00400000
548#define PCRE2_HASACCEPT 0x00800000
550#define PCRE2_MODE_MASK (PCRE2_MODE8 | PCRE2_MODE16 | PCRE2_MODE32)
560#define PCRE2_MD_COPIED_SUBJECT 0x01u
564#define MAGIC_NUMBER 0x50435245UL
571#if PCRE2_CODE_UNIT_WIDTH == 8
572#define REQ_CU_MAX 5000
574#define REQ_CU_MAX 2000
582#define cbit_xdigit 32
585#define cbit_lower 128
587#define cbit_graph 192
588#define cbit_print 224
589#define cbit_punct 256
590#define cbit_cntrl 288
591#define cbit_length 320
597#define ctype_space 0x01
598#define ctype_letter 0x02
599#define ctype_lcletter 0x04
600#define ctype_digit 0x08
601#define ctype_word 0x10
607#define fcc_offset 256
608#define cbits_offset 512
609#define ctypes_offset (cbits_offset + cbit_length)
610#define TABLES_LENGTH (ctypes_offset + 256)
632#ifndef SUPPORT_UNICODE
652#define CHAR_NL '\x15'
653#define CHAR_NEL '\x25'
655#define STR_NEL "\x25"
657#define CHAR_NL '\x25'
658#define CHAR_NEL '\x15'
660#define STR_NEL "\x15"
663#define CHAR_LF CHAR_NL
666#define CHAR_ESC '\047'
667#define CHAR_DEL '\007'
668#define CHAR_NBSP ((unsigned char)'\x41')
669#define STR_ESC "\047"
670#define STR_DEL "\007"
679#define CHAR_NL CHAR_LF
680#define CHAR_NEL ((unsigned char)'\x85')
681#define CHAR_ESC '\033'
682#define CHAR_DEL '\177'
683#define CHAR_NBSP ((unsigned char)'\xa0')
687#define STR_NEL "\x85"
688#define STR_ESC "\033"
689#define STR_DEL "\177"
703#define CHAR_SPACE ' '
704#define CHAR_EXCLAMATION_MARK '!'
705#define CHAR_QUOTATION_MARK '"'
706#define CHAR_NUMBER_SIGN '#'
707#define CHAR_DOLLAR_SIGN '$'
708#define CHAR_PERCENT_SIGN '%'
709#define CHAR_AMPERSAND '&'
710#define CHAR_APOSTROPHE '\''
711#define CHAR_LEFT_PARENTHESIS '('
712#define CHAR_RIGHT_PARENTHESIS ')'
713#define CHAR_ASTERISK '*'
715#define CHAR_COMMA ','
716#define CHAR_MINUS '-'
718#define CHAR_SLASH '/'
729#define CHAR_COLON ':'
730#define CHAR_SEMICOLON ';'
731#define CHAR_LESS_THAN_SIGN '<'
732#define CHAR_EQUALS_SIGN '='
733#define CHAR_GREATER_THAN_SIGN '>'
734#define CHAR_QUESTION_MARK '?'
735#define CHAR_COMMERCIAL_AT '@'
762#define CHAR_LEFT_SQUARE_BRACKET '['
763#define CHAR_BACKSLASH '\\'
764#define CHAR_RIGHT_SQUARE_BRACKET ']'
765#define CHAR_CIRCUMFLEX_ACCENT '^'
766#define CHAR_UNDERSCORE '_'
767#define CHAR_GRAVE_ACCENT '`'
794#define CHAR_LEFT_CURLY_BRACKET '{'
795#define CHAR_VERTICAL_LINE '|'
796#define CHAR_RIGHT_CURLY_BRACKET '}'
797#define CHAR_TILDE '~'
807#define STR_EXCLAMATION_MARK "!"
808#define STR_QUOTATION_MARK "\""
809#define STR_NUMBER_SIGN "#"
810#define STR_DOLLAR_SIGN "$"
811#define STR_PERCENT_SIGN "%"
812#define STR_AMPERSAND "&"
813#define STR_APOSTROPHE "'"
814#define STR_LEFT_PARENTHESIS "("
815#define STR_RIGHT_PARENTHESIS ")"
816#define STR_ASTERISK "*"
833#define STR_SEMICOLON ";"
834#define STR_LESS_THAN_SIGN "<"
835#define STR_EQUALS_SIGN "="
836#define STR_GREATER_THAN_SIGN ">"
837#define STR_QUESTION_MARK "?"
838#define STR_COMMERCIAL_AT "@"
865#define STR_LEFT_SQUARE_BRACKET "["
866#define STR_BACKSLASH "\\"
867#define STR_RIGHT_SQUARE_BRACKET "]"
868#define STR_CIRCUMFLEX_ACCENT "^"
869#define STR_UNDERSCORE "_"
870#define STR_GRAVE_ACCENT "`"
897#define STR_LEFT_CURLY_BRACKET "{"
898#define STR_VERTICAL_LINE "|"
899#define STR_RIGHT_CURLY_BRACKET "}"
902#define STRING_ACCEPT0 "ACCEPT\0"
903#define STRING_COMMIT0 "COMMIT\0"
904#define STRING_F0 "F\0"
905#define STRING_FAIL0 "FAIL\0"
906#define STRING_MARK0 "MARK\0"
907#define STRING_PRUNE0 "PRUNE\0"
908#define STRING_SKIP0 "SKIP\0"
909#define STRING_THEN "THEN"
911#define STRING_atomic0 "atomic\0"
912#define STRING_pla0 "pla\0"
913#define STRING_plb0 "plb\0"
914#define STRING_napla0 "napla\0"
915#define STRING_naplb0 "naplb\0"
916#define STRING_nla0 "nla\0"
917#define STRING_nlb0 "nlb\0"
918#define STRING_sr0 "sr\0"
919#define STRING_asr0 "asr\0"
920#define STRING_positive_lookahead0 "positive_lookahead\0"
921#define STRING_positive_lookbehind0 "positive_lookbehind\0"
922#define STRING_non_atomic_positive_lookahead0 "non_atomic_positive_lookahead\0"
923#define STRING_non_atomic_positive_lookbehind0 "non_atomic_positive_lookbehind\0"
924#define STRING_negative_lookahead0 "negative_lookahead\0"
925#define STRING_negative_lookbehind0 "negative_lookbehind\0"
926#define STRING_script_run0 "script_run\0"
927#define STRING_atomic_script_run "atomic_script_run"
929#define STRING_alpha0 "alpha\0"
930#define STRING_lower0 "lower\0"
931#define STRING_upper0 "upper\0"
932#define STRING_alnum0 "alnum\0"
933#define STRING_ascii0 "ascii\0"
934#define STRING_blank0 "blank\0"
935#define STRING_cntrl0 "cntrl\0"
936#define STRING_digit0 "digit\0"
937#define STRING_graph0 "graph\0"
938#define STRING_print0 "print\0"
939#define STRING_punct0 "punct\0"
940#define STRING_space0 "space\0"
941#define STRING_word0 "word\0"
942#define STRING_xdigit "xdigit"
944#define STRING_DEFINE "DEFINE"
945#define STRING_VERSION "VERSION"
946#define STRING_WEIRD_STARTWORD "[:<:]]"
947#define STRING_WEIRD_ENDWORD "[:>:]]"
949#define STRING_CR_RIGHTPAR "CR)"
950#define STRING_LF_RIGHTPAR "LF)"
951#define STRING_CRLF_RIGHTPAR "CRLF)"
952#define STRING_ANY_RIGHTPAR "ANY)"
953#define STRING_ANYCRLF_RIGHTPAR "ANYCRLF)"
954#define STRING_NUL_RIGHTPAR "NUL)"
955#define STRING_BSR_ANYCRLF_RIGHTPAR "BSR_ANYCRLF)"
956#define STRING_BSR_UNICODE_RIGHTPAR "BSR_UNICODE)"
957#define STRING_UTF8_RIGHTPAR "UTF8)"
958#define STRING_UTF16_RIGHTPAR "UTF16)"
959#define STRING_UTF32_RIGHTPAR "UTF32)"
960#define STRING_UTF_RIGHTPAR "UTF)"
961#define STRING_UCP_RIGHTPAR "UCP)"
962#define STRING_NO_AUTO_POSSESS_RIGHTPAR "NO_AUTO_POSSESS)"
963#define STRING_NO_DOTSTAR_ANCHOR_RIGHTPAR "NO_DOTSTAR_ANCHOR)"
964#define STRING_NO_JIT_RIGHTPAR "NO_JIT)"
965#define STRING_NO_START_OPT_RIGHTPAR "NO_START_OPT)"
966#define STRING_NOTEMPTY_RIGHTPAR "NOTEMPTY)"
967#define STRING_NOTEMPTY_ATSTART_RIGHTPAR "NOTEMPTY_ATSTART)"
968#define STRING_LIMIT_HEAP_EQ "LIMIT_HEAP="
969#define STRING_LIMIT_MATCH_EQ "LIMIT_MATCH="
970#define STRING_LIMIT_DEPTH_EQ "LIMIT_DEPTH="
971#define STRING_LIMIT_RECURSION_EQ "LIMIT_RECURSION="
972#define STRING_MARK "MARK"
974#define STRING_bc "bc"
975#define STRING_bidiclass "bidiclass"
976#define STRING_sc "sc"
977#define STRING_script "script"
978#define STRING_scriptextensions "scriptextensions"
979#define STRING_scx "scx"
987#define CHAR_HT '\011'
988#define CHAR_VT '\013'
989#define CHAR_FF '\014'
990#define CHAR_CR '\015'
991#define CHAR_LF '\012'
992#define CHAR_NL CHAR_LF
993#define CHAR_NEL ((unsigned char)'\x85')
994#define CHAR_BS '\010'
995#define CHAR_BEL '\007'
996#define CHAR_ESC '\033'
997#define CHAR_DEL '\177'
1000#define CHAR_SPACE '\040'
1001#define CHAR_EXCLAMATION_MARK '\041'
1002#define CHAR_QUOTATION_MARK '\042'
1003#define CHAR_NUMBER_SIGN '\043'
1004#define CHAR_DOLLAR_SIGN '\044'
1005#define CHAR_PERCENT_SIGN '\045'
1006#define CHAR_AMPERSAND '\046'
1007#define CHAR_APOSTROPHE '\047'
1008#define CHAR_LEFT_PARENTHESIS '\050'
1009#define CHAR_RIGHT_PARENTHESIS '\051'
1010#define CHAR_ASTERISK '\052'
1011#define CHAR_PLUS '\053'
1012#define CHAR_COMMA '\054'
1013#define CHAR_MINUS '\055'
1014#define CHAR_DOT '\056'
1015#define CHAR_SLASH '\057'
1016#define CHAR_0 '\060'
1017#define CHAR_1 '\061'
1018#define CHAR_2 '\062'
1019#define CHAR_3 '\063'
1020#define CHAR_4 '\064'
1021#define CHAR_5 '\065'
1022#define CHAR_6 '\066'
1023#define CHAR_7 '\067'
1024#define CHAR_8 '\070'
1025#define CHAR_9 '\071'
1026#define CHAR_COLON '\072'
1027#define CHAR_SEMICOLON '\073'
1028#define CHAR_LESS_THAN_SIGN '\074'
1029#define CHAR_EQUALS_SIGN '\075'
1030#define CHAR_GREATER_THAN_SIGN '\076'
1031#define CHAR_QUESTION_MARK '\077'
1032#define CHAR_COMMERCIAL_AT '\100'
1033#define CHAR_A '\101'
1034#define CHAR_B '\102'
1035#define CHAR_C '\103'
1036#define CHAR_D '\104'
1037#define CHAR_E '\105'
1038#define CHAR_F '\106'
1039#define CHAR_G '\107'
1040#define CHAR_H '\110'
1041#define CHAR_I '\111'
1042#define CHAR_J '\112'
1043#define CHAR_K '\113'
1044#define CHAR_L '\114'
1045#define CHAR_M '\115'
1046#define CHAR_N '\116'
1047#define CHAR_O '\117'
1048#define CHAR_P '\120'
1049#define CHAR_Q '\121'
1050#define CHAR_R '\122'
1051#define CHAR_S '\123'
1052#define CHAR_T '\124'
1053#define CHAR_U '\125'
1054#define CHAR_V '\126'
1055#define CHAR_W '\127'
1056#define CHAR_X '\130'
1057#define CHAR_Y '\131'
1058#define CHAR_Z '\132'
1059#define CHAR_LEFT_SQUARE_BRACKET '\133'
1060#define CHAR_BACKSLASH '\134'
1061#define CHAR_RIGHT_SQUARE_BRACKET '\135'
1062#define CHAR_CIRCUMFLEX_ACCENT '\136'
1063#define CHAR_UNDERSCORE '\137'
1064#define CHAR_GRAVE_ACCENT '\140'
1065#define CHAR_a '\141'
1066#define CHAR_b '\142'
1067#define CHAR_c '\143'
1068#define CHAR_d '\144'
1069#define CHAR_e '\145'
1070#define CHAR_f '\146'
1071#define CHAR_g '\147'
1072#define CHAR_h '\150'
1073#define CHAR_i '\151'
1074#define CHAR_j '\152'
1075#define CHAR_k '\153'
1076#define CHAR_l '\154'
1077#define CHAR_m '\155'
1078#define CHAR_n '\156'
1079#define CHAR_o '\157'
1080#define CHAR_p '\160'
1081#define CHAR_q '\161'
1082#define CHAR_r '\162'
1083#define CHAR_s '\163'
1084#define CHAR_t '\164'
1085#define CHAR_u '\165'
1086#define CHAR_v '\166'
1087#define CHAR_w '\167'
1088#define CHAR_x '\170'
1089#define CHAR_y '\171'
1090#define CHAR_z '\172'
1091#define CHAR_LEFT_CURLY_BRACKET '\173'
1092#define CHAR_VERTICAL_LINE '\174'
1093#define CHAR_RIGHT_CURLY_BRACKET '\175'
1094#define CHAR_TILDE '\176'
1095#define CHAR_NBSP ((unsigned char)'\xa0')
1097#define STR_HT "\011"
1098#define STR_VT "\013"
1099#define STR_FF "\014"
1100#define STR_CR "\015"
1101#define STR_NL "\012"
1102#define STR_BS "\010"
1103#define STR_BEL "\007"
1104#define STR_ESC "\033"
1105#define STR_DEL "\177"
1107#define STR_SPACE "\040"
1108#define STR_EXCLAMATION_MARK "\041"
1109#define STR_QUOTATION_MARK "\042"
1110#define STR_NUMBER_SIGN "\043"
1111#define STR_DOLLAR_SIGN "\044"
1112#define STR_PERCENT_SIGN "\045"
1113#define STR_AMPERSAND "\046"
1114#define STR_APOSTROPHE "\047"
1115#define STR_LEFT_PARENTHESIS "\050"
1116#define STR_RIGHT_PARENTHESIS "\051"
1117#define STR_ASTERISK "\052"
1118#define STR_PLUS "\053"
1119#define STR_COMMA "\054"
1120#define STR_MINUS "\055"
1121#define STR_DOT "\056"
1122#define STR_SLASH "\057"
1133#define STR_COLON "\072"
1134#define STR_SEMICOLON "\073"
1135#define STR_LESS_THAN_SIGN "\074"
1136#define STR_EQUALS_SIGN "\075"
1137#define STR_GREATER_THAN_SIGN "\076"
1138#define STR_QUESTION_MARK "\077"
1139#define STR_COMMERCIAL_AT "\100"
1166#define STR_LEFT_SQUARE_BRACKET "\133"
1167#define STR_BACKSLASH "\134"
1168#define STR_RIGHT_SQUARE_BRACKET "\135"
1169#define STR_CIRCUMFLEX_ACCENT "\136"
1170#define STR_UNDERSCORE "\137"
1171#define STR_GRAVE_ACCENT "\140"
1198#define STR_LEFT_CURLY_BRACKET "\173"
1199#define STR_VERTICAL_LINE "\174"
1200#define STR_RIGHT_CURLY_BRACKET "\175"
1201#define STR_TILDE "\176"
1203#define STRING_ACCEPT0 STR_A STR_C STR_C STR_E STR_P STR_T "\0"
1204#define STRING_COMMIT0 STR_C STR_O STR_M STR_M STR_I STR_T "\0"
1205#define STRING_F0 STR_F "\0"
1206#define STRING_FAIL0 STR_F STR_A STR_I STR_L "\0"
1207#define STRING_MARK0 STR_M STR_A STR_R STR_K "\0"
1208#define STRING_PRUNE0 STR_P STR_R STR_U STR_N STR_E "\0"
1209#define STRING_SKIP0 STR_S STR_K STR_I STR_P "\0"
1210#define STRING_THEN STR_T STR_H STR_E STR_N
1212#define STRING_atomic0 STR_a STR_t STR_o STR_m STR_i STR_c "\0"
1213#define STRING_pla0 STR_p STR_l STR_a "\0"
1214#define STRING_plb0 STR_p STR_l STR_b "\0"
1215#define STRING_napla0 STR_n STR_a STR_p STR_l STR_a "\0"
1216#define STRING_naplb0 STR_n STR_a STR_p STR_l STR_b "\0"
1217#define STRING_nla0 STR_n STR_l STR_a "\0"
1218#define STRING_nlb0 STR_n STR_l STR_b "\0"
1219#define STRING_sr0 STR_s STR_r "\0"
1220#define STRING_asr0 STR_a STR_s STR_r "\0"
1221#define STRING_positive_lookahead0 STR_p STR_o STR_s STR_i STR_t STR_i STR_v STR_e STR_UNDERSCORE STR_l STR_o STR_o STR_k STR_a STR_h STR_e STR_a STR_d "\0"
1222#define STRING_positive_lookbehind0 STR_p STR_o STR_s STR_i STR_t STR_i STR_v STR_e STR_UNDERSCORE STR_l STR_o STR_o STR_k STR_b STR_e STR_h STR_i STR_n STR_d "\0"
1223#define STRING_non_atomic_positive_lookahead0 STR_n STR_o STR_n STR_UNDERSCORE STR_a STR_t STR_o STR_m STR_i STR_c STR_UNDERSCORE STR_p STR_o STR_s STR_i STR_t STR_i STR_v STR_e STR_UNDERSCORE STR_l STR_o STR_o STR_k STR_a STR_h STR_e STR_a STR_d "\0"
1224#define STRING_non_atomic_positive_lookbehind0 STR_n STR_o STR_n STR_UNDERSCORE STR_a STR_t STR_o STR_m STR_i STR_c STR_UNDERSCORE STR_p STR_o STR_s STR_i STR_t STR_i STR_v STR_e STR_UNDERSCORE STR_l STR_o STR_o STR_k STR_b STR_e STR_h STR_i STR_n STR_d "\0"
1225#define STRING_negative_lookahead0 STR_n STR_e STR_g STR_a STR_t STR_i STR_v STR_e STR_UNDERSCORE STR_l STR_o STR_o STR_k STR_a STR_h STR_e STR_a STR_d "\0"
1226#define STRING_negative_lookbehind0 STR_n STR_e STR_g STR_a STR_t STR_i STR_v STR_e STR_UNDERSCORE STR_l STR_o STR_o STR_k STR_b STR_e STR_h STR_i STR_n STR_d "\0"
1227#define STRING_script_run0 STR_s STR_c STR_r STR_i STR_p STR_t STR_UNDERSCORE STR_r STR_u STR_n "\0"
1228#define STRING_atomic_script_run STR_a STR_t STR_o STR_m STR_i STR_c STR_UNDERSCORE STR_s STR_c STR_r STR_i STR_p STR_t STR_UNDERSCORE STR_r STR_u STR_n
1230#define STRING_alpha0 STR_a STR_l STR_p STR_h STR_a "\0"
1231#define STRING_lower0 STR_l STR_o STR_w STR_e STR_r "\0"
1232#define STRING_upper0 STR_u STR_p STR_p STR_e STR_r "\0"
1233#define STRING_alnum0 STR_a STR_l STR_n STR_u STR_m "\0"
1234#define STRING_ascii0 STR_a STR_s STR_c STR_i STR_i "\0"
1235#define STRING_blank0 STR_b STR_l STR_a STR_n STR_k "\0"
1236#define STRING_cntrl0 STR_c STR_n STR_t STR_r STR_l "\0"
1237#define STRING_digit0 STR_d STR_i STR_g STR_i STR_t "\0"
1238#define STRING_graph0 STR_g STR_r STR_a STR_p STR_h "\0"
1239#define STRING_print0 STR_p STR_r STR_i STR_n STR_t "\0"
1240#define STRING_punct0 STR_p STR_u STR_n STR_c STR_t "\0"
1241#define STRING_space0 STR_s STR_p STR_a STR_c STR_e "\0"
1242#define STRING_word0 STR_w STR_o STR_r STR_d "\0"
1243#define STRING_xdigit STR_x STR_d STR_i STR_g STR_i STR_t
1245#define STRING_DEFINE STR_D STR_E STR_F STR_I STR_N STR_E
1246#define STRING_VERSION STR_V STR_E STR_R STR_S STR_I STR_O STR_N
1247#define STRING_WEIRD_STARTWORD STR_LEFT_SQUARE_BRACKET STR_COLON STR_LESS_THAN_SIGN STR_COLON STR_RIGHT_SQUARE_BRACKET STR_RIGHT_SQUARE_BRACKET
1248#define STRING_WEIRD_ENDWORD STR_LEFT_SQUARE_BRACKET STR_COLON STR_GREATER_THAN_SIGN STR_COLON STR_RIGHT_SQUARE_BRACKET STR_RIGHT_SQUARE_BRACKET
1250#define STRING_CR_RIGHTPAR STR_C STR_R STR_RIGHT_PARENTHESIS
1251#define STRING_LF_RIGHTPAR STR_L STR_F STR_RIGHT_PARENTHESIS
1252#define STRING_CRLF_RIGHTPAR STR_C STR_R STR_L STR_F STR_RIGHT_PARENTHESIS
1253#define STRING_ANY_RIGHTPAR STR_A STR_N STR_Y STR_RIGHT_PARENTHESIS
1254#define STRING_ANYCRLF_RIGHTPAR STR_A STR_N STR_Y STR_C STR_R STR_L STR_F STR_RIGHT_PARENTHESIS
1255#define STRING_NUL_RIGHTPAR STR_N STR_U STR_L STR_RIGHT_PARENTHESIS
1256#define STRING_BSR_ANYCRLF_RIGHTPAR STR_B STR_S STR_R STR_UNDERSCORE STR_A STR_N STR_Y STR_C STR_R STR_L STR_F STR_RIGHT_PARENTHESIS
1257#define STRING_BSR_UNICODE_RIGHTPAR STR_B STR_S STR_R STR_UNDERSCORE STR_U STR_N STR_I STR_C STR_O STR_D STR_E STR_RIGHT_PARENTHESIS
1258#define STRING_UTF8_RIGHTPAR STR_U STR_T STR_F STR_8 STR_RIGHT_PARENTHESIS
1259#define STRING_UTF16_RIGHTPAR STR_U STR_T STR_F STR_1 STR_6 STR_RIGHT_PARENTHESIS
1260#define STRING_UTF32_RIGHTPAR STR_U STR_T STR_F STR_3 STR_2 STR_RIGHT_PARENTHESIS
1261#define STRING_UTF_RIGHTPAR STR_U STR_T STR_F STR_RIGHT_PARENTHESIS
1262#define STRING_UCP_RIGHTPAR STR_U STR_C STR_P STR_RIGHT_PARENTHESIS
1263#define STRING_NO_AUTO_POSSESS_RIGHTPAR STR_N STR_O STR_UNDERSCORE STR_A STR_U STR_T STR_O STR_UNDERSCORE STR_P STR_O STR_S STR_S STR_E STR_S STR_S STR_RIGHT_PARENTHESIS
1264#define STRING_NO_DOTSTAR_ANCHOR_RIGHTPAR STR_N STR_O STR_UNDERSCORE STR_D STR_O STR_T STR_S STR_T STR_A STR_R STR_UNDERSCORE STR_A STR_N STR_C STR_H STR_O STR_R STR_RIGHT_PARENTHESIS
1265#define STRING_NO_JIT_RIGHTPAR STR_N STR_O STR_UNDERSCORE STR_J STR_I STR_T STR_RIGHT_PARENTHESIS
1266#define STRING_NO_START_OPT_RIGHTPAR STR_N STR_O STR_UNDERSCORE STR_S STR_T STR_A STR_R STR_T STR_UNDERSCORE STR_O STR_P STR_T STR_RIGHT_PARENTHESIS
1267#define STRING_NOTEMPTY_RIGHTPAR STR_N STR_O STR_T STR_E STR_M STR_P STR_T STR_Y STR_RIGHT_PARENTHESIS
1268#define STRING_NOTEMPTY_ATSTART_RIGHTPAR STR_N STR_O STR_T STR_E STR_M STR_P STR_T STR_Y STR_UNDERSCORE STR_A STR_T STR_S STR_T STR_A STR_R STR_T STR_RIGHT_PARENTHESIS
1269#define STRING_LIMIT_HEAP_EQ STR_L STR_I STR_M STR_I STR_T STR_UNDERSCORE STR_H STR_E STR_A STR_P STR_EQUALS_SIGN
1270#define STRING_LIMIT_MATCH_EQ STR_L STR_I STR_M STR_I STR_T STR_UNDERSCORE STR_M STR_A STR_T STR_C STR_H STR_EQUALS_SIGN
1271#define STRING_LIMIT_DEPTH_EQ STR_L STR_I STR_M STR_I STR_T STR_UNDERSCORE STR_D STR_E STR_P STR_T STR_H STR_EQUALS_SIGN
1272#define STRING_LIMIT_RECURSION_EQ STR_L STR_I STR_M STR_I STR_T STR_UNDERSCORE STR_R STR_E STR_C STR_U STR_R STR_S STR_I STR_O STR_N STR_EQUALS_SIGN
1273#define STRING_MARK STR_M STR_A STR_R STR_K
1275#define STRING_bc STR_b STR_c
1276#define STRING_bidiclass STR_b STR_i STR_d STR_i STR_c STR_l STR_a STR_s STR_s
1277#define STRING_sc STR_s STR_c
1278#define STRING_script STR_s STR_c STR_r STR_i STR_p STR_t
1279#define STRING_scriptextensions STR_s STR_c STR_r STR_i STR_p STR_t STR_e STR_x STR_t STR_e STR_n STR_s STR_i STR_o STR_n STR_s
1280#define STRING_scx STR_s STR_c STR_x
1307#define PT_TABSIZE 14
1315#define PT_PXGRAPH 14
1316#define PT_PXPRINT 15
1317#define PT_PXPUNCT 16
1318#define PT_PXXDIGIT 17
1323#define PT_NOTSCRIPT 255
1330#define XCL_HASPROP 0x04
1336#define XCL_NOTPROP 4
1388#define FIRST_AUTOTAB_OP OP_NOT_DIGIT
1389#define LAST_AUTOTAB_LEFT_OP OP_EXTUNI
1390#define LAST_AUTOTAB_RIGHT_OP OP_DOLLM
1674#define OP_NAME_LIST \
1675 "End", "\\A", "\\G", "\\K", "\\B", "\\b", "\\D", "\\d", \
1676 "\\S", "\\s", "\\W", "\\w", "Any", "AllAny", "Anybyte", \
1677 "notprop", "prop", "\\R", "\\H", "\\h", "\\V", "\\v", \
1678 "extuni", "\\Z", "\\z", \
1679 "$", "$", "^", "^", "char", "chari", "not", "noti", \
1680 "*", "*?", "+", "+?", "?", "??", \
1682 "*+","++", "?+", "{", \
1683 "*", "*?", "+", "+?", "?", "??", \
1685 "*+","++", "?+", "{", \
1686 "*", "*?", "+", "+?", "?", "??", \
1688 "*+","++", "?+", "{", \
1689 "*", "*?", "+", "+?", "?", "??", \
1691 "*+","++", "?+", "{", \
1692 "*", "*?", "+", "+?", "?", "??", "{", "{", "{", \
1693 "*+","++", "?+", "{", \
1694 "*", "*?", "+", "+?", "?", "??", "{", "{", \
1695 "*+","++", "?+", "{", \
1696 "class", "nclass", "xclass", "Ref", "Refi", "DnRef", "DnRefi", \
1697 "Recurse", "Callout", "CalloutStr", \
1698 "Alt", "Ket", "KetRmax", "KetRmin", "KetRpos", \
1699 "Reverse", "VReverse", "Assert", "Assert not", \
1700 "Assert back", "Assert back not", \
1701 "Non-atomic assert", "Non-atomic assert back", \
1704 "Bra", "BraPos", "CBra", "CBraPos", \
1706 "SBra", "SBraPos", "SCBra", "SCBraPos", \
1708 "Cond ref", "Cond dnref", "Cond rec", "Cond dnrec", \
1709 "Cond false", "Cond true", \
1710 "Brazero", "Braminzero", "Braposzero", \
1711 "*MARK", "*PRUNE", "*PRUNE", "*SKIP", "*SKIP", \
1712 "*THEN", "*THEN", "*COMMIT", "*COMMIT", "*FAIL", \
1713 "*ACCEPT", "*ASSERT_ACCEPT", \
1714 "Close", "Skip zero", "Define", "\\B (ucp)", "\\b (ucp)"
1741 2+IMM2_SIZE, 2+IMM2_SIZE, \
1743 2, 2, 2, 2+IMM2_SIZE, \
1745 2+IMM2_SIZE, 2+IMM2_SIZE, \
1747 2, 2, 2, 2+IMM2_SIZE, \
1750 2+IMM2_SIZE, 2+IMM2_SIZE, \
1752 2, 2, 2, 2+IMM2_SIZE, \
1754 2+IMM2_SIZE, 2+IMM2_SIZE, \
1756 2, 2, 2, 2+IMM2_SIZE, \
1759 2+IMM2_SIZE, 2+IMM2_SIZE, \
1761 2, 2, 2, 2+IMM2_SIZE, \
1764 1+2*IMM2_SIZE, 1+2*IMM2_SIZE, \
1765 1, 1, 1, 1+2*IMM2_SIZE, \
1766 1+(32/sizeof(PCRE2_UCHAR)), \
1767 1+(32/sizeof(PCRE2_UCHAR)), \
1793 1+LINK_SIZE+IMM2_SIZE, \
1794 1+LINK_SIZE+IMM2_SIZE, \
1798 1+LINK_SIZE+IMM2_SIZE, \
1799 1+LINK_SIZE+IMM2_SIZE, \
1801 1+IMM2_SIZE, 1+2*IMM2_SIZE, \
1802 1+IMM2_SIZE, 1+2*IMM2_SIZE, \
1816#define RREF_ANY 0xffff
1824 void * (*malloc)(size_t,
void *);
1864#define UCD_BLOCK_SIZE 128
1865#define REAL_GET_UCD(ch) (PRIV(ucd_records) + \
1866 PRIV(ucd_stage2)[PRIV(ucd_stage1)[(int)(ch) / UCD_BLOCK_SIZE] * \
1867 UCD_BLOCK_SIZE + (int)(ch) % UCD_BLOCK_SIZE])
1869#if PCRE2_CODE_UNIT_WIDTH == 32
1870#define GET_UCD(ch) ((ch > MAX_UTF_CODE_POINT)? \
1871 PRIV(dummy_ucd_record) : REAL_GET_UCD(ch))
1873#define GET_UCD(ch) REAL_GET_UCD(ch)
1876#define UCD_SCRIPTX_MASK 0x3ff
1877#define UCD_BIDICLASS_SHIFT 11
1878#define UCD_BPROPS_MASK 0xfff
1880#define UCD_SCRIPTX_PROP(prop) ((prop)->scriptx_bidiclass & UCD_SCRIPTX_MASK)
1881#define UCD_BIDICLASS_PROP(prop) ((prop)->scriptx_bidiclass >> UCD_BIDICLASS_SHIFT)
1882#define UCD_BPROPS_PROP(prop) ((prop)->bprops & UCD_BPROPS_MASK)
1884#define UCD_CHARTYPE(ch) GET_UCD(ch)->chartype
1885#define UCD_SCRIPT(ch) GET_UCD(ch)->script
1886#define UCD_CATEGORY(ch) PRIV(ucp_gentype)[UCD_CHARTYPE(ch)]
1887#define UCD_GRAPHBREAK(ch) GET_UCD(ch)->gbprop
1888#define UCD_CASESET(ch) GET_UCD(ch)->caseset
1889#define UCD_OTHERCASE(ch) ((uint32_t)((int)ch + (int)(GET_UCD(ch)->other_case)))
1890#define UCD_SCRIPTX(ch) UCD_SCRIPTX_PROP(GET_UCD(ch))
1891#define UCD_BPROPS(ch) UCD_BPROPS_PROP(GET_UCD(ch))
1892#define UCD_BIDICLASS(ch) UCD_BIDICLASS_PROP(GET_UCD(ch))
1898#define MAPBIT(map,n) ((map)[(n)/32]&(1u<<((n)%32)))
1899#define MAPSET(map,n) ((map)[(n)/32]|=(1u<<((n)%32)))
1917#if defined PCRE2_CODE_UNIT_WIDTH && PCRE2_CODE_UNIT_WIDTH != 0
1921#if defined EBCDIC && PCRE2_CODE_UNIT_WIDTH != 8
1922#error EBCDIC is not supported for the 16-bit or 32-bit libraries
1927#define MAX_NON_UTF_CHAR (0xffffffffU >> (32 - PCRE2_CODE_UNIT_WIDTH))
1936#if PCRE2_CODE_UNIT_WIDTH == 8
1937extern const int PRIV(utf8_table1)[];
1938extern const int PRIV(utf8_table1_size);
1939extern const int PRIV(utf8_table2)[];
1940extern const int PRIV(utf8_table3)[];
1941extern const uint8_t
PRIV(utf8_table4)[];
1944#define _pcre2_OP_lengths PCRE2_SUFFIX(_pcre2_OP_lengths_)
1945#define _pcre2_callout_end_delims PCRE2_SUFFIX(_pcre2_callout_end_delims_)
1946#define _pcre2_callout_start_delims PCRE2_SUFFIX(_pcre2_callout_start_delims_)
1947#define _pcre2_default_compile_context PCRE2_SUFFIX(_pcre2_default_compile_context_)
1948#define _pcre2_default_convert_context PCRE2_SUFFIX(_pcre2_default_convert_context_)
1949#define _pcre2_default_match_context PCRE2_SUFFIX(_pcre2_default_match_context_)
1950#define _pcre2_default_tables PCRE2_SUFFIX(_pcre2_default_tables_)
1951#if PCRE2_CODE_UNIT_WIDTH == 32
1952#define _pcre2_dummy_ucd_record PCRE2_SUFFIX(_pcre2_dummy_ucd_record_)
1954#define _pcre2_hspace_list PCRE2_SUFFIX(_pcre2_hspace_list_)
1955#define _pcre2_vspace_list PCRE2_SUFFIX(_pcre2_vspace_list_)
1956#define _pcre2_ucd_boolprop_sets PCRE2_SUFFIX(_pcre2_ucd_boolprop_sets_)
1957#define _pcre2_ucd_caseless_sets PCRE2_SUFFIX(_pcre2_ucd_caseless_sets_)
1958#define _pcre2_ucd_digit_sets PCRE2_SUFFIX(_pcre2_ucd_digit_sets_)
1959#define _pcre2_ucd_script_sets PCRE2_SUFFIX(_pcre2_ucd_script_sets_)
1960#define _pcre2_ucd_records PCRE2_SUFFIX(_pcre2_ucd_records_)
1961#define _pcre2_ucd_stage1 PCRE2_SUFFIX(_pcre2_ucd_stage1_)
1962#define _pcre2_ucd_stage2 PCRE2_SUFFIX(_pcre2_ucd_stage2_)
1963#define _pcre2_ucp_gbtable PCRE2_SUFFIX(_pcre2_ucp_gbtable_)
1964#define _pcre2_ucp_gentype PCRE2_SUFFIX(_pcre2_ucp_gentype_)
1965#define _pcre2_ucp_typerange PCRE2_SUFFIX(_pcre2_ucp_typerange_)
1966#define _pcre2_unicode_version PCRE2_SUFFIX(_pcre2_unicode_version_)
1967#define _pcre2_utt PCRE2_SUFFIX(_pcre2_utt_)
1968#define _pcre2_utt_names PCRE2_SUFFIX(_pcre2_utt_names_)
1969#define _pcre2_utt_size PCRE2_SUFFIX(_pcre2_utt_size_)
1972extern const uint32_t
PRIV(callout_end_delims)[];
1973extern const uint32_t
PRIV(callout_start_delims)[];
1977extern const uint8_t
PRIV(default_tables)[];
1978extern const uint32_t
PRIV(hspace_list)[];
1979extern const uint32_t
PRIV(vspace_list)[];
1980extern const uint32_t
PRIV(ucd_boolprop_sets)[];
1981extern const uint32_t
PRIV(ucd_caseless_sets)[];
1982extern const uint32_t
PRIV(ucd_digit_sets)[];
1983extern const uint32_t
PRIV(ucd_script_sets)[];
1985#if PCRE2_CODE_UNIT_WIDTH == 32
1988extern const uint16_t
PRIV(ucd_stage1)[];
1989extern const uint16_t
PRIV(ucd_stage2)[];
1990extern const uint32_t
PRIV(ucp_gbtable)[];
1991extern const uint32_t
PRIV(ucp_gentype)[];
1993extern const int PRIV(ucp_typerange)[];
1995extern const char *
PRIV(unicode_version);
1997extern const char PRIV(utt_names)[];
1998extern const size_t PRIV(utt_size);
2006#define branch_chain PCRE2_SUFFIX(branch_chain_)
2007#define compile_block PCRE2_SUFFIX(compile_block_)
2008#define dfa_match_block PCRE2_SUFFIX(dfa_match_block_)
2009#define match_block PCRE2_SUFFIX(match_block_)
2010#define named_group PCRE2_SUFFIX(named_group_)
2020#define _pcre2_auto_possessify PCRE2_SUFFIX(_pcre2_auto_possessify_)
2021#define _pcre2_check_escape PCRE2_SUFFIX(_pcre2_check_escape_)
2022#define _pcre2_extuni PCRE2_SUFFIX(_pcre2_extuni_)
2023#define _pcre2_find_bracket PCRE2_SUFFIX(_pcre2_find_bracket_)
2024#define _pcre2_is_newline PCRE2_SUFFIX(_pcre2_is_newline_)
2025#define _pcre2_jit_free_rodata PCRE2_SUFFIX(_pcre2_jit_free_rodata_)
2026#define _pcre2_jit_free PCRE2_SUFFIX(_pcre2_jit_free_)
2027#define _pcre2_jit_get_size PCRE2_SUFFIX(_pcre2_jit_get_size_)
2028#define _pcre2_jit_get_target PCRE2_SUFFIX(_pcre2_jit_get_target_)
2029#define _pcre2_memctl_malloc PCRE2_SUFFIX(_pcre2_memctl_malloc_)
2030#define _pcre2_ord2utf PCRE2_SUFFIX(_pcre2_ord2utf_)
2031#define _pcre2_script_run PCRE2_SUFFIX(_pcre2_script_run_)
2032#define _pcre2_strcmp PCRE2_SUFFIX(_pcre2_strcmp_)
2033#define _pcre2_strcmp_c8 PCRE2_SUFFIX(_pcre2_strcmp_c8_)
2034#define _pcre2_strcpy_c8 PCRE2_SUFFIX(_pcre2_strcpy_c8_)
2035#define _pcre2_strlen PCRE2_SUFFIX(_pcre2_strlen_)
2036#define _pcre2_strncmp PCRE2_SUFFIX(_pcre2_strncmp_)
2037#define _pcre2_strncmp_c8 PCRE2_SUFFIX(_pcre2_strncmp_c8_)
2038#define _pcre2_study PCRE2_SUFFIX(_pcre2_study_)
2039#define _pcre2_valid_utf PCRE2_SUFFIX(_pcre2_valid_utf_)
2040#define _pcre2_was_newline PCRE2_SUFFIX(_pcre2_was_newline_)
2041#define _pcre2_xclass PCRE2_SUFFIX(_pcre2_xclass_)
2052extern void _pcre2_jit_free_rodata(
void *,
void *);
2054extern size_t _pcre2_jit_get_size(
void *);
2055const char * _pcre2_jit_get_target(
void);
2056extern void * _pcre2_memctl_malloc(
size_t,
pcre2_memctl *);
2057extern unsigned int _pcre2_ord2utf(uint32_t,
PCRE2_UCHAR *);
2060extern int _pcre2_strcmp_c8(
PCRE2_SPTR,
const char *);
2064extern int _pcre2_strncmp_c8(
PCRE2_SPTR,
const char *,
size_t);
2073#if !defined(VPCOMPAT) && !defined(HAVE_MEMMOVE)
2074#define _pcre2_memmove PCRE2_SUFFIX(_pcre2_memmove)
2075extern void * _pcre2_memmove(
void *,
const void *,
size_t);
#define pcre2_convert_context
#define pcre2_match_context
#define pcre2_compile_context
BOOL PRIV ckd_smul(PCRE2_SIZE *r, int a, int b)
@ OP_NOT_UCP_WORD_BOUNDARY
@ PCRE2_MATCHEDBY_DFA_INTERPRETER
@ PCRE2_MATCHEDBY_INTERPRETER
struct open_capitem * next
void(* free)(void *, void *)
uint16_t scriptx_bidiclass
ZEND_API void(ZEND_FASTCALL *zend_touch_vm_stack_data)(void *vm_stack_data)