Lines Matching refs:pStem

244   fuzzer_stem *pStem;        /* Stem with smallest rCostX */  member
571 static void fuzzerClearStemList(fuzzer_stem *pStem){ in fuzzerClearStemList() argument
572 while( pStem ){ in fuzzerClearStemList()
573 fuzzer_stem *pNext = pStem->pNext; in fuzzerClearStemList()
574 sqlite3_free(pStem); in fuzzerClearStemList()
575 pStem = pNext; in fuzzerClearStemList()
585 fuzzerClearStemList(pCur->pStem); in fuzzerClearCursor()
591 pCur->pStem = 0; in fuzzerClearCursor()
615 fuzzer_stem *pStem, /* The stem to be rendered */ in fuzzerRender() argument
619 const fuzzer_rule *pRule = pStem->pRule; in fuzzerRender()
623 n = pStem->nBasis + pRule->nTo - pRule->nFrom; in fuzzerRender()
629 n = pStem->n; in fuzzerRender()
632 memcpy(z, pStem->zBasis, pStem->nBasis+1); in fuzzerRender()
634 memcpy(z, pStem->zBasis, n); in fuzzerRender()
636 memcpy(&z[n+pRule->nTo], &pStem->zBasis[n+pRule->nFrom], in fuzzerRender()
637 pStem->nBasis-n-pRule->nFrom+1); in fuzzerRender()
640 assert( z[pStem->nBasis + pRule->nTo - pRule->nFrom]==0 ); in fuzzerRender()
656 static fuzzer_cost fuzzerCost(fuzzer_stem *pStem){ in fuzzerCost() argument
657 return pStem->rCostX = pStem->rBaseCost + pStem->pRule->rCost; in fuzzerCost()
666 fuzzer_stem *pStem,
669 if( pStem->n<0 ){
672 pStem->zBasis, pStem->rBaseCost,
678 if( fuzzerRender(pStem, &zBuf, &nBuf)!=SQLITE_OK ) return;
681 pStem->zBasis, pStem->rBaseCost, zBuf, pStem->,
694 static int fuzzerSeen(fuzzer_cursor *pCur, fuzzer_stem *pStem){ in fuzzerSeen() argument
698 if( fuzzerRender(pStem, &pCur->zBuf, &pCur->nBuf)==SQLITE_NOMEM ){ in fuzzerSeen()
719 fuzzer_stem *pStem, /* Stem rule may be applied to */ in fuzzerSkipRule() argument
724 || (pStem->nBasis + pRule->nTo - pRule->nFrom)>FUZZER_MX_OUTPUT_LENGTH in fuzzerSkipRule()
733 static int fuzzerAdvance(fuzzer_cursor *pCur, fuzzer_stem *pStem){ in fuzzerAdvance() argument
735 while( (pRule = pStem->pRule)!=0 ){ in fuzzerAdvance()
737 while( pStem->n < pStem->nBasis - pRule->nFrom ){ in fuzzerAdvance()
738 pStem->n++; in fuzzerAdvance()
740 || memcmp(&pStem->zBasis[pStem->n], pRule->zFrom, pRule->nFrom)==0 in fuzzerAdvance()
743 int rc = fuzzerSeen(pCur, pStem); in fuzzerAdvance()
746 fuzzerCost(pStem); in fuzzerAdvance()
751 pStem->n = -1; in fuzzerAdvance()
754 }while( fuzzerSkipRule(pRule, pStem, pCur->iRuleset) ); in fuzzerAdvance()
755 pStem->pRule = pRule; in fuzzerAdvance()
756 if( pRule && fuzzerCost(pStem)>pCur->rLimit ) pStem->pRule = 0; in fuzzerAdvance()
799 if( pCur->pStem==0 ){ in fuzzerLowestCostStem()
813 pCur->pStem = pBest; in fuzzerLowestCostStem()
816 return pCur->pStem; in fuzzerLowestCostStem()
832 if( (pX = pCur->pStem)!=0 && pX->rCostX>pNew->rCostX ){ in fuzzerInsert()
834 pCur->pStem = pNew; in fuzzerInsert()
904 fuzzer_stem *pStem, *pNew; in fuzzerNext() local
911 pStem = pCur->pStem; in fuzzerNext()
912 if( pStem->rCostX>0 ){ in fuzzerNext()
913 rc = fuzzerRender(pStem, &pCur->zBuf, &pCur->nBuf); in fuzzerNext()
915 pNew = fuzzerNewStem(pCur, pCur->zBuf, pStem->rCostX); in fuzzerNext()
933 while( (pStem = pCur->pStem)!=0 ){ in fuzzerNext()
934 int res = fuzzerAdvance(pCur, pStem); in fuzzerNext()
938 pCur->pStem = 0; in fuzzerNext()
939 pStem = fuzzerInsert(pCur, pStem); in fuzzerNext()
940 if( (rc = fuzzerSeen(pCur, pStem))!=0 ){ in fuzzerNext()
946 pCur->pStem = 0; in fuzzerNext()
947 pStem->pNext = pCur->pDone; in fuzzerNext()
948 pCur->pDone = pStem; in fuzzerNext()
950 rc = fuzzerSeen(pCur, pCur->pStem); in fuzzerNext()
976 fuzzer_stem *pStem; in fuzzerFilter() local
1000 assert( pCur->pStem==0 ); in fuzzerFilter()
1005 pCur->pStem = pStem = fuzzerNewStem(pCur, zWord, (fuzzer_cost)0); in fuzzerFilter()
1006 if( pStem==0 ) return SQLITE_NOMEM; in fuzzerFilter()
1007 pStem->pRule = &pCur->nullRule; in fuzzerFilter()
1008 pStem->n = pStem->nBasis; in fuzzerFilter()
1024 if( fuzzerRender(pCur->pStem, &pCur->zBuf, &pCur->nBuf)==SQLITE_NOMEM ){ in fuzzerColumn()
1030 sqlite3_result_int(ctx, pCur->pStem->rCostX); in fuzzerColumn()