{
RM1=1,
RM2,
RM3,
RM4,
RM5,
RM6,
RM7,
RM8,
RM9,
RM10,
156 RM11,
RM12,
RM13,
RM14,
RM15,
RM16,
RM17,
RM18,
RM19,
RM20,
157 RM21,
RM22,
RM23,
RM24,
RM25,
RM26,
RM27,
RM28,
RM29,
RM30,
160 #ifdef SUPPORT_WIDE_CHARS 161 enum{ RM100=100, RM101 };
164 #ifdef SUPPORT_UNICODE 165 enum{ RM200=200, RM201, RM202, RM203, RM204, RM205, RM206, RM207,
166RM208, RM209, RM210, RM211, RM212, RM213, RM214, RM215,
167RM216, RM217, RM218, RM219, RM220, RM221, RM222, RM223,
178 #define Fback_frame F->back_frame 179 #define Fcapture_last F->capture_last 180 #define Fcurrent_recurse F->current_recurse 181 #define Fecode F->ecode 182 #define Feptr F->eptr 183 #define Fgroup_frame_type F->group_frame_type 184 #define Flast_group_offset F->last_group_offset 185 #define Flength F->length 186 #define Fmark F->mark 187 #define Frdepth F->rdepth 188 #define Fstart_match F->start_match 189 #define Foffset_top F->offset_top 190 #define Foccu F->occu 192 #define Fovector F->ovector 193 #define Freturn_id F->return_id 196 #ifdef DEBUG_FRAMES_DISPLAY 227fprintf(
f,
"FRAMES ");
228vfprintf(
f, s, ap);
231 if(
P!=
NULL) fprintf(
f,
" P=%lu",
232((
char*)
P- (
char*)(
match_data->heapframes))/frame_size);
237 i++, Q = (
heapframe*)((
char*)Q + frame_size))
239fprintf(
f,
"Frame %d type=%x subj=%lu code=%d back=%lu id=%d",
244fprintf(
f,
" lgoffset=unset\n");
304cb->offset_vector = callout_ovector;
307cb->pattern_position = GET(
Fecode, 1);
313cb->callout_string_offset = 0;
314cb->callout_string =
NULL;
315cb->callout_string_length = 0;
319cb->callout_number = 0;
322cb->callout_string_length =
326save0 = callout_ovector[0];
327save1 = callout_ovector[1];
328callout_ovector[0] = callout_ovector[1] =
PCRE2_UNSET;
330callout_ovector[0] = save0;
331callout_ovector[1] = save1;
332cb->callout_flags = 0;
384eptr = eptr_start =
Feptr;
390 #if defined SUPPORT_UNICODE 429 if(c < *pp)
return-1;
430 if(c == *pp++)
break;
440 for(; length > 0; length--)
462 for(; length > 0; length--)
474 if(memcmp(p, eptr,
CU2BYTES(length)) != 0)
return-1;
479*lengthptr = eptr - eptr_start;
531 #define CHECK_PARTIAL()\ 532 if (Feptr >= mb->end_subject) \ 537 #define SCHECK_PARTIAL()\ 538 if (mb->partial != 0 && \ 539 (Feptr > mb->start_used_ptr || mb->allowemptypartial)) \ 542 if (mb->partial > 1) return PCRE2_ERROR_PARTIAL; \ 550 #define RMATCH(ra,rb)\ 616 #ifdef SUPPORT_UNICODE 632 #ifdef SUPPORT_UNICODE 656group_frame_type = 0;
668 if((
heapframe*)((
char*)
N+ frame_size) >= frames_top)
691 intover_bytes =
match_data->heapframes_size % 1024;
692 if(over_bytes) max_delta -= (1024 - over_bytes);
693newsize =
match_data->heapframes_size + max_delta;
703memcpy(
new,
match_data->heapframes, usedsize);
711frames_top = (
heapframe*)((
char*)
new+ newsize);
714 #ifdef DEBUG_SHOW_RMATCH 716 if(group_frame_type != 0)
718fprintf(stderr,
" type=%x ", group_frame_type);
722fprintf(stderr,
"capture=%d",
GF_DATAMASK(group_frame_type));
726fprintf(stderr,
"nocapture op=%d",
GF_DATAMASK(group_frame_type));
730fprintf(stderr,
"condassert op=%d",
GF_DATAMASK(group_frame_type));
734fprintf(stderr,
"recurse=%d",
GF_DATAMASK(group_frame_type));
738fprintf(stderr,
"*** unknown ***");
742fprintf(stderr,
"\n");
767 if(group_frame_type != 0)
772group_frame_type = 0;
785 #ifdef DEBUG_SHOW_OPS 786fprintf(stderr,
"\n++ New frame: type=0x%x subject offset %ld\n",
792 #ifdef DEBUG_SHOW_OPS 820 offset=
P->last_group_offset;
839assert_accept_frame =
F;
849 #ifdef DEBUG_SHOW_OPS 850fprintf(stderr,
"++ Accept within recursion\n");
859 offset=
P->last_group_offset;
891 #ifdef DEBUG_SHOW_OPS 892fprintf(stderr,
"++ Backtrack because empty string\n");
902 if(Feptr < mb->end_subject &&
907 #ifdef DEBUG_SHOW_OPS 908fprintf(stderr,
"++ Backtrack because not at end (endanchored set)\n");
913 #ifdef DEBUG_SHOW_OPS 914fprintf(stderr,
"++ Failed ACCEPT not at end (endanchnored set)\n");
936 i= 2 * ((top_bracket + 1 >
match_data->oveccount)?
969 #ifdef SUPPORT_UNICODE 970 if(
utf) ACROSSCHAR(Feptr < mb->end_subject,
Feptr,
Feptr++);
996 #ifdef SUPPORT_UNICODE 1041 #ifdef SUPPORT_UNICODE 1118 #ifdef SUPPORT_UNICODE 1134ch = (mb->
fcc)[ch];
1157ch = (mb->
fcc)[ch];
1180 #define Loclength F->temp_size 1181 #define Lstart_eptr F->temp_sptr[0] 1182 #define Lcharptr F->temp_sptr[1] 1183 #define Lmin F->temp_32[0] 1184 #define Lmax F->temp_32[1] 1185 #define Lc F->temp_32[2] 1186 #define Loc F->temp_32[3] 1277 #ifdef SUPPORT_UNICODE 1296 for(
i= 1;
i<=
Lmin;
i++)
1298 if(Feptr <= mb->end_subject -
Flength&&
1320 if(Feptr <= mb->end_subject -
Flength&&
1340 if(Feptr <= mb->end_subject -
Flength&&
1387 #if PCRE2_CODE_UNIT_WIDTH == 8 1388 #ifdef SUPPORT_UNICODE 1395 #ifdef SUPPORT_UNICODE 1402 for(
i= 1;
i<=
Lmin;
i++)
1448 if(
Lc!= cc &&
Loc!= cc)
break;
1465 for(
i= 1;
i<=
Lmin;
i++)
1536 #define Lstart_eptr F->temp_sptr[0] 1537 #define Lmin F->temp_32[0] 1538 #define Lmax F->temp_32[1] 1539 #define Lc F->temp_32[2] 1540 #define Loc F->temp_32[3] 1628 #ifdef SUPPORT_UNICODE 1629 if((
utf|| ucp) &&
Lc> 127)
1636 #ifdef SUPPORT_UNICODE 1640 for(
i= 1;
i<=
Lmin;
i++)
1656 for(
i= 1;
i<=
Lmin;
i++)
1672 #ifdef SUPPORT_UNICODE 1718 #ifdef SUPPORT_UNICODE 1731 if(
Lc== d ||
Loc== d)
break;
1778 #ifdef SUPPORT_UNICODE 1782 for(
i= 1;
i<=
Lmin;
i++)
1797 for(
i= 1;
i<=
Lmin;
i++)
1812 #ifdef SUPPORT_UNICODE 1856 #ifdef SUPPORT_UNICODE 1869 if(
Lc== d)
break;
1927 #define Lmin F->temp_32[0] 1928 #define Lmax F->temp_32[1] 1929 #define Lstart_eptr F->temp_sptr[0] 1930 #define Lbyte_map_address F->temp_sptr[1] 1931 #define Lbyte_map ((unsigned char *)Lbyte_map_address) 1976 #ifdef SUPPORT_UNICODE 1979 for(
i= 1;
i<=
Lmin;
i++)
1999 for(
i= 1;
i<=
Lmin;
i++)
2007 #if PCRE2_CODE_UNIT_WIDTH != 8 2027 #ifdef SUPPORT_UNICODE 2064 #if PCRE2_CODE_UNIT_WIDTH != 8 2083 #ifdef SUPPORT_UNICODE 2100 if((
Lbyte_map[fc/8] & (1u << (fc&7))) == 0)
break;
2130 #if PCRE2_CODE_UNIT_WIDTH != 8 2137 if((
Lbyte_map[fc/8] & (1u << (fc&7))) == 0)
break;
2156 #undef Lbyte_map_address 2169 #define Lstart_eptr F->temp_sptr[0] 2170 #define Lxclass_data F->temp_sptr[1] 2171 #define Lmin F->temp_32[0] 2172 #define Lmax F->temp_32[1] 2174 #ifdef SUPPORT_WIDE_CHARS 2214 for(
i= 1;
i<=
Lmin;
i++)
2263 #ifdef SUPPORT_UNICODE 2283 #ifdef SUPPORT_UNICODE 2473 #ifdef SUPPORT_UNICODE 2501 if((chartype ==
ucp_Lu||
2503chartype ==
ucp_Lt) == notmatch)
2534 if((
PRIV(ucp_gentype)[chartype] ==
ucp_L||
2535 PRIV(ucp_gentype)[chartype] ==
ucp_N) == notmatch)
2561 if((
PRIV(ucp_gentype)[chartype] ==
ucp_L||
2562 PRIV(ucp_gentype)[chartype] ==
ucp_N||
2564chartype ==
ucp_Pc) == notmatch)
2569 #if PCRE2_CODE_UNIT_WIDTH == 32 2572 if(notmatch)
break;;
2589fc >= 0xe000) == notmatch)
2645 #define Lstart_eptr F->temp_sptr[0] 2646 #define Lmin F->temp_32[0] 2647 #define Lmax F->temp_32[1] 2648 #define Lctype F->temp_32[2] 2649 #define Lpropvalue F->temp_32[3] 2708 #ifdef SUPPORT_UNICODE 2725 #ifdef SUPPORT_UNICODE 2733 for(
i= 1;
i<=
Lmin;
i++)
2745 for(
i= 1;
i<=
Lmin;
i++)
2755 if((chartype ==
ucp_Lu||
2757chartype ==
ucp_Lt) == notmatch)
2763 for(
i= 1;
i<=
Lmin;
i++)
2777 for(
i= 1;
i<=
Lmin;
i++)
2791 for(
i= 1;
i<=
Lmin;
i++)
2805 for(
i= 1;
i<=
Lmin;
i++)
2818 if(
ok== notmatch)
2824 for(
i= 1;
i<=
Lmin;
i++)
2834 if((category ==
ucp_L|| category ==
ucp_N) == notmatch)
2845 for(
i= 1;
i<=
Lmin;
i++)
2869 for(
i= 1;
i<=
Lmin;
i++)
2871 intchartype, category;
2879category =
PRIV(ucp_gentype)[chartype];
2880 if((category ==
ucp_L|| category ==
ucp_N||
2881chartype ==
ucp_Mn|| chartype ==
ucp_Pc) == notmatch)
2887 for(
i= 1;
i<=
Lmin;
i++)
2896 #if PCRE2_CODE_UNIT_WIDTH == 32 2899 if(notmatch)
continue;
2908 if(notmatch)
break;
2921 for(
i= 1;
i<=
Lmin;
i++)
2931fc >= 0xe000) == notmatch)
2937 for(
i= 1;
i<=
Lmin;
i++)
2951 for(
i= 1;
i<=
Lmin;
i++)
2964 if(
ok== notmatch)
2981 for(
i= 1;
i<=
Lmin;
i++)
3002 #ifdef SUPPORT_UNICODE 3006 for(
i= 1;
i<=
Lmin;
i++)
3024ACROSSCHAR(Feptr < mb->end_subject,
Feptr,
Feptr++);
3029 for(
i= 1;
i<=
Lmin;
i++)
3037ACROSSCHAR(Feptr < mb->end_subject,
Feptr,
Feptr++);
3047 for(
i= 1;
i<=
Lmin;
i++)
3080 for(
i= 1;
i<=
Lmin;
i++)
3097 for(
i= 1;
i<=
Lmin;
i++)
3114 for(
i= 1;
i<=
Lmin;
i++)
3131 for(
i= 1;
i<=
Lmin;
i++)
3148 for(
i= 1;
i<=
Lmin;
i++)
3162 for(
i= 1;
i<=
Lmin;
i++)
3179 for(
i= 1;
i<=
Lmin;
i++)
3191ACROSSCHAR(Feptr < mb->end_subject,
Feptr,
Feptr++);
3196 for(
i= 1;
i<=
Lmin;
i++)
3213 for(
i= 1;
i<=
Lmin;
i++)
3225ACROSSCHAR(Feptr < mb->end_subject,
Feptr,
Feptr++);
3230 for(
i= 1;
i<=
Lmin;
i++)
3259 for(
i= 1;
i<=
Lmin;
i++)
3303 for(
i= 1;
i<=
Lmin;
i++)
3324 #if PCRE2_CODE_UNIT_WIDTH != 8 3335 for(
i= 1;
i<=
Lmin;
i++)
3346 #if PCRE2_CODE_UNIT_WIDTH != 8 3355 for(
i= 1;
i<=
Lmin;
i++)
3366 #if PCRE2_CODE_UNIT_WIDTH != 8 3375 for(
i= 1;
i<=
Lmin;
i++)
3385 #if PCRE2_CODE_UNIT_WIDTH != 8 3395 for(
i= 1;
i<=
Lmin;
i++)
3406 #if PCRE2_CODE_UNIT_WIDTH != 8 3415 for(
i= 1;
i<=
Lmin;
i++)
3429 for(
i= 1;
i<=
Lmin;
i++)
3443 for(
i= 1;
i<=
Lmin;
i++)
3457 for(
i= 1;
i<=
Lmin;
i++)
3471 for(
i= 1;
i<=
Lmin;
i++)
3485 for(
i= 1;
i<=
Lmin;
i++)
3514 #ifdef SUPPORT_UNICODE 3549 if((chartype ==
ucp_Lu||
3683 intchartype, category;
3694category =
PRIV(ucp_gentype)[chartype];
3695 if((category ==
ucp_L||
3696category ==
ucp_N||
3716 #if PCRE2_CODE_UNIT_WIDTH == 32 3833 #ifdef SUPPORT_UNICODE 4009 #if PCRE2_CODE_UNIT_WIDTH != 8 4024 #if PCRE2_CODE_UNIT_WIDTH != 8 4036 #if PCRE2_CODE_UNIT_WIDTH != 8 4048 #if PCRE2_CODE_UNIT_WIDTH != 8 4060 #if PCRE2_CODE_UNIT_WIDTH != 8 4114 #ifdef SUPPORT_UNICODE 4130 if(notmatch)
break;
4147 if((chartype ==
ucp_Lu||
4149chartype ==
ucp_Lt) == notmatch)
4215 if(
ok== notmatch)
break;
4232 if((category ==
ucp_L|| category ==
ucp_N) == notmatch)
4257 if(notmatch)
gotoENDLOOP99;
4273 intchartype, category;
4282category =
PRIV(ucp_gentype)[chartype];
4283 if((category ==
ucp_L||
4284category ==
ucp_N||
4286chartype ==
ucp_Pc) == notmatch)
4303 #if PCRE2_CODE_UNIT_WIDTH == 32 4306 if(!notmatch)
gotoGOT_MAX;
4315{
if(notmatch)
break;
else gotoGOT_MAX; }
4317{
if(notmatch)
gotoGOT_MAX;
else break; }
4338fc >= 0xe000) == notmatch)
4374 if(
ok== notmatch)
break;
4456 if(!
utf) fc = *fptr;
else 4462 if((
PRIV(ucp_gbtable)[
lgb] & (1u << rgb)) == 0)
break;
4472 #ifdef SUPPORT_UNICODE 4496ACROSSCHAR(Feptr < mb->end_subject,
Feptr,
Feptr++);
4511ACROSSCHAR(Feptr < mb->end_subject,
Feptr,
Feptr++);
4554&& fc != 0x2028 && fc != 0x2029
4578 default: gotspace =
FALSE;
break;
4600 default: gotspace =
FALSE;
break;
4778&& fc != 0x2028 && fc != 0x2029
4796 default:
Feptr++;
break;
4798 #if PCRE2_CODE_UNIT_WIDTH != 8 4817 default:
gotoENDLOOP01;
4819 #if PCRE2_CODE_UNIT_WIDTH != 8 4838 default:
Feptr++;
break;
4840 #if PCRE2_CODE_UNIT_WIDTH != 8 4859 default:
gotoENDLOOP03;
4861 #if PCRE2_CODE_UNIT_WIDTH != 8 4988 #define Lmin F->temp_32[0] 4989 #define Lmax F->temp_32[1] 4990 #define Lcaseless F->temp_32[2] 4991 #define Lstart F->temp_sptr[0] 4992 #define Loffset F->temp_size 5002 while(
count-- > 0)
5078 for(
i= 1;
i<=
Lmin;
i++)
5135 if(rrc > 0 && mb->
partial!= 0 &&
5222 #define Lnext_ecode F->temp_sptr[0] 5254 #define Lframe_type F->temp_32[0] 5255 #define Lmatched_once F->temp_32[1] 5256 #define Lzero_allowed F->temp_32[2] 5257 #define Lstart_eptr F->temp_sptr[0] 5258 #define Lstart_group F->temp_sptr[1] 5264 gotoPOSSESSIVE_CAPTURE;
5265 gotoPOSSESSIVE_NON_CAPTURE;
5271POSSESSIVE_NON_CAPTURE:
5273 gotoPOSSESSIVE_GROUP;
5330 #undef Lmatched_once 5331 #undef Lzero_allowed 5346 #define Lframe_type F->temp_32[0] 5347 #define Lnext_branch F->temp_sptr[0] 5424 #define Lframe_type F->temp_32[0] 5425 #define Lstart_branch F->temp_sptr[0] 5452 offset=
P->last_group_offset;
5500 #undef Lstart_branch 5509 #define Lframe_type F->temp_32[0] 5545 #define Lframe_type F->temp_32[0] 5571 gotoASSERT_NOT_FAILED;
5658 while(
count-- > 0)
5662 if(condition)
break;
5677 while(
count-- > 0)
5681 if(condition)
break;
5698 #define Lpositive F->temp_32[0] 5699 #define Lstart_branch F->temp_sptr[0] 5761 #undef Lstart_branch 5795 #ifdef SUPPORT_UNICODE 5830 #define Lmin F->temp_32[0] 5831 #define Lmax F->temp_32[1] 5832 #define Leptr F->temp_sptr[0] 5843 #ifdef SUPPORT_UNICODE 5880 #ifdef SUPPORT_UNICODE 5913 if(branch_end ==
NULL) branch_end =
Fecode;
5914branch_start = bracode;
5915 while(branch_start + GET(branch_start, 1) != branch_end)
5916branch_start += GET(branch_start, 1);
5928 #ifdef DEBUG_SHOW_RMATCH 5929fprintf(stderr,
"++ KET for frame=%d type=%x prev char offset=%lu\n",
5930 N->rdepth,
N->group_frame_type,
6028 if((
P->ecode)[y] !=
OP_ALT)
break;
6168 if(Feptr < mb->end_subject &&
6215 if(Feptr < mb->end_subject)
6272 #ifdef SUPPORT_UNICODE 6282 #ifdef SUPPORT_UNICODE 6286 intcategory =
PRIV(ucp_gentype)[chartype];
6287prev_is_word = (category ==
ucp_L|| category ==
ucp_N||
6300cur_is_word =
FALSE;
6305 #ifdef SUPPORT_UNICODE 6315 #ifdef SUPPORT_UNICODE 6319 intcategory =
PRIV(ucp_gentype)[chartype];
6320cur_is_word = (category ==
ucp_L|| category ==
ucp_N||
6331cur_is_word == prev_is_word : cur_is_word != prev_is_word)
6467 #define LBL(val) case val: goto L_RM##val; 6471 if(
Frdepth== 0)
returnrrc;
6475 #ifdef DEBUG_SHOW_RMATCH 6476fprintf(stderr,
"++ RETURN %d to RM%d\n", rrc,
Freturn_id);
6487 #ifdef SUPPORT_WIDE_CHARS 6491 #ifdef SUPPORT_UNICODE 6535 intwas_zero_terminated = 0;
6545 #if PCRE2_CODE_UNIT_WIDTH == 8 6572 #ifdef SUPPORT_UNICODE 6601start_match =
subject+ start_offset;
6602req_cu_ptr = start_match - 1;
6606was_zero_terminated = 1;
6608true_end_subject = end_subject =
subject+ length;
6633 #define FF (PCRE2_NOTEMPTY_SET|PCRE2_NE_ATST_SET) 6634 #define OO (PCRE2_NOTEMPTY|PCRE2_NOTEMPTY_ATSTART) 6635options |= (re->
flags&
FF) / ((
FF& (~
FF+1)) / (
OO& (~
OO+1)));
6650 #ifdef SUPPORT_UNICODE 6703 #ifdef SUPPORT_UNICODE 6706 #if PCRE2_CODE_UNIT_WIDTH != 32 6713 #if PCRE2_CODE_UNIT_WIDTH != 32 6714 if(start_match < end_subject && NOT_FIRSTCU(*start_match))
6717 #if PCRE2_CODE_UNIT_WIDTH == 8 6728 #if PCRE2_CODE_UNIT_WIDTH != 32 6732 while(start_match >
subject&&
6734(*start_match & 0xc0) == 0x80)
6736(*start_match & 0xfc00) == 0xdc00)
6762jit_checked_utf =
TRUE;
6776length =
CU2BYTES(length + was_zero_terminated);
6813 #ifdef SUPPORT_UNICODE 6820 #if PCRE2_CODE_UNIT_WIDTH != 32 6828 #if PCRE2_CODE_UNIT_WIDTH != 32 6831 while(start_match < end_subject && NOT_FIRSTCU(*start_match))
6834skipped_bad_start =
TRUE;
6837 else if(start_match < end_subject && NOT_FIRSTCU(*start_match))
6840 #if PCRE2_CODE_UNIT_WIDTH == 8 6857 #if PCRE2_CODE_UNIT_WIDTH != 32 6858 if(!skipped_bad_start)
6910 if(end_subject < start_match)
6913 #if PCRE2_CODE_UNIT_WIDTH != 32 6917end_subject = true_end_subject;
6934 if(mcontext ==
NULL)
6939 elsemb->
memctl= mcontext->memctl;
6944bumpalong_limit = (mcontext->offset_limit ==
PCRE2_UNSET)?
6945true_end_subject :
subject+ mcontext->offset_limit;
6954cb.callout_flags = 0;
6959mb->
callout= mcontext->callout;
7053heapframes_size = frame_size * 10;
7055 if(heapframes_size / 1024 > mb->
heap_limit)
7059heapframes_size = max_size;
7065 if(
match_data->heapframes_size < heapframes_size)
7076 match_data->heapframes_size = heapframes_size;
7096has_first_cu =
TRUE;
7101 #ifdef SUPPORT_UNICODE 7102 #if PCRE2_CODE_UNIT_WIDTH == 8 7123 #ifdef SUPPORT_UNICODE 7124 #if PCRE2_CODE_UNIT_WIDTH == 8 7139 #ifdef SUPPORT_UNICODE 7143start_partial = match_partial =
NULL;
7146 #if PCRE2_CODE_UNIT_WIDTH == 8 7147memchr_found_first_cu =
NULL;
7148memchr_found_first_cu2 =
NULL;
7173 #ifdef SUPPORT_UNICODE 7179ACROSSCHAR(
t< end_subject,
t,
t++);
7194 if(has_first_cu || start_bits !=
NULL)
7196 BOOL ok= start_match < end_subject;
7200 ok= has_first_cu && (c == first_cu || c == first_cu2);
7201 if(!
ok&& start_bits !=
NULL)
7203 #if PCRE2_CODE_UNIT_WIDTH != 8 7204 if(c > 255) c = 255;
7206 ok= (start_bits[c/8] & (1u << (c&7))) != 0;
7223 if(first_cu != first_cu2)
7228 #if PCRE2_CODE_UNIT_WIDTH != 8 7230 while(start_match < end_subject &&
7244 PCRE2_SIZEsearchlength = end_subject - start_match;
7250 if(memchr_found_first_cu ==
NULL||
7251start_match > memchr_found_first_cu)
7253pp1 = memchr(start_match, first_cu, searchlength);
7254memchr_found_first_cu = (pp1 ==
NULL)? end_subject : pp1;
7260 elsepp1 = (memchr_found_first_cu == end_subject)?
NULL:
7261memchr_found_first_cu;
7265 if(memchr_found_first_cu2 ==
NULL||
7266start_match > memchr_found_first_cu2)
7268pp2 = memchr(start_match, first_cu2, searchlength);
7269memchr_found_first_cu2 = (pp2 ==
NULL)? end_subject : pp2;
7272 elsepp2 = (memchr_found_first_cu2 == end_subject)?
NULL:
7273memchr_found_first_cu2;
7279start_match = (pp2 ==
NULL)? end_subject : pp2;
7281start_match = (pp2 ==
NULL|| pp1 < pp2)? pp1 : pp2;
7290 #if PCRE2_CODE_UNIT_WIDTH != 8 7291 while(start_match < end_subject &&
UCHAR21TEST(start_match) !=
7295start_match = memchr(start_match, first_cu, end_subject - start_match);
7296 if(start_match ==
NULL) start_match = end_subject;
7325 #ifdef SUPPORT_UNICODE 7328 while(start_match < end_subject && !
WAS_NEWLINE(start_match))
7331ACROSSCHAR(start_match < end_subject, start_match, start_match++);
7336 while(start_match < end_subject && !
WAS_NEWLINE(start_match))
7343 if(start_match[-1] ==
CHAR_CR&&
7345start_match < end_subject &&
7356 else if(start_bits !=
NULL)
7358 while(start_match < end_subject)
7361 #if PCRE2_CODE_UNIT_WIDTH != 8 7362 if(c > 255) c = 255;
7364 if((start_bits[c/8] & (1u << (c&7))) != 0)
break;
7393 if(end_subject - start_match < re->minlength)
7421p = start_match + (has_first_cu? 1:0);
7422 if(has_req_cu && p > req_cu_ptr)
7424 PCRE2_SIZEcheck_length = end_subject - start_match;
7427(!anchored && check_length <
REQ_CU_MAX* 1000))
7429 if(req_cu != req_cu2)
7431 #if PCRE2_CODE_UNIT_WIDTH != 8 7432 while(p < end_subject)
7435 if(pp == req_cu || pp == req_cu2) { p--;
break; }
7439p = memchr(pp, req_cu, end_subject - pp);
7442p = memchr(pp, req_cu2, end_subject - pp);
7443 if(p ==
NULL) p = end_subject;
7452 #if PCRE2_CODE_UNIT_WIDTH != 8 7453 while(p < end_subject)
7459p = memchr(p, req_cu, end_subject - p);
7460 if(p ==
NULL) p = end_subject;
7467 if(p >= end_subject)
7487 if(start_match > bumpalong_limit)
7501 #ifdef SUPPORT_UNICODE 7502mb->
moptions= options | fragment_options;
7510 #ifdef DEBUG_SHOW_OPS 7511fprintf(stderr,
"++ Calling match()\n");
7517 #ifdef DEBUG_SHOW_OPS 7518fprintf(stderr,
"++ match() returned %d\n\n", rc);
7524match_partial = start_match;
7537new_start_match = start_match;
7559new_start_match = start_match + 1;
7560 #ifdef SUPPORT_UNICODE 7562ACROSSCHAR(new_start_match < end_subject, new_start_match,
7588 if(firstline &&
IS_NEWLINE(start_match))
break;
7592start_match = new_start_match;
7597 if(anchored || start_match > end_subject)
break;
7606 if(start_match >
subject+ start_offset &&
7608start_match < end_subject &&
7646 #ifdef SUPPORT_UNICODE 7647 if(
utf&& end_subject != true_end_subject &&
7655start_match = end_subject + 1;
7657 #if PCRE2_CODE_UNIT_WIDTH != 32 7658 while(start_match < true_end_subject && NOT_FIRSTCU(*start_match))
7665 if(start_match >= true_end_subject)
7668match_partial =
NULL;
7682mb->
end_subject= end_subject = true_end_subject;
7684 gotoFRAGMENT_RESTART;
7693 if(end_subject > start_match)
7696 gotoFRAGMENT_RESTART;
7725length =
CU2BYTES(length + was_zero_terminated);
7752 else if(match_partial !=
NULL)
unsigned int
A callback function used to compare two keys in a database.
where boath are integers</td > n< td ></td > n</tr > n< tr > n< td > tse</td > n< td > optional</td > n< td > String</td > n< td class=\"description\"> TSE option controls what blob is smart and slim</td> n<td> orig</td> n</tr> n<tr> n<td> last_modified</td> n<td> optional</td> n<td> Integer</td> n<td class=\"description\"> The blob last modification If provided then the exact match will be requested with n the Cassandra storage corresponding field value</td> n<td> Positive integer Not provided means that the most recent match will be selected</td> n<td></td> n</tr> n<tr> n<td> use_cache</td> n<td> optional</td> n<td> String</td> n<td class=\"description\"> The option controls if the Cassandra LMDB cache and or database should be used It n affects the seq id resolution step and the blob properties lookup step The following n options are available
int strcmp(const char *str1, const char *str2)
#define F(x)
Make a parametrized function appear to have only one variable.
#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_BSR_ANYCRLF
#define PCRE2_ERROR_HEAPLIMIT
#define PCRE2_ERROR_BADOPTION
#define PCRE2_ERROR_NOMATCH
#define PCRE2_ERROR_INTERNAL
#define PCRE2_ERROR_JIT_BADOPTION
#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_MATCH_UNSET_BACKREF
#define PCRE2_PARTIAL_SOFT
#define PCRE2_ERROR_UTF16_ERR3
#define PCRE2_CALLOUT_STARTMATCH
#define PCRE2_PARTIAL_HARD
#define pcre2_match_context
#define PCRE2_ERROR_UTF8_ERR20
#define PCRE2_ERROR_DEPTHLIMIT
#define PCRE2_CALLOUT_BACKTRACK
#define PCRE2_USE_OFFSET_LIMIT
#define PCRE2_ERROR_MATCHLIMIT
#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_NEWLINE_ANY
#define PCRE2_DISABLE_RECURSELOOP_CHECK
#define PCRE2_ERROR_BADUTFOFFSET
#define PCRE2_ERROR_NOMEMORY
#define PCRE2_CODE_UNIT_WIDTH
@ PCRE2_MATCHEDBY_INTERPRETER
#define PCRE2_FIRSTMAPSET
#define PCRE2_FIRSTCASELESS
#define VSPACE_MULTIBYTE_CASES
#define CHAR_GRAVE_ACCENT
@ OP_NOT_UCP_WORD_BOUNDARY
#define PCRE2_LASTCASELESS
#define MAX_UTF_CODE_POINT
#define CHAR_COMMERCIAL_AT
#define UCD_BIDICLASS_PROP(prop)
#define PCRE2_MD_COPIED_SUBJECT
#define HSPACE_MULTIBYTE_CASES
#define START_FRAMES_SIZE
#define UCD_BIDICLASS(ch)
#define VSPACE_BYTE_CASES
#define UCD_OTHERCASE(ch)
#define HSPACE_BYTE_CASES
#define PCRE2_MATCH_EMPTY
#define UCD_SCRIPTX_PROP(prop)
#define UCD_BPROPS_PROP(prop)
#define UCD_GRAPHBREAK(ch)
#define HEAPFRAME_ALIGNMENT
#define UCHAR21TEST(eptr)
struct pcre2_real_code pcre2_real_code
#define TABLE_GET(c, table, default)
#define UCHAR21INCTEST(eptr)
#define GETCHARINCTEST(c, eptr)
#define GETCHARLEN(c, eptr, len)
#define GETCHARINC(c, eptr)
PCRE2_EXP_DEFN int PCRE2_CALL_CONVENTION pcre2_jit_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)
static const uint32_t rep_max[]
#define PUBLIC_JIT_MATCH_OPTIONS
#define Flast_group_offset
static const uint32_t rep_typ[]
static const uint32_t rep_min[]
static int match(PCRE2_SPTR start_eptr, PCRE2_SPTR start_ecode, uint16_t top_bracket, PCRE2_SIZE frame_size, pcre2_match_data *match_data, match_block *mb)
#define Fgroup_frame_type
#define Lbyte_map_address
static int match_ref(PCRE2_SIZE offset, BOOL caseless, heapframe *F, match_block *mb, PCRE2_SIZE *lengthptr)
PCRE2_EXPORT int PCRE2_CALL_CONVENTION pcre2_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)
#define MATCH_BACKTRACK_MAX
static int do_callout(heapframe *F, match_block *mb, PCRE2_SIZE *lengthptr)
#define MATCH_BACKTRACK_MIN
#define PUBLIC_MATCH_OPTIONS
static const char * OP_names[]
static pcre2_match_data * match_data
int valid_utf(PCRE2_SPTR8, PCRE2_SIZE, PCRE2_SIZE *)
static SLJIT_INLINE sljit_ins lgb(sljit_gpr r, sljit_s32 d, sljit_gpr x, sljit_gpr b)
PCRE2_SIZE last_group_offset
uint32_t group_frame_type
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
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