cb->pattern_position = GET(
code, 1 + extracode);
374cb->next_item_length = GET(
code, 1 +
LINK_SIZE+ extracode);
379cb->callout_string_offset = 0;
380cb->callout_string =
NULL;
381cb->callout_string_length = 0;
385cb->callout_number = 0;
386cb->callout_string_offset = GET(
code, 1 + 3*
LINK_SIZE+ extracode);
387cb->callout_string =
code+ (1 + 4*
LINK_SIZE+ extracode) + 1;
388cb->callout_string_length = *lengthptr - (1 + 4*
LINK_SIZE) - 2;
432 uint32_tnewsizeK = newsize/(1024/
sizeof(
int));
436newsize = newsizeK*(1024/
sizeof(
int));
444 new->size = newsize;
483 #define ADD_ACTIVE(x,y) \ 484 if (active_count++ < wscount) \ 486 next_active_state->offset = (x); \ 487 next_active_state->count = (y); \ 488 next_active_state++; \ 490 else return PCRE2_ERROR_DFA_WSSIZE 492 #define ADD_ACTIVE_DATA(x,y,z) \ 493 if (active_count++ < wscount) \ 495 next_active_state->offset = (x); \ 496 next_active_state->count = (y); \ 497 next_active_state->data = (z); \ 498 next_active_state++; \ 500 else return PCRE2_ERROR_DFA_WSSIZE 502 #define ADD_NEW(x,y) \ 503 if (new_count++ < wscount) \ 505 next_new_state->offset = (x); \ 506 next_new_state->count = (y); \ 509 else return PCRE2_ERROR_DFA_WSSIZE 511 #define ADD_NEW_DATA(x,y,z) \ 512 if (new_count++ < wscount) \ 514 next_new_state->offset = (x); \ 515 next_new_state->count = (y); \ 516 next_new_state->data = (z); \ 519 else return PCRE2_ERROR_DFA_WSSIZE 536 stateblock*active_states, *new_states, *temp_states;
537 stateblock*next_active_state, *next_new_state;
538 const uint8_t*ctypes, *lcc, *fcc;
542 intactive_count, new_count, match_count;
551 #ifdef SUPPORT_UNICODE 574active_states = (
stateblock*)(workspace + 2);
575next_new_state = new_states = active_states + wscount;
591end_code = this_start_code;
595 if(back > max_back) max_back = back;
596end_code += GET(end_code, 1);
598 while(*end_code ==
OP_ALT);
603 #ifdef SUPPORT_UNICODE 608 for(gone_back = 0; gone_back < max_back; gone_back++)
610 if(current_subject <= start_subject)
break;
612ACROSSCHAR(current_subject > start_subject, current_subject,
622 size_tcurrent_offset = (size_t)(current_subject - start_subject);
623gone_back = (current_offset < max_back)? current_offset : max_back;
624current_subject -= gone_back;
629 if(current_subject < mb->start_used_ptr)
635end_code = this_start_code;
639 size_tback = (revlen == 0)? 0 : (
size_t)
GET2(end_code, 2+
LINK_SIZE);
640 if(back <= gone_back)
642 intbstate = (
int)(end_code - start_code + 1 +
LINK_SIZE+ revlen);
645end_code += GET(end_code, 1);
647 while(*end_code ==
OP_ALT);
658end_code = this_start_code;
664 do{ end_code += GET(end_code, 1); }
while(*end_code ==
OP_ALT);
665new_count = workspace[1];
667memcpy(new_states, active_states, (
size_t)new_count *
sizeof(
stateblock));
680 ADD_NEW((
int)(end_code - start_code + length), 0);
681end_code += GET(end_code, 1);
684 while(*end_code ==
OP_ALT);
692ptr = current_subject;
700 BOOLcould_continue = reset_could_continue;
701reset_could_continue =
FALSE;
708temp_states = active_states;
709active_states = new_states;
710new_states = temp_states;
711active_count = new_count;
715workspace[1] = active_count;
719next_active_state = active_states + active_count;
720next_new_state = new_states;
726 if(ptr < end_subject)
729 #ifdef SUPPORT_UNICODE 730GETCHARLENTEST(c, ptr, clen);
746 for(
i= 0;
i< active_count;
i++)
752 intstate_offset = current_state->
offset;
761 if(state_offset < 0)
763 if(current_state->
data> 0)
766current_state->
data- 1);
767 if(could_continue) reset_could_continue =
TRUE;
772current_state->
offset= state_offset = -state_offset;
780 for(j = 0; j <
i; j++)
782 if(active_states[j].
offset== state_offset &&
783active_states[j].
count== current_state->
count)
784 gotoNEXT_ACTIVE_STATE;
789 code= start_code + state_offset;
795 if(clen == 0 &&
poptable[codevalue] != 0)
796could_continue =
TRUE;
812 #ifdef SUPPORT_UNICODE 873 if(
code!= end_code)
883 if(ptr > current_subject ||
888 if(match_count < 0) match_count = (offsetcount >= 2)? 1 : 0;
889 else if(match_count > 0 && ++match_count * 2 > (
int)offsetcount)
891 count= ((match_count == 0)? (
int)offsetcount : match_count * 2) - 2;
894 if(offsetcount >= 2)
969 if(ptr >= end_subject)
979 if(ptr == start_subject) {
ADD_ACTIVE(state_offset + 1, 0); }
984 if(ptr == start_subject + start_offset) {
ADD_ACTIVE(state_offset + 1, 0); }
1004could_continue = partial_newline =
TRUE;
1008 ADD_NEW(state_offset + 1, 0);
1016{
ADD_NEW(state_offset + 1, 0); }
1021 if(clen == 0 || (
IS_NEWLINE(ptr) && ptr == end_subject - mb->
nllen))
1034could_continue =
TRUE;
1035 else if(clen == 0 ||
1037(ptr == end_subject - mb->
nllen)
1048reset_could_continue =
TRUE;
1051 elsecould_continue = partial_newline =
TRUE;
1061could_continue =
TRUE;
1062 else if(clen == 0 ||
1073reset_could_continue =
TRUE;
1076 elsecould_continue = partial_newline =
TRUE;
1088 if(clen > 0 && c < 256 &&
1090{
ADD_NEW(state_offset + 1, 0); }
1097 if(clen > 0 && (c >= 256 ||
1099{
ADD_NEW(state_offset + 1, 0); }
1108 intleft_word, right_word;
1110 if(ptr > start_subject)
1114 #if defined SUPPORT_UNICODE && PCRE2_CODE_UNIT_WIDTH != 32 1115 if(
utf) { BACKCHAR(temp); }
1118 #ifdef SUPPORT_UNICODE 1123 intcategory =
PRIV(ucp_gentype)[chartype];
1124left_word = (category ==
ucp_L|| category ==
ucp_N||
1129left_word = d < 256 && (ctypes[d] &
ctype_word) != 0;
1131 elseleft_word =
FALSE;
1138 #if defined SUPPORT_UNICODE && PCRE2_CODE_UNIT_WIDTH != 32 1143 #ifdef SUPPORT_UNICODE 1148 intcategory =
PRIV(ucp_gentype)[chartype];
1149right_word = (category ==
ucp_L|| category ==
ucp_N||
1154right_word = c < 256 && (ctypes[c] &
ctype_word) != 0;
1156 elseright_word =
FALSE;
1158 if((left_word == right_word) ==
1171 #ifdef SUPPORT_UNICODE 1213OK =
PRIV(ucp_gentype)[chartype] ==
ucp_L||
1238OK =
PRIV(ucp_gentype)[chartype] ==
ucp_L||
1239 PRIV(ucp_gentype)[chartype] ==
ucp_N||
1244 #if PCRE2_CODE_UNIT_WIDTH == 32 1251cp =
PRIV(ucd_caseless_sets) +
code[2];
1254 if(c < *cp) { OK =
FALSE;
break; }
1255 if(c == *cp++) { OK =
TRUE;
break; }
1281 if(OK == (codevalue ==
OP_PROP)) {
ADD_NEW(state_offset + 3, 0); }
1307could_continue = partial_newline =
TRUE;
1317next_active_state--;
1338could_continue = partial_newline =
TRUE;
1348next_active_state--;
1350 ADD_NEW(state_offset + 2, 0);
1368could_continue = partial_newline =
TRUE;
1378next_active_state--;
1396could_continue = partial_newline =
TRUE;
1425could_continue = partial_newline =
TRUE;
1435next_active_state--;
1451 #ifdef SUPPORT_UNICODE 1495OK =
PRIV(ucp_gentype)[chartype] ==
ucp_L||
1520OK =
PRIV(ucp_gentype)[chartype] ==
ucp_L||
1521 PRIV(ucp_gentype)[chartype] ==
ucp_N||
1526 #if PCRE2_CODE_UNIT_WIDTH == 32 1533cp =
PRIV(ucd_caseless_sets) +
code[3];
1536 if(c < *cp) { OK =
FALSE;
break; }
1537 if(c == *cp++) { OK =
TRUE;
break; }
1568next_active_state--;
1588next_active_state--;
1628next_active_state--;
1665next_active_state--;
1698next_active_state--;
1707 #ifdef SUPPORT_UNICODE 1760OK =
PRIV(ucp_gentype)[chartype] ==
ucp_L||
1785OK =
PRIV(ucp_gentype)[chartype] ==
ucp_L||
1786 PRIV(ucp_gentype)[chartype] ==
ucp_N||
1791 #if PCRE2_CODE_UNIT_WIDTH == 32 1798cp =
PRIV(ucd_caseless_sets) +
code[3];
1801 if(c < *cp) { OK =
FALSE;
break; }
1802 if(c == *cp++) { OK =
TRUE;
break; }
1834next_active_state--;
1863next_active_state--;
1911next_active_state--;
1955next_active_state--;
1996next_active_state--;
2004 #ifdef SUPPORT_UNICODE 2051OK =
PRIV(ucp_gentype)[chartype] ==
ucp_L||
2076OK =
PRIV(ucp_gentype)[chartype] ==
ucp_L||
2077 PRIV(ucp_gentype)[chartype] ==
ucp_N||
2082 #if PCRE2_CODE_UNIT_WIDTH == 32 2092 if(c < *cp) { OK =
FALSE;
break; }
2093 if(c == *cp++) { OK =
TRUE;
break; }
2124next_active_state--;
2149next_active_state--;
2154reset_could_continue =
TRUE;
2195next_active_state--;
2235next_active_state--;
2272next_active_state--;
2290 if(clen > 0 && c == d) {
ADD_NEW(state_offset + dlen + 1, 0); }
2295 if(clen == 0)
break;
2297 #ifdef SUPPORT_UNICODE 2300 if(c == d) {
ADD_NEW(state_offset + dlen + 1, 0); }
else 2302 unsigned intothercase;
2307 if(d == othercase) {
ADD_NEW(state_offset + dlen + 1, 0); }
2315{
ADD_NEW(state_offset + 2, 0); }
2320 #ifdef SUPPORT_UNICODE 2331end_subject,
utf, &ncount);
2333reset_could_continue =
TRUE;
2345 if(clen > 0)
switch(c)
2358 ADD_NEW(state_offset + 1, 0);
2362 if(ptr + 1 >= end_subject)
2364 ADD_NEW(state_offset + 1, 0);
2366reset_could_continue =
TRUE;
2374 ADD_NEW(state_offset + 1, 0);
2382 if(clen > 0)
switch(c)
2388 ADD_NEW(state_offset + 1, 0);
2395 if(clen > 0)
switch(c)
2398 ADD_NEW(state_offset + 1, 0);
2408 if(clen > 0)
switch(c)
2414 ADD_NEW(state_offset + 1, 0);
2421 if(clen > 0)
switch(c)
2424 ADD_NEW(state_offset + 1, 0);
2436 if(clen > 0 && c != d) {
ADD_NEW(state_offset + dlen + 1, 0); }
2446 #ifdef SUPPORT_UNICODE 2447 if(utf_or_ucp && d >= 128)
2452 if(c != d && c != otherd)
2453{
ADD_NEW(state_offset + dlen + 1, 0); }
2481 #ifdef SUPPORT_UNICODE 2482 if(utf_or_ucp && d >= 128)
2488 if((c == d || c == otherd) == (codevalue <
OP_NOTSTAR))
2494next_active_state--;
2524 #ifdef SUPPORT_UNICODE 2525 if(utf_or_ucp && d >= 128)
2531 if((c == d || c == otherd) == (codevalue <
OP_NOTSTAR))
2536next_active_state--;
2538 ADD_NEW(state_offset + dlen + 1, 0);
2565 #ifdef SUPPORT_UNICODE 2566 if(utf_or_ucp && d >= 128)
2572 if((c == d || c == otherd) == (codevalue <
OP_NOTSTAR))
2577next_active_state--;
2598 #ifdef SUPPORT_UNICODE 2599 if(utf_or_ucp && d >= 128)
2605 if((c == d || c == otherd) == (codevalue <
OP_NOTSTAR))
2638 #ifdef SUPPORT_UNICODE 2639 if(utf_or_ucp && d >= 128)
2645 if((c == d || c == otherd) == (codevalue <
OP_NOTSTAR))
2650next_active_state--;
2669 intnext_state_offset;
2680isinclass = (c > 255)? (codevalue ==
OP_NCLASS) :
2681((((
uint8_t*)(
code+ 1))[c/8] & (1u << (c&7))) != 0);
2699next_state_offset = (
int)(ecode - start_code);
2712next_active_state--;
2728next_active_state--;
2744next_active_state--;
2746 ADD_NEW(next_state_offset + 1, 0);
2763next_active_state--;
2774 if(isinclass) {
ADD_NEW(next_state_offset, 0); }
2796 int*local_workspace;
2804 if(rc != 0)
returnrc;
2812 while(*endasscode ==
OP_ALT) endasscode += GET(endasscode, 1);
2838 intcodelink = (
int)GET(
code, 1);
2851 if(rrc < 0)
returnrrc;
2852 if(rrc > 0)
break;
2853 code+= callout_length;
2873 else if(condcode ==
OP_TRUE)
2880 else if(condcode ==
OP_RREF)
2894 int*local_workspace;
2897 PCRE2_SPTRendasscode = asscode + GET(asscode, 1);
2903 if(rc != 0)
returnrc;
2911 while(*endasscode ==
OP_ALT) endasscode += GET(endasscode, 1);
2941 int*local_workspace;
2951 if(rc != 0)
returnrc;
2967 if(recno == ri->group_num && ptr == ri->subject_position &&
3006 for(rc = rc*2 - 2; rc >= 0; rc -= 2)
3008 PCRE2_SIZEcharcount = local_offsets[rc+1] - local_offsets[rc];
3009 #if defined SUPPORT_UNICODE && PCRE2_CODE_UNIT_WIDTH != 32 3012 PCRE2_SPTRp = start_subject + local_offsets[rc];
3013 PCRE2_SPTRpp = start_subject + local_offsets[rc+1];
3014 while(p < pp)
if(NOT_FIRSTCU(*p++)) charcount--;
3020(
int)(charcount - 1));
3040 int*local_workspace;
3050 if(rc != 0)
returnrc;
3061codevalue = *(++
code);
3063 elseallow_zero =
FALSE;
3068 for(matched_count = 0;; matched_count++)
3092charcount = local_offsets[1] - local_offsets[0];
3093 if(charcount == 0)
break;
3094local_ptr += charcount;
3103 if(matched_count > 0 || allow_zero)
3106 intnext_state_offset;
3108 do{ end_subpattern += GET(end_subpattern, 1); }
3109 while(*end_subpattern ==
OP_ALT);
3118 if(
i+ 1 >= active_count && new_count == 0)
3122 ADD_NEW(next_state_offset, 0);
3129 #if defined SUPPORT_UNICODE && PCRE2_CODE_UNIT_WIDTH != 32 3130 if(
utf)
while(p < pp)
if(NOT_FIRSTCU(*p++)) charcount--;
3132 ADD_NEW_DATA(-next_state_offset, 0, (
int)(charcount - 1));
3142 int*local_workspace;
3149 if(rc != 0)
returnrc;
3174 PCRE2_SIZEcharcount = local_offsets[1] - local_offsets[0];
3175 intnext_state_offset, repeat_state_offset;
3177 do{ end_subpattern += GET(end_subpattern, 1); }
3178 while(*end_subpattern ==
OP_ALT);
3186repeat_state_offset = (*end_subpattern ==
OP_KETRMAX||
3188(
int)(end_subpattern - start_code - GET(end_subpattern, 1)) : -1;
3205 else if(
i+ 1 >= active_count && new_count == 0)
3209 ADD_NEW(next_state_offset, 0);
3216 if(repeat_state_offset >= 0)
3218next_active_state = active_states;
3226 #if defined SUPPORT_UNICODE && PCRE2_CODE_UNIT_WIDTH != 32 3229 PCRE2_SPTRp = start_subject + local_offsets[0];
3230 PCRE2_SPTRpp = start_subject + local_offsets[1];
3231 while(p < pp)
if(NOT_FIRSTCU(*p++)) charcount--;
3234 ADD_NEW_DATA(-next_state_offset, 0, (
int)(charcount - 1));
3235 if(repeat_state_offset >= 0)
3236{
ADD_NEW_DATA(-repeat_state_offset, 0, (
int)(charcount - 1)); }
3253 if(rrc < 0)
returnrrc;
3255{
ADD_ACTIVE(state_offset + (
int)callout_length, 0); }
3265NEXT_ACTIVE_STATE:
continue;
3284 if(could_continue &&
3285forced_fail != workspace[1] &&
3295ptr >= end_subject &&
3314 if(match_count >= 0 &&
3354 intwas_zero_terminated = 0;
3363 BOOL utf, anchored, startline, firstline;
3367 #if PCRE2_CODE_UNIT_WIDTH == 8 3410was_zero_terminated = 1;
3450 #define FF (PCRE2_NOTEMPTY_SET|PCRE2_NE_ATST_SET) 3451 #define OO (PCRE2_NOTEMPTY|PCRE2_NOTEMPTY_ATSTART) 3452options |= (re->
flags&
FF) / ((
FF& (~
FF+1)) / (
OO& (~
OO+1)));
3461 if((workspace[0] & (-2)) != 0 || workspace[1] < 1 ||
3469start_match =
subject+ start_offset;
3470end_subject =
subject+ length;
3471req_cu_ptr = start_match - 1;
3480bumpalong_limit = end_subject;
3489cb.callout_flags = 0;
3491cb.capture_last = 0;
3498 if(mcontext ==
NULL)
3512bumpalong_limit =
subject+ mcontext->offset_limit;
3514mb->
callout= mcontext->callout;
3516mb->
memctl= mcontext->memctl;
3590 #ifdef SUPPORT_UNICODE 3595 if(start_offset > 0)
3597 #if PCRE2_CODE_UNIT_WIDTH != 32 3599 if(start_match < end_subject && NOT_FIRSTCU(*start_match))
3604 while(check_subject >
subject&&
3606(*check_subject & 0xc0) == 0x80)
3608(*check_subject & 0xfc00) == 0xdc00)
3636has_first_cu =
TRUE;
3641 #ifdef SUPPORT_UNICODE 3642 #if PCRE2_CODE_UNIT_WIDTH == 8 3665 #ifdef SUPPORT_UNICODE 3666 #if PCRE2_CODE_UNIT_WIDTH == 8 3722 #ifdef SUPPORT_UNICODE 3728ACROSSCHAR(
t< end_subject,
t,
t++);
3743 if(has_first_cu || start_bits !=
NULL)
3745 BOOL ok= start_match < end_subject;
3749 ok= has_first_cu && (c == first_cu || c == first_cu2);
3750 if(!
ok&& start_bits !=
NULL)
3752 #if PCRE2_CODE_UNIT_WIDTH != 8 3753 if(c > 255) c = 255;
3755 ok= (start_bits[c/8] & (1u << (c&7))) != 0;
3768 if(first_cu != first_cu2)
3773 #if PCRE2_CODE_UNIT_WIDTH != 8 3775 while(start_match < end_subject &&
3789 PCRE2_SIZEsearchlength = end_subject - start_match;
3795 if(memchr_found_first_cu ==
NULL||
3796start_match > memchr_found_first_cu)
3798pp1 = memchr(start_match, first_cu, searchlength);
3799memchr_found_first_cu = (pp1 ==
NULL)? end_subject : pp1;
3805 elsepp1 = (memchr_found_first_cu == end_subject)?
NULL:
3806memchr_found_first_cu;
3810 if(memchr_found_first_cu2 ==
NULL||
3811start_match > memchr_found_first_cu2)
3813pp2 = memchr(start_match, first_cu2, searchlength);
3814memchr_found_first_cu2 = (pp2 ==
NULL)? end_subject : pp2;
3817 elsepp2 = (memchr_found_first_cu2 == end_subject)?
NULL:
3818memchr_found_first_cu2;
3824start_match = (pp2 ==
NULL)? end_subject : pp2;
3826start_match = (pp2 ==
NULL|| pp1 < pp2)? pp1 : pp2;
3835 #if PCRE2_CODE_UNIT_WIDTH != 8 3836 while(start_match < end_subject &&
UCHAR21TEST(start_match) !=
3840start_match = memchr(start_match, first_cu, end_subject - start_match);
3841 if(start_match ==
NULL) start_match = end_subject;
3867 #ifdef SUPPORT_UNICODE 3870 while(start_match < end_subject && !
WAS_NEWLINE(start_match))
3873ACROSSCHAR(start_match < end_subject, start_match, start_match++);
3878 while(start_match < end_subject && !
WAS_NEWLINE(start_match))
3885 if(start_match[-1] ==
CHAR_CR&&
3887start_match < end_subject &&
3898 else if(start_bits !=
NULL)
3900 while(start_match < end_subject)
3903 #if PCRE2_CODE_UNIT_WIDTH != 8 3904 if(c > 255) c = 255;
3906 if((start_bits[c/8] & (1u << (c&7))) != 0)
break;
3933 if(end_subject - start_match < re->minlength)
gotoNOMATCH_EXIT;
3957p = start_match + (has_first_cu? 1:0);
3958 if(has_req_cu && p > req_cu_ptr)
3960 PCRE2_SIZEcheck_length = end_subject - start_match;
3963(!anchored && check_length <
REQ_CU_MAX* 1000))
3965 if(req_cu != req_cu2)
3967 #if PCRE2_CODE_UNIT_WIDTH != 8 3968 while(p < end_subject)
3971 if(pp == req_cu || pp == req_cu2) { p--;
break; }
3975p = memchr(pp, req_cu, end_subject - pp);
3978p = memchr(pp, req_cu2, end_subject - pp);
3979 if(p ==
NULL) p = end_subject;
3988 #if PCRE2_CODE_UNIT_WIDTH != 8 3989 while(p < end_subject)
3995p = memchr(p, req_cu, end_subject - p);
3996 if(p ==
NULL) p = end_subject;
4003 if(p >= end_subject)
break;
4019 if(start_match > bumpalong_limit)
break;
4037base_recursion_workspace);
4057length =
CU2BYTES(length + was_zero_terminated);
4074 if(firstline &&
IS_NEWLINE(start_match))
break;
4076 #ifdef SUPPORT_UNICODE 4079ACROSSCHAR(start_match < end_subject, start_match, start_match++);
4082 if(start_match > end_subject)
break;
4089start_match < end_subject &&
static DLIST_TYPE *DLIST_NAME() next(DLIST_LIST_TYPE *list, DLIST_TYPE *item)
unsigned int
A callback function used to compare two keys in a database.
const GenericPointer< typename T::ValueType > T2 value
#define TRUE
bool replacment for C indicating true.
#define FALSE
bool replacment for C indicating false.
#define PCRE2_DOLLAR_ENDONLY
#define PCRE2_ZERO_TERMINATED
#define PCRE2_NOTEMPTY_ATSTART
#define PCRE2_ENDANCHORED
#define PCRE2_ERROR_BADMODE
#define PCRE2_ERROR_DFA_UINVALID_UTF
#define PCRE2_ERROR_DFA_UCOND
#define PCRE2_BSR_ANYCRLF
#define PCRE2_ERROR_HEAPLIMIT
#define PCRE2_ERROR_BADOPTION
#define PCRE2_ERROR_NOMATCH
#define PCRE2_ERROR_INTERNAL
#define PCRE2_ERROR_DFA_UITEM
#define PCRE2_MATCH_INVALID_UTF
#define PCRE2_NEWLINE_ANYCRLF
#define PCRE2_COPY_MATCHED_SUBJECT
#define PCRE2_ERROR_BADMAGIC
#define PCRE2_ERROR_BADOFFSET
#define PCRE2_ERROR_RECURSELOOP
#define PCRE2_ERROR_BADOFFSETLIMIT
#define PCRE2_PARTIAL_SOFT
#define PCRE2_ERROR_DFA_BADRESTART
#define PCRE2_PARTIAL_HARD
#define pcre2_match_context
#define PCRE2_ERROR_DEPTHLIMIT
#define PCRE2_DFA_RESTART
#define PCRE2_USE_OFFSET_LIMIT
#define PCRE2_ERROR_MATCHLIMIT
#define PCRE2_ERROR_DFA_RECURSE
#define PCRE2_ERROR_DFA_WSSIZE
#define PCRE2_CALL_CONVENTION
#define PCRE2_ALT_CIRCUMFLEX
#define PCRE2_NEWLINE_CRLF
#define PCRE2_NEWLINE_NUL
#define PCRE2_NO_UTF_CHECK
#define PCRE2_NO_START_OPTIMIZE
#define pcre2_callout_block
#define PCRE2_ERROR_PARTIAL
#define PCRE2_DFA_SHORTEST
#define PCRE2_NEWLINE_ANY
#define PCRE2_ERROR_BADUTFOFFSET
#define PCRE2_ERROR_NOMEMORY
struct stateblock stateblock
static int internal_dfa_match(dfa_match_block *mb, PCRE2_SPTR this_start_code, PCRE2_SPTR current_subject, PCRE2_SIZE start_offset, PCRE2_SIZE *offsets, uint32_t offsetcount, int *workspace, int wscount, uint32_t rlevel, int *RWS)
static const uint8_t poptable[]
static int more_workspace(RWS_anchor **rwsptr, unsigned int ovecsize, dfa_match_block *mb)
struct RWS_anchor RWS_anchor
#define INTS_PER_STATEBLOCK
PCRE2_EXPORT int PCRE2_CALL_CONVENTION pcre2_dfa_match(const pcre2_code *code, PCRE2_SPTR subject, PCRE2_SIZE length, PCRE2_SIZE start_offset, uint32_t options, pcre2_match_data *match_data, pcre2_match_context *mcontext, int *workspace, PCRE2_SIZE wscount)
#define PUBLIC_DFA_MATCH_OPTIONS
static const uint8_t coptable[]
static const uint8_t toptable2[]
static int do_callout_dfa(PCRE2_SPTR code, PCRE2_SIZE *offsets, PCRE2_SPTR current_subject, PCRE2_SPTR ptr, dfa_match_block *mb, PCRE2_SIZE extracode, PCRE2_SIZE *lengthptr)
static const uint8_t toptable1[]
#define ADD_NEW_DATA(x, y, z)
#define PCRE2_CODE_UNIT_WIDTH
@ PCRE2_MATCHEDBY_DFA_INTERPRETER
#define PCRE2_FIRSTMAPSET
#define PCRE2_FIRSTCASELESS
#define CHAR_GRAVE_ACCENT
@ OP_NOT_UCP_WORD_BOUNDARY
#define PCRE2_LASTCASELESS
#define MAX_UTF_CODE_POINT
#define CHAR_COMMERCIAL_AT
#define PCRE2_MD_COPIED_SUBJECT
#define UCD_BIDICLASS(ch)
#define UCD_OTHERCASE(ch)
#define PCRE2_MATCH_EMPTY
#define UCD_SCRIPTX_PROP(prop)
#define UCD_BPROPS_PROP(prop)
#define UCHAR21TEST(eptr)
struct pcre2_real_code pcre2_real_code
#define TABLE_GET(c, table, default)
#define UCHAR21INCTEST(eptr)
#define GETCHARLEN(c, eptr, len)
#define GETCHARTEST(c, eptr)
static PCRE2_SIZE * offsets
static pcre2_match_data * match_data
int valid_utf(PCRE2_SPTR8, PCRE2_SIZE, PCRE2_SIZE *)
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
void *(* malloc)(size_t, void *)
void(* free)(void *, void *)
uint16_t newline_convention
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4