void CColumnInfo::buildDeserializeChildLoop(HqlCppTranslator & translator, BuildCtx & loopctx, IReferenceSelector * selector, IHqlExpression * helper, IAtom * serializeForm) { OwnedHqlExpr endMarker = loopctx.getTempDeclare(sizetType, NULL); HqlExprArray args; args.append(*LINK(helper)); OwnedHqlExpr beginCall = translator.bindTranslatedFunctionCall(deserializerBeginNestedId, args); loopctx.addAssign(endMarker, beginCall); args.append(*LINK(helper)); args.append(*LINK(endMarker)); OwnedHqlExpr loopCall = createBoolExpr(no_not, translator.bindTranslatedFunctionCall(deserializerFinishedNestedId, args)); loopctx.addLoop(loopCall, NULL, false); }
void HqlCppCaseInfo::buildChop3Map(BuildCtx & ctx, const CHqlBoundTarget & target, CHqlBoundExpr & test) { translator.buildExprAssign(ctx, target, defaultValue); if (getNumPairs() <= 2) { buildChop2Map(ctx, target, test, 0, getNumPairs()); } else { //need to hack it because there is no signed integer type OwnedHqlExpr tempVar = ctx.getTempDeclare(indexType, NULL); buildChop3Map(ctx, target, test, tempVar, 0, getNumPairs()); } }