Lines Matching refs:pCur

2155 static void spellfix1ResetCursor(spellfix1_cursor *pCur){  in spellfix1ResetCursor()  argument
2157 for(i=0; i<pCur->nRow; i++){ in spellfix1ResetCursor()
2158 sqlite3_free(pCur->a[i].zWord); in spellfix1ResetCursor()
2160 pCur->nRow = 0; in spellfix1ResetCursor()
2161 pCur->iRow = 0; in spellfix1ResetCursor()
2162 pCur->nSearch = 0; in spellfix1ResetCursor()
2163 if( pCur->pFullScan ){ in spellfix1ResetCursor()
2164 sqlite3_finalize(pCur->pFullScan); in spellfix1ResetCursor()
2165 pCur->pFullScan = 0; in spellfix1ResetCursor()
2172 static void spellfix1ResizeCursor(spellfix1_cursor *pCur, int N){ in spellfix1ResizeCursor() argument
2174 assert( N>=pCur->nRow ); in spellfix1ResizeCursor()
2175 aNew = sqlite3_realloc64(pCur->a, sizeof(pCur->a[0])*N); in spellfix1ResizeCursor()
2177 spellfix1ResetCursor(pCur); in spellfix1ResizeCursor()
2178 sqlite3_free(pCur->a); in spellfix1ResizeCursor()
2179 pCur->nAlloc = 0; in spellfix1ResizeCursor()
2180 pCur->a = 0; in spellfix1ResizeCursor()
2182 pCur->nAlloc = N; in spellfix1ResizeCursor()
2183 pCur->a = aNew; in spellfix1ResizeCursor()
2192 spellfix1_cursor *pCur = (spellfix1_cursor *)cur; in spellfix1Close() local
2193 spellfix1ResetCursor(pCur); in spellfix1Close()
2194 spellfix1ResizeCursor(pCur, 0); in spellfix1Close()
2195 sqlite3_free(pCur->zPattern); in spellfix1Close()
2196 sqlite3_free(pCur); in spellfix1Close()
2333 spellfix1_cursor *pCur; in spellfix1Open() local
2334 pCur = sqlite3_malloc64( sizeof(*pCur) ); in spellfix1Open()
2335 if( pCur==0 ) return SQLITE_NOMEM; in spellfix1Open()
2336 memset(pCur, 0, sizeof(*pCur)); in spellfix1Open()
2337 pCur->pVTab = p; in spellfix1Open()
2338 *ppCursor = &pCur->base; in spellfix1Open()
2367 spellfix1_cursor *pCur; /* The cursor being queried */ member
2398 spellfix1_cursor *pCur = p->pCur; in spellfix1RunQuery() local
2406 if( pCur->a==0 || p->rc ) return; /* Prior memory allocation failure */ in spellfix1RunQuery()
2444 for(i=0; i<pCur->nRow; i++){ in spellfix1RunQuery()
2445 if( pCur->a[i].iScore>iWorst ){ in spellfix1RunQuery()
2446 iWorst = pCur->a[i].iScore; in spellfix1RunQuery()
2467 pCur->nSearch++; in spellfix1RunQuery()
2475 assert( (p->iMaxDist>=0)==((pCur->idxNum & SPELLFIX_IDXNUM_DIST) ? 1 : 0) ); in spellfix1RunQuery()
2478 if( pCur->nRow>=pCur->nAlloc && (pCur->idxNum & SPELLFIX_IDXNUM_TOP)==0 ){ in spellfix1RunQuery()
2479 spellfix1ResizeCursor(pCur, pCur->nAlloc*2 + 10); in spellfix1RunQuery()
2480 if( pCur->a==0 ) break; in spellfix1RunQuery()
2485 if( pCur->nRow<pCur->nAlloc ){ in spellfix1RunQuery()
2486 idx = pCur->nRow; in spellfix1RunQuery()
2489 sqlite3_free(pCur->a[idx].zWord); in spellfix1RunQuery()
2494 pCur->a[idx].zWord = sqlite3_mprintf("%s", sqlite3_column_text(pStmt, 1)); in spellfix1RunQuery()
2495 if( pCur->a[idx].zWord==0 ){ in spellfix1RunQuery()
2499 pCur->a[idx].iRowid = sqlite3_column_int64(pStmt, 0); in spellfix1RunQuery()
2500 pCur->a[idx].iRank = iRank; in spellfix1RunQuery()
2501 pCur->a[idx].iDistance = iDist; in spellfix1RunQuery()
2502 pCur->a[idx].iScore = iScore; in spellfix1RunQuery()
2503 pCur->a[idx].iMatchlen = iMatchlen; in spellfix1RunQuery()
2504 memcpy(pCur->a[idx].zHash, zHash1, iScope+1); in spellfix1RunQuery()
2505 if( pCur->nRow<pCur->nAlloc ) pCur->nRow++; in spellfix1RunQuery()
2506 if( pCur->nRow==pCur->nAlloc ){ in spellfix1RunQuery()
2507 iWorst = pCur->a[0].iScore; in spellfix1RunQuery()
2509 for(i=1; i<pCur->nRow; i++){ in spellfix1RunQuery()
2510 iScore = pCur->a[i].iScore; in spellfix1RunQuery()
2527 spellfix1_cursor *pCur, in spellfix1FilterForMatch() argument
2531 int idxNum = pCur->idxNum; in spellfix1FilterForMatch()
2543 spellfix1_vtab *p = pCur->pVTab; /* The virtual table that owns pCur */ in spellfix1FilterForMatch()
2575 spellfix1ResetCursor(pCur); in spellfix1FilterForMatch()
2576 spellfix1ResizeCursor(pCur, iLimit); in spellfix1FilterForMatch()
2590 sqlite3_free(pCur->zPattern); in spellfix1FilterForMatch()
2591 pCur->zPattern = zPattern; in spellfix1FilterForMatch()
2611 pCur->iLang = iLang; in spellfix1FilterForMatch()
2612 x.pCur = pCur; in spellfix1FilterForMatch()
2624 if( pCur->a ){ in spellfix1FilterForMatch()
2625 qsort(pCur->a, pCur->nRow, sizeof(pCur->a[0]), spellfix1RowCompare); in spellfix1FilterForMatch()
2626 pCur->iTop = iLimit; in spellfix1FilterForMatch()
2627 pCur->iScope = iScope; in spellfix1FilterForMatch()
2642 spellfix1_cursor *pCur, in spellfix1FilterForFullScan() argument
2647 int idxNum = pCur->idxNum; in spellfix1FilterForFullScan()
2649 spellfix1_vtab *pVTab = pCur->pVTab; in spellfix1FilterForFullScan()
2650 spellfix1ResetCursor(pCur); in spellfix1FilterForFullScan()
2658 rc = sqlite3_prepare_v2(pVTab->db, zSql, -1, &pCur->pFullScan, 0); in spellfix1FilterForFullScan()
2662 rc = sqlite3_bind_value(pCur->pFullScan, 1, argv[0]); in spellfix1FilterForFullScan()
2664 pCur->nRow = pCur->iRow = 0; in spellfix1FilterForFullScan()
2666 rc = sqlite3_step(pCur->pFullScan); in spellfix1FilterForFullScan()
2667 if( rc==SQLITE_ROW ){ pCur->iRow = -1; rc = SQLITE_OK; } in spellfix1FilterForFullScan()
2670 pCur->iRow = 0; in spellfix1FilterForFullScan()
2686 spellfix1_cursor *pCur = (spellfix1_cursor *)cur; in spellfix1Filter() local
2688 pCur->idxNum = idxNum; in spellfix1Filter()
2690 rc = spellfix1FilterForMatch(pCur, argc, argv); in spellfix1Filter()
2692 rc = spellfix1FilterForFullScan(pCur, argc, argv); in spellfix1Filter()
2702 spellfix1_cursor *pCur = (spellfix1_cursor *)cur; in spellfix1Next() local
2704 if( pCur->iRow < pCur->nRow ){ in spellfix1Next()
2705 if( pCur->pFullScan ){ in spellfix1Next()
2706 rc = sqlite3_step(pCur->pFullScan); in spellfix1Next()
2707 if( rc!=SQLITE_ROW ) pCur->iRow = pCur->nRow; in spellfix1Next()
2710 pCur->iRow++; in spellfix1Next()
2720 spellfix1_cursor *pCur = (spellfix1_cursor *)cur; in spellfix1Eof() local
2721 return pCur->iRow>=pCur->nRow; in spellfix1Eof()
2732 spellfix1_cursor *pCur = (spellfix1_cursor*)cur; in spellfix1Column() local
2733 if( pCur->pFullScan ){ in spellfix1Column()
2735 sqlite3_result_value(ctx, sqlite3_column_value(pCur->pFullScan, i)); in spellfix1Column()
2743 sqlite3_result_text(ctx, pCur->a[pCur->iRow].zWord, -1, SQLITE_STATIC); in spellfix1Column()
2747 sqlite3_result_int(ctx, pCur->a[pCur->iRow].iRank); in spellfix1Column()
2751 sqlite3_result_int(ctx, pCur->a[pCur->iRow].iDistance); in spellfix1Column()
2755 sqlite3_result_int(ctx, pCur->iLang); in spellfix1Column()
2759 sqlite3_result_int(ctx, pCur->a[pCur->iRow].iScore); in spellfix1Column()
2763 int iMatchlen = pCur->a[pCur->iRow].iMatchlen; in spellfix1Column()
2765 int nPattern = (int)strlen(pCur->zPattern); in spellfix1Column()
2766 char *zWord = pCur->a[pCur->iRow].zWord; in spellfix1Column()
2769 if( nPattern>0 && pCur->zPattern[nPattern-1]=='*' ){ in spellfix1Column()
2774 res = editdist1(pCur->zPattern, zTranslit, &iMatchlen); in spellfix1Column()
2787 sqlite3_result_text(ctx, pCur->a[pCur->iRow].zHash, -1, SQLITE_STATIC); in spellfix1Column()
2791 sqlite3_result_int(ctx, pCur->iTop); in spellfix1Column()
2795 sqlite3_result_int(ctx, pCur->iScope); in spellfix1Column()
2799 sqlite3_result_int(ctx, pCur->nSearch); in spellfix1Column()
2814 spellfix1_cursor *pCur = (spellfix1_cursor*)cur; in spellfix1Rowid() local
2815 if( pCur->pFullScan ){ in spellfix1Rowid()
2816 *pRowid = sqlite3_column_int64(pCur->pFullScan, 4); in spellfix1Rowid()
2818 *pRowid = pCur->a[pCur->iRow].iRowid; in spellfix1Rowid()