74#undef MAX_PATTERN_SIZE
75#undef MAX_UTF_SINGLE_CU
102#if PCRE2_CODE_UNIT_WIDTH == 8
106 (a[n] = (PCRE2_UCHAR)((d) >> 8)), \
107 (a[(n)+1] = (PCRE2_UCHAR)((d) & 255))
109 (unsigned int)(((a)[n] << 8) | (a)[(n)+1])
110#define MAX_PATTERN_SIZE (1 << 16)
114 (a[n] = (PCRE2_UCHAR)((d) >> 16)), \
115 (a[(n)+1] = (PCRE2_UCHAR)((d) >> 8)), \
116 (a[(n)+2] = (PCRE2_UCHAR)((d) & 255))
118 (unsigned int)(((a)[n] << 16) | ((a)[(n)+1] << 8) | (a)[(n)+2])
119#define MAX_PATTERN_SIZE (1 << 24)
123 (a[n] = (PCRE2_UCHAR)((d) >> 24)), \
124 (a[(n)+1] = (PCRE2_UCHAR)((d) >> 16)), \
125 (a[(n)+2] = (PCRE2_UCHAR)((d) >> 8)), \
126 (a[(n)+3] = (PCRE2_UCHAR)((d) & 255))
128 (unsigned int)(((a)[n] << 24) | ((a)[(n)+1] << 16) | ((a)[(n)+2] << 8) | (a)[(n)+3])
129#define MAX_PATTERN_SIZE (1 << 30)
132#error LINK_SIZE must be 2, 3, or 4
138#elif PCRE2_CODE_UNIT_WIDTH == 16
144 (a[n] = (PCRE2_UCHAR)(d))
147#define MAX_PATTERN_SIZE (1 << 16)
149#elif LINK_SIZE == 3 || LINK_SIZE == 4
153 (a[n] = (PCRE2_UCHAR)((d) >> 16)), \
154 (a[(n)+1] = (PCRE2_UCHAR)((d) & 65535))
156 (unsigned int)(((a)[n] << 16) | (a)[(n)+1])
157#define MAX_PATTERN_SIZE (1 << 30)
160#error LINK_SIZE must be 2, 3, or 4
166#elif PCRE2_CODE_UNIT_WIDTH == 32
173#define MAX_PATTERN_SIZE (1 << 30)
176#error Unsupported compiling mode
192#if PCRE2_CODE_UNIT_WIDTH == 8
194#define GET2(a,n) (unsigned int)(((a)[n] << 8) | (a)[(n)+1])
195#define PUT2(a,n,d) a[n] = (d) >> 8, a[(n)+1] = (d) & 255
199#define GET2(a,n) a[n]
200#define PUT2(a,n,d) a[n] = d
211#if PCRE2_CODE_UNIT_WIDTH == 8
212#define MAX_255(c) TRUE
213#define MAX_MARK ((1u << 8) - 1)
214#define TABLE_GET(c, table, default) ((table)[c])
215#ifdef SUPPORT_UNICODE
216#define SUPPORT_WIDE_CHARS
217#define CHMAX_255(c) ((c) <= 255u)
219#define CHMAX_255(c) TRUE
223#define CHMAX_255(c) ((c) <= 255u)
224#define MAX_255(c) ((c) <= 255u)
225#define MAX_MARK ((1u << 16) - 1)
226#define SUPPORT_WIDE_CHARS
227#define TABLE_GET(c, table, default) (MAX_255(c)? ((table)[c]):(default))
243#define UCHAR21(eptr) (*(eptr))
244#define UCHAR21TEST(eptr) (*(eptr))
245#define UCHAR21INC(eptr) (*(eptr)++)
246#define UCHAR21INCTEST(eptr) (*(eptr)++)
255#ifndef SUPPORT_UNICODE
261#define GETCHAR(c, eptr) c = *eptr;
262#define GETCHARTEST(c, eptr) c = *eptr;
263#define GETCHARINC(c, eptr) c = *eptr++;
264#define GETCHARINCTEST(c, eptr) c = *eptr++;
265#define GETCHARLEN(c, eptr, len) c = *eptr;
266#define PUTCHAR(c, p) (*p = c, 1)
277#if PCRE2_CODE_UNIT_WIDTH == 8
278#define MAYBE_UTF_MULTI
282#define MAX_UTF_SINGLE_CU 127
286#define HAS_EXTRALEN(c) HASUTF8EXTRALEN(c)
291#define GET_EXTRALEN(c) (PRIV(utf8_table4)[(c) & 0x3fu])
296#define NOT_FIRSTCU(c) (((c) & 0xc0u) == 0x80u)
301#define GETCHAR(c, eptr) \
303 if (c >= 0xc0u) GETUTF8(c, eptr);
308#define GETCHARTEST(c, eptr) \
310 if (utf && c >= 0xc0u) GETUTF8(c, eptr);
315#define GETCHARINC(c, eptr) \
317 if (c >= 0xc0u) GETUTF8INC(c, eptr);
322#define GETCHARINCTEST(c, eptr) \
324 if (utf && c >= 0xc0u) GETUTF8INC(c, eptr);
329#define GETCHARLEN(c, eptr, len) \
331 if (c >= 0xc0u) GETUTF8LEN(c, eptr, len);
337#define GETCHARLENTEST(c, eptr, len) \
339 if (utf && c >= 0xc0u) GETUTF8LEN(c, eptr, len);
345#define BACKCHAR(eptr) while((*eptr & 0xc0u) == 0x80u) eptr--
348#define FORWARDCHAR(eptr) while((*eptr & 0xc0u) == 0x80u) eptr++
349#define FORWARDCHARTEST(eptr,end) while(eptr < end && (*eptr & 0xc0u) == 0x80u) eptr++
352#define ACROSSCHAR(condition, eptr, action) \
353 while((condition) && ((*eptr) & 0xc0u) == 0x80u) action
357#define PUTCHAR(c, p) ((utf && c > MAX_UTF_SINGLE_CU)? \
358 PRIV(ord2utf)(c,p) : (*p = c, 1))
363#elif PCRE2_CODE_UNIT_WIDTH == 16
364#define MAYBE_UTF_MULTI
368#define MAX_UTF_SINGLE_CU 65535
372#define HAS_EXTRALEN(c) (((c) & 0xfc00u) == 0xd800u)
377#define GET_EXTRALEN(c) 1
382#define NOT_FIRSTCU(c) (((c) & 0xfc00u) == 0xdc00u)
387#define GETUTF16(c, eptr) \
388 { c = (((c & 0x3ffu) << 10) | (eptr[1] & 0x3ffu)) + 0x10000u; }
393#define GETCHAR(c, eptr) \
395 if ((c & 0xfc00u) == 0xd800u) GETUTF16(c, eptr);
400#define GETCHARTEST(c, eptr) \
402 if (utf && (c & 0xfc00u) == 0xd800u) GETUTF16(c, eptr);
407#define GETUTF16INC(c, eptr) \
408 { c = (((c & 0x3ffu) << 10) | (*eptr++ & 0x3ffu)) + 0x10000u; }
413#define GETCHARINC(c, eptr) \
415 if ((c & 0xfc00u) == 0xd800u) GETUTF16INC(c, eptr);
420#define GETCHARINCTEST(c, eptr) \
422 if (utf && (c & 0xfc00u) == 0xd800u) GETUTF16INC(c, eptr);
427#define GETUTF16LEN(c, eptr, len) \
428 { c = (((c & 0x3ffu) << 10) | (eptr[1] & 0x3ffu)) + 0x10000u; len++; }
434#define GETCHARLEN(c, eptr, len) \
436 if ((c & 0xfc00u) == 0xd800u) GETUTF16LEN(c, eptr, len);
442#define GETCHARLENTEST(c, eptr, len) \
444 if (utf && (c & 0xfc00u) == 0xd800u) GETUTF16LEN(c, eptr, len);
451#define BACKCHAR(eptr) if ((*eptr & 0xfc00u) == 0xdc00u) eptr--
454#define FORWARDCHAR(eptr) if ((*eptr & 0xfc00u) == 0xdc00u) eptr++
455#define FORWARDCHARTEST(eptr,end) if (eptr < end && (*eptr & 0xfc00u) == 0xdc00u) eptr++
458#define ACROSSCHAR(condition, eptr, action) \
459 if ((condition) && ((*eptr) & 0xfc00u) == 0xdc00u) action
463#define PUTCHAR(c, p) ((utf && c > MAX_UTF_SINGLE_CU)? \
464 PRIV(ord2utf)(c,p) : (*p = c, 1))
474#define MAX_UTF_SINGLE_CU (0x10ffffu)
475#define HAS_EXTRALEN(c) (0)
476#define GET_EXTRALEN(c) (0)
477#define NOT_FIRSTCU(c) (0)
482#define GETCHAR(c, eptr) \
488#define GETCHARTEST(c, eptr) \
494#define GETCHARINC(c, eptr) \
500#define GETCHARINCTEST(c, eptr) \
507#define GETCHARLEN(c, eptr, len) \
514#define GETCHARLENTEST(c, eptr, len) \
524#define BACKCHAR(eptr) do { } while (0)
528#define FORWARDCHAR(eptr) do { } while (0)
529#define FORWARDCHARTEST(eptr,end) do { } while (0)
533#define ACROSSCHAR(condition, eptr, action) do { } while (0)
537#define PUTCHAR(c, p) (*p = c, 1)
545#define CU2BYTES(x) ((x)*((PCRE2_CODE_UNIT_WIDTH/8)))
546#define BYTES2CU(x) ((x)/((PCRE2_CODE_UNIT_WIDTH/8)))
547#define PUTINC(a,n,d) PUT(a,n,d), a += LINK_SIZE
548#define PUT2INC(a,n,d) PUT2(a,n,d), a += IMM2_SIZE
585 void *jit_callback_data;
614#undef CODE_BLOCKSIZE_TYPE
615#define CODE_BLOCKSIZE_TYPE PCRE2_SIZE
618#define LOOKBEHIND_MAX UINT16_MAX
679#ifndef PCRE2_PCRE2TEST
816#if PCRE2_CODE_UNIT_WIDTH == 8
818#elif PCRE2_CODE_UNIT_WIDTH == 16
859#define HEAPFRAME_ALIGNMENT offsetof(heapframe_align, frame)
#define pcre2_real_match_data
#define pcre2_real_general_context
#define pcre2_substitute_callout_block
#define pcre2_real_compile_context
#define pcre2_real_match_context
#define pcre2_jit_callback
#define pcre2_real_convert_context
#define pcre2_callout_block
#define pcre2_real_jit_stack
#define CODE_BLOCKSIZE_TYPE
char check_heapframe_size[((sizeof(heapframe) % sizeof(PCRE2_SIZE))==0)?(+1):(-1)]
PCRE2_UCHAR * current_branch
struct branch_chain * outer
uint32_t * parsed_pattern_end
PCRE2_SIZE workspace_size
uint32_t class_range_start
uint32_t * parsed_pattern
pcre2_real_compile_context * cx
PCRE2_SIZE small_ref_offset[10]
uint32_t max_varlookbehind
uint32_t named_group_list_size
named_group * named_groups
uint32_t external_options
PCRE2_SPTR start_workspace
int(* callout)(pcre2_callout_block *, void *)
dfa_recursion_info * recursive
PCRE2_SPTR start_used_ptr
uint32_t match_call_count
uint32_t match_limit_depth
PCRE2_SPTR subject_position
struct dfa_recursion_info * prevrec
PCRE2_SIZE last_group_offset
uint32_t group_frame_type
PCRE2_SPTR recurse_last_used
PCRE2_SIZE ovector[131072]
PCRE2_SPTR verb_ecode_ptr
uint32_t verb_current_recurse
int(* callout)(pcre2_callout_block *, void *)
uint32_t match_call_count
uint32_t match_limit_depth
PCRE2_SPTR start_used_ptr
PCRE2_SPTR true_end_subject
PCRE2_SIZE end_offset_top
struct parsed_recurse_check * prev
uint16_t newline_convention
CODE_BLOCKSIZE_TYPE blocksize
int(* stack_guard)(uint32_t, void *)
uint16_t newline_convention
PCRE2_SIZE max_pattern_length
PCRE2_SIZE max_pattern_compiled_length
uint32_t parens_nest_limit
uint32_t max_varlookbehind
int(* callout)(pcre2_callout_block *, void *)
void * substitute_callout_data
int(* substitute_callout)(pcre2_substitute_callout_block *, void *)
PCRE2_SIZE heapframes_size
struct heapframe * heapframes
const pcre2_real_code * code
PCRE2_SIZE subject_length
PCRE2_SIZE ovector[131072]
struct recurse_check * prev