Lines Matching defs:pReader

912 static int fts3SegReaderNext(Fts3Table *p, Fts3SegReader *pReader){
917 if( !pReader->aDoclist ){
918 pNext = pReader->aNode;
920 pNext = &pReader->aDoclist[pReader->nDoclist];
923 if( !pNext || pNext>=&pReader->aNode[pReader->nNode] ){
926 if( fts3SegReaderIsPending(pReader) ){
927 Fts3HashElem *pElem = *(pReader->ppNextElem);
929 pReader->aNode = 0;
932 pReader->zTerm = (char *)fts3HashKey(pElem);
933 pReader->nTerm = fts3HashKeysize(pElem);
934 pReader->nNode = pReader->nDoclist = pList->nData + 1;
935 pReader->aNode = pReader->aDoclist = pList->aData;
936 pReader->ppNextElem++;
937 assert( pReader->aNode );
942 if( !fts3SegReaderIsRootOnly(pReader) ){
943 sqlite3_free(pReader->aNode);
945 pReader->aNode = 0;
949 assert( pReader->iCurrentBlock<=pReader->iLeafEndBlock );
950 if( pReader->iCurrentBlock>=pReader->iLeafEndBlock ){
955 p, ++pReader->iCurrentBlock, &pReader->aNode, &pReader->nNode
958 pNext = pReader->aNode;
967 || &pNext[nSuffix]>&pReader->aNode[pReader->nNode]
972 if( nPrefix+nSuffix>pReader->nTermAlloc ){
974 char *zNew = sqlite3_realloc(pReader->zTerm, nNew);
978 pReader->zTerm = zNew;
979 pReader->nTermAlloc = nNew;
981 memcpy(&pReader->zTerm[nPrefix], pNext, nSuffix);
982 pReader->nTerm = nPrefix+nSuffix;
984 pNext += sqlite3Fts3GetVarint32(pNext, &pReader->nDoclist);
985 pReader->aDoclist = pNext;
986 pReader->pOffsetList = 0;
992 if( &pReader->aDoclist[pReader->nDoclist]>&pReader->aNode[pReader->nNode]
993 || pReader->aDoclist[pReader->nDoclist-1]
1004 static void fts3SegReaderFirstDocid(Fts3SegReader *pReader){
1006 assert( pReader->aDoclist );
1007 assert( !pReader->pOffsetList );
1008 n = sqlite3Fts3GetVarint(pReader->aDoclist, &pReader->iDocid);
1009 pReader->pOffsetList = &pReader->aDoclist[n];
1023 Fts3SegReader *pReader,
1027 char *p = pReader->pOffsetList;
1041 *ppOffsetList = pReader->pOffsetList;
1042 *pnOffsetList = (int)(p - pReader->pOffsetList - 1);
1050 if( p>=&pReader->aDoclist[pReader->nDoclist] ){
1051 pReader->pOffsetList = 0;
1054 pReader->pOffsetList = p + sqlite3Fts3GetVarint(p, &iDelta);
1055 pReader->iDocid += iDelta;
1071 Fts3SegReader *pReader, /* Segment-reader handle */
1084 && !fts3SegReaderIsPending(pReader)
1085 && !fts3SegReaderIsRootOnly(pReader)
1133 for(iBlock=pReader->iStartBlock; iBlock<=pReader->iLeafEndBlock; iBlock++){
1151 void sqlite3Fts3SegReaderFree(Fts3SegReader *pReader){
1152 if( pReader && !fts3SegReaderIsPending(pReader) ){
1153 sqlite3_free(pReader->zTerm);
1154 if( !fts3SegReaderIsRootOnly(pReader) ){
1155 sqlite3_free(pReader->aNode);
1158 sqlite3_free(pReader);
1174 Fts3SegReader *pReader; /* Newly allocated SegReader object */
1182 pReader = (Fts3SegReader *)sqlite3_malloc(sizeof(Fts3SegReader) + nExtra);
1183 if( !pReader ){
1186 memset(pReader, 0, sizeof(Fts3SegReader));
1187 pReader->iIdx = iAge;
1188 pReader->iStartBlock = iStartLeaf;
1189 pReader->iLeafEndBlock = iEndLeaf;
1190 pReader->iEndBlock = iEndBlock;
1194 pReader->aNode = (char *)&pReader[1];
1195 pReader->nNode = nRoot;
1196 memcpy(pReader->aNode, zRoot, nRoot);
1197 memset(&pReader->aNode[nRoot], 0, FTS3_NODE_PADDING);
1199 pReader->iCurrentBlock = iStartLeaf-1;
1203 *ppReader = pReader;
1205 sqlite3Fts3SegReaderFree(pReader);
1240 Fts3SegReader *pReader = 0; /* Fts3SegReader object to return */
1288 pReader = (Fts3SegReader *)sqlite3_malloc(nByte);
1289 if( !pReader ){
1292 memset(pReader, 0, nByte);
1293 pReader->iIdx = 0x7FFFFFFF;
1294 pReader->ppNextElem = (Fts3HashElem **)&pReader[1];
1295 memcpy(pReader->ppNextElem, aElem, nElem*sizeof(Fts3HashElem *));
1302 *ppReader = pReader;