Lines Matching refs:pParse
372 static void jsonParseReset(JsonParse *pParse){ in jsonParseReset() argument
373 sqlite3_free(pParse->aNode); in jsonParseReset()
374 pParse->aNode = 0; in jsonParseReset()
375 pParse->nNode = 0; in jsonParseReset()
376 pParse->nAlloc = 0; in jsonParseReset()
377 sqlite3_free(pParse->aUp); in jsonParseReset()
378 pParse->aUp = 0; in jsonParseReset()
384 static void jsonParseFree(JsonParse *pParse){ in jsonParseFree() argument
385 jsonParseReset(pParse); in jsonParseFree()
386 sqlite3_free(pParse); in jsonParseFree()
703 JsonParse *pParse, /* Append the node to this object */ in jsonParseAddNodeExpand() argument
710 assert( pParse->nNode>=pParse->nAlloc ); in jsonParseAddNodeExpand()
711 if( pParse->oom ) return -1; in jsonParseAddNodeExpand()
712 nNew = pParse->nAlloc*2 + 10; in jsonParseAddNodeExpand()
713 pNew = sqlite3_realloc64(pParse->aNode, sizeof(JsonNode)*nNew); in jsonParseAddNodeExpand()
715 pParse->oom = 1; in jsonParseAddNodeExpand()
718 pParse->nAlloc = nNew; in jsonParseAddNodeExpand()
719 pParse->aNode = pNew; in jsonParseAddNodeExpand()
720 assert( pParse->nNode<pParse->nAlloc ); in jsonParseAddNodeExpand()
721 return jsonParseAddNode(pParse, eType, n, zContent); in jsonParseAddNodeExpand()
730 JsonParse *pParse, /* Append the node to this object */ in jsonParseAddNode() argument
736 if( pParse->aNode==0 || pParse->nNode>=pParse->nAlloc ){ in jsonParseAddNode()
737 return jsonParseAddNodeExpand(pParse, eType, n, zContent); in jsonParseAddNode()
739 p = &pParse->aNode[pParse->nNode]; in jsonParseAddNode()
745 return pParse->nNode++; in jsonParseAddNode()
765 static int jsonParseValue(JsonParse *pParse, u32 i){ in jsonParseValue() argument
771 const char *z = pParse->zJson; in jsonParseValue()
775 iThis = jsonParseAddNode(pParse, JSON_OBJECT, 0, 0); in jsonParseValue()
779 if( ++pParse->iDepth > JSON_MAX_DEPTH ) return -1; in jsonParseValue()
780 x = jsonParseValue(pParse, j); in jsonParseValue()
782 pParse->iDepth--; in jsonParseValue()
783 if( x==(-2) && pParse->nNode==(u32)iThis+1 ) return j+1; in jsonParseValue()
786 if( pParse->oom ) return -1; in jsonParseValue()
787 pNode = &pParse->aNode[pParse->nNode-1]; in jsonParseValue()
794 x = jsonParseValue(pParse, j); in jsonParseValue()
795 pParse->iDepth--; in jsonParseValue()
804 pParse->aNode[iThis].n = pParse->nNode - (u32)iThis - 1; in jsonParseValue()
808 iThis = jsonParseAddNode(pParse, JSON_ARRAY, 0, 0); in jsonParseValue()
810 memset(&pParse->aNode[iThis].u, 0, sizeof(pParse->aNode[iThis].u)); in jsonParseValue()
813 if( ++pParse->iDepth > JSON_MAX_DEPTH ) return -1; in jsonParseValue()
814 x = jsonParseValue(pParse, j); in jsonParseValue()
815 pParse->iDepth--; in jsonParseValue()
817 if( x==(-3) && pParse->nNode==(u32)iThis+1 ) return j+1; in jsonParseValue()
827 pParse->aNode[iThis].n = pParse->nNode - (u32)iThis - 1; in jsonParseValue()
853 jsonParseAddNode(pParse, JSON_STRING, j+1-i, &z[i]); in jsonParseValue()
854 if( !pParse->oom ) pParse->aNode[pParse->nNode-1].jnFlags = jnFlags; in jsonParseValue()
859 jsonParseAddNode(pParse, JSON_NULL, 0, 0); in jsonParseValue()
864 jsonParseAddNode(pParse, JSON_TRUE, 0, 0); in jsonParseValue()
869 jsonParseAddNode(pParse, JSON_FALSE, 0, 0); in jsonParseValue()
905 jsonParseAddNode(pParse, seenDP ? JSON_REAL : JSON_INT, in jsonParseValue()
927 JsonParse *pParse, /* Initialize and fill this JsonParse object */ in jsonParse() argument
932 memset(pParse, 0, sizeof(*pParse)); in jsonParse()
934 pParse->zJson = zJson; in jsonParse()
935 i = jsonParseValue(pParse, 0); in jsonParse()
936 if( pParse->oom ) i = -1; in jsonParse()
938 assert( pParse->iDepth==0 ); in jsonParse()
944 if( pParse->oom ){ in jsonParse()
950 jsonParseReset(pParse); in jsonParse()
959 static void jsonParseFillInParentage(JsonParse *pParse, u32 i, u32 iParent){ in jsonParseFillInParentage() argument
960 JsonNode *pNode = &pParse->aNode[i]; in jsonParseFillInParentage()
962 pParse->aUp[i] = iParent; in jsonParseFillInParentage()
966 jsonParseFillInParentage(pParse, i+j, i); in jsonParseFillInParentage()
972 pParse->aUp[i+j] = i; in jsonParseFillInParentage()
973 jsonParseFillInParentage(pParse, i+j+1, i); in jsonParseFillInParentage()
986 static int jsonParseFindParents(JsonParse *pParse){ in jsonParseFindParents() argument
988 assert( pParse->aUp==0 ); in jsonParseFindParents()
989 aUp = pParse->aUp = sqlite3_malloc64( sizeof(u32)*pParse->nNode ); in jsonParseFindParents()
991 pParse->oom = 1; in jsonParseFindParents()
994 jsonParseFillInParentage(pParse, 0, 0); in jsonParseFindParents()
1098 JsonParse *pParse, /* The JSON to search */ in jsonLookupStep() argument
1106 JsonNode *pRoot = &pParse->aNode[iRoot]; in jsonLookupStep()
1136 return jsonLookupStep(pParse, iRoot+j+1, &zPath[i], pApnd, pzErr); in jsonLookupStep()
1144 pRoot = &pParse->aNode[iRoot]; in jsonLookupStep()
1150 iStart = jsonParseAddNode(pParse, JSON_OBJECT, 2, 0); in jsonLookupStep()
1151 iLabel = jsonParseAddNode(pParse, JSON_STRING, nKey, zKey); in jsonLookupStep()
1153 pNode = jsonLookupAppend(pParse, zPath, pApnd, pzErr); in jsonLookupStep()
1154 if( pParse->oom ) return 0; in jsonLookupStep()
1156 pRoot = &pParse->aNode[iRoot]; in jsonLookupStep()
1161 pParse->aNode[iLabel].jnFlags |= JNODE_RAW; in jsonLookupStep()
1185 pBase = &pParse->aNode[iBase]; in jsonLookupStep()
1219 pRoot = &pParse->aNode[iRoot]; in jsonLookupStep()
1223 return jsonLookupStep(pParse, iRoot+j, zPath, pApnd, pzErr); in jsonLookupStep()
1228 iStart = jsonParseAddNode(pParse, JSON_ARRAY, 1, 0); in jsonLookupStep()
1229 pNode = jsonLookupAppend(pParse, zPath, pApnd, pzErr); in jsonLookupStep()
1230 if( pParse->oom ) return 0; in jsonLookupStep()
1232 pRoot = &pParse->aNode[iRoot]; in jsonLookupStep()
1251 JsonParse *pParse, /* Append content to the JSON parse */ in jsonLookupAppend() argument
1258 jsonParseAddNode(pParse, JSON_NULL, 0, 0); in jsonLookupAppend()
1259 return pParse->oom ? 0 : &pParse->aNode[pParse->nNode-1]; in jsonLookupAppend()
1262 jsonParseAddNode(pParse, JSON_OBJECT, 0, 0); in jsonLookupAppend()
1264 jsonParseAddNode(pParse, JSON_ARRAY, 0, 0); in jsonLookupAppend()
1268 if( pParse->oom ) return 0; in jsonLookupAppend()
1269 return jsonLookupStep(pParse, pParse->nNode-1, zPath, pApnd, pzErr); in jsonLookupAppend()
1291 JsonParse *pParse, /* The JSON to search */ in jsonLookup() argument
1306 pNode = jsonLookupStep(pParse, 0, zPath, pApnd, &zErr); in jsonLookup()
1310 pParse->nErr++; in jsonLookup()
1619 JsonParse *pParse, /* The JSON parser that contains the TARGET */ in jsonMergePatch() argument
1629 assert( iTarget<pParse->nNode ); in jsonMergePatch()
1630 pTarget = &pParse->aNode[iTarget]; in jsonMergePatch()
1655 JsonNode *pNew = jsonMergePatch(pParse, iTarget+j+1, &pPatch[i+1]); in jsonMergePatch()
1657 pTarget = &pParse->aNode[iTarget]; in jsonMergePatch()
1674 iStart = jsonParseAddNode(pParse, JSON_OBJECT, 2, 0); in jsonMergePatch()
1675 jsonParseAddNode(pParse, JSON_STRING, nKey, zKey); in jsonMergePatch()
1676 iPatch = jsonParseAddNode(pParse, JSON_TRUE, 0, 0); in jsonMergePatch()
1677 if( pParse->oom ) return 0; in jsonMergePatch()
1679 pTarget = &pParse->aNode[iTarget]; in jsonMergePatch()
1680 assert( pParse->aNode[iRoot].eU==0 || pParse->aNode[iRoot].eU==2 ); in jsonMergePatch()
1681 testcase( pParse->aNode[iRoot].eU==2 ); in jsonMergePatch()
1682 pParse->aNode[iRoot].jnFlags |= JNODE_APPEND; in jsonMergePatch()
1683 VVA( pParse->aNode[iRoot].eU = 2 ); in jsonMergePatch()
1684 pParse->aNode[iRoot].u.iAppend = iStart - iRoot; in jsonMergePatch()
1686 assert( pParse->aNode[iPatch].eU==0 ); in jsonMergePatch()
1687 VVA( pParse->aNode[iPatch].eU = 5 ); in jsonMergePatch()
1688 pParse->aNode[iPatch].jnFlags |= JNODE_PATCH; in jsonMergePatch()
1689 pParse->aNode[iPatch].u.pPatch = &pPatch[i+1]; in jsonMergePatch()