Lines Matching refs:pRe
6161 static int re_match(ReCompiled *pRe, const unsigned char *zIn, int nIn){ in re_match() argument
6177 if( pRe->nInit ){ in re_match()
6178 unsigned char x = pRe->zInit[0]; in re_match()
6179 while( in.i+pRe->nInit<=in.mx in re_match()
6181 strncmp((const char*)zIn+in.i, (const char*)pRe->zInit, pRe->nInit)!=0) in re_match()
6185 if( in.i+pRe->nInit>in.mx ) return 0; in re_match()
6188 if( pRe->nState<=(sizeof(aSpace)/(sizeof(aSpace[0])*2)) ){ in re_match()
6192 pToFree = sqlite3_malloc64( sizeof(ReStateNumber)*2*pRe->nState ); in re_match()
6196 aStateSet[1].aState = &aStateSet[0].aState[pRe->nState]; in re_match()
6202 c = pRe->xNextChar(&in); in re_match()
6209 switch( pRe->aOp[x] ){ in re_match()
6211 if( pRe->aArg[x]==c ) re_add_state(pNext, x+1); in re_match()
6252 re_add_state(pThis, x+pRe->aArg[x]); in re_match()
6257 re_add_state(pThis, x+pRe->aArg[x]); in re_match()
6270 int n = pRe->aArg[x]; in re_match()
6273 if( pRe->aOp[x+j]==RE_OP_CC_VALUE ){ in re_match()
6274 if( pRe->aArg[x+j]==c ){ in re_match()
6279 if( pRe->aArg[x+j]<=c && pRe->aArg[x+j+1]>=c ){ in re_match()
6287 if( pRe->aOp[x]==RE_OP_CC_EXC ) hit = !hit; in re_match()
6295 if( pRe->aOp[pNext->aState[i]]==RE_OP_ACCEPT ){ rc = 1; break; } in re_match()
6580 static void re_free(ReCompiled *pRe){ in re_free() argument
6581 if( pRe ){ in re_free()
6582 sqlite3_free(pRe->aOp); in re_free()
6583 sqlite3_free(pRe->aArg); in re_free()
6584 sqlite3_free(pRe); in re_free()
6595 ReCompiled *pRe; in re_compile() local
6600 pRe = sqlite3_malloc( sizeof(*pRe) ); in re_compile()
6601 if( pRe==0 ){ in re_compile()
6604 memset(pRe, 0, sizeof(*pRe)); in re_compile()
6605 pRe->xNextChar = noCase ? re_next_char_nocase : re_next_char; in re_compile()
6606 if( re_resize(pRe, 30) ){ in re_compile()
6607 re_free(pRe); in re_compile()
6613 re_append(pRe, RE_OP_ANYSTAR, 0); in re_compile()
6615 pRe->sIn.z = (unsigned char*)zIn; in re_compile()
6616 pRe->sIn.i = 0; in re_compile()
6617 pRe->sIn.mx = (int)strlen(zIn); in re_compile()
6618 zErr = re_subcompile_re(pRe); in re_compile()
6620 re_free(pRe); in re_compile()
6623 if( rePeek(pRe)=='$' && pRe->sIn.i+1>=pRe->sIn.mx ){ in re_compile()
6624 re_append(pRe, RE_OP_MATCH, RE_EOF); in re_compile()
6625 re_append(pRe, RE_OP_ACCEPT, 0); in re_compile()
6626 *ppRe = pRe; in re_compile()
6627 }else if( pRe->sIn.i>=pRe->sIn.mx ){ in re_compile()
6628 re_append(pRe, RE_OP_ACCEPT, 0); in re_compile()
6629 *ppRe = pRe; in re_compile()
6631 re_free(pRe); in re_compile()
6643 if( pRe->aOp[0]==RE_OP_ANYSTAR && !noCase ){ in re_compile()
6644 for(j=0, i=1; j<(int)sizeof(pRe->zInit)-2 && pRe->aOp[i]==RE_OP_MATCH; i++){ in re_compile()
6645 unsigned x = pRe->aArg[i]; in re_compile()
6647 pRe->zInit[j++] = (unsigned char)x; in re_compile()
6649 pRe->zInit[j++] = (unsigned char)(0xc0 | (x>>6)); in re_compile()
6650 pRe->zInit[j++] = 0x80 | (x&0x3f); in re_compile()
6652 pRe->zInit[j++] = (unsigned char)(0xd0 | (x>>12)); in re_compile()
6653 pRe->zInit[j++] = 0x80 | ((x>>6)&0x3f); in re_compile()
6654 pRe->zInit[j++] = 0x80 | (x&0x3f); in re_compile()
6659 if( j>0 && pRe->zInit[j-1]==0 ) j--; in re_compile()
6660 pRe->nInit = j; in re_compile()
6662 return pRe->zErr; in re_compile()
6679 ReCompiled *pRe; /* Compiled regular expression */ in re_sql_func() local
6686 pRe = sqlite3_get_auxdata(context, 0); in re_sql_func()
6687 if( pRe==0 ){ in re_sql_func()
6690 zErr = re_compile(&pRe, zPattern, sqlite3_user_data(context)!=0); in re_sql_func()
6692 re_free(pRe); in re_sql_func()
6696 if( pRe==0 ){ in re_sql_func()
6704 sqlite3_result_int(context, re_match(pRe, zStr, -1)); in re_sql_func()
6707 sqlite3_set_auxdata(context, 0, pRe, (void(*)(void*))re_free); in re_sql_func()