Lines Matching refs:comp
649 * @comp: an XPATH comp
651 * Free up the memory allocated by @comp
654 xmlXPathFreeCompExpr(xmlXPathCompExprPtr comp)
659 if (comp == NULL)
661 if (comp->dict == NULL) {
662 for (i = 0; i < comp->nbStep; i++) {
663 op = &comp->steps[i];
674 for (i = 0; i < comp->nbStep; i++) {
675 op = &comp->steps[i];
681 xmlDictFree(comp->dict);
683 if (comp->steps != NULL) {
684 xmlFree(comp->steps);
687 if (comp->string != NULL) {
688 xmlFree(comp->string);
692 if (comp->stream != NULL) {
693 xmlFreePatternList(comp->stream);
696 if (comp->expr != NULL) {
697 xmlFree(comp->expr);
700 xmlFree(comp);
705 * @comp: the compiled expression
720 xmlXPathCompExprAdd(xmlXPathCompExprPtr comp, int ch1, int ch2,
723 if (comp->nbStep >= comp->maxStep) {
726 comp->maxStep *= 2;
727 real = (xmlXPathStepOp *) xmlRealloc(comp->steps,
728 comp->maxStep * sizeof(xmlXPathStepOp));
730 comp->maxStep /= 2;
734 comp->steps = real;
736 comp->last = comp->nbStep;
737 comp->steps[comp->nbStep].rewriteType = 0;
738 comp->steps[comp->nbStep].ch1 = ch1;
739 comp->steps[comp->nbStep].ch2 = ch2;
740 comp->steps[comp->nbStep].op = op;
741 comp->steps[comp->nbStep].value = value;
742 comp->steps[comp->nbStep].value2 = value2;
743 comp->steps[comp->nbStep].value3 = value3;
744 if ((comp->dict != NULL) &&
748 comp->steps[comp->nbStep].value4 = (xmlChar *)
749 (void *)xmlDictLookup(comp->dict, value4, -1);
752 comp->steps[comp->nbStep].value4 = NULL;
754 comp->steps[comp->nbStep].value5 = (xmlChar *)
755 (void *)xmlDictLookup(comp->dict, value5, -1);
758 comp->steps[comp->nbStep].value5 = NULL;
760 comp->steps[comp->nbStep].value4 = value4;
761 comp->steps[comp->nbStep].value5 = value5;
763 comp->steps[comp->nbStep].cache = NULL;
764 return(comp->nbStep++);
769 * @comp: the compiled expression
794 xmlXPathCompExprAdd(ctxt->comp, (op1), (op2), \
797 xmlXPathCompExprAdd(ctxt->comp, ctxt->comp->last, -1, \
801 xmlXPathCompExprAdd(ctxt->comp, -1, -1, (op), (val), (val2), 0 ,NULL ,NULL)
804 xmlXPathCompExprAdd(ctxt->comp, (ch), -1, (op), (val), (val2), 0 ,NULL ,NULL)
807 xmlXPathCompExprAdd(ctxt->comp, (ch1), (ch2), (op), \
1106 xmlXPathDebugDumpStepOp(FILE *output, xmlXPathCompExprPtr comp,
1277 xmlXPathDebugDumpStepOp(output, comp, &comp->steps[op->ch1], depth + 1);
1279 xmlXPathDebugDumpStepOp(output, comp, &comp->steps[op->ch2], depth + 1);
1285 * @comp: the precompiled XPath expression
1291 xmlXPathDebugDumpCompExpr(FILE *output, xmlXPathCompExprPtr comp,
1296 if ((output == NULL) || (comp == NULL)) return;
1305 comp->nbStep);
1306 i = comp->last;
1307 xmlXPathDebugDumpStepOp(output, comp, &comp->steps[i], depth + 1);
6156 ret->comp = xmlXPathNewCompExpr();
6157 if (ret->comp == NULL) {
6163 ret->comp->dict = ctxt->dict;
6164 xmlDictReference(ret->comp->dict);
6172 * @comp: the XPath compiled expression
6180 xmlXPathCompParserContext(xmlXPathCompExprPtr comp, xmlXPathContextPtr ctxt) {
6204 ret->comp = comp;
6220 if (ctxt->comp != NULL) {
6222 if (ctxt->comp->stream != NULL) {
6223 xmlFreePatternList(ctxt->comp->stream);
6224 ctxt->comp->stream = NULL;
6227 xmlXPathFreeCompExpr(ctxt->comp);
10289 ctxt->comp->last = -1;
10373 ctxt->comp->last = -1;
10376 int op1 = ctxt->comp->last;
10377 ctxt->comp->last = -1;
10384 PUSH_BINARY_EXPR(XPATH_OP_ARG, op1, ctxt->comp->last, 0, 0);
10663 PUSH_UNARY_EXPR(XPATH_OP_RESET, ctxt->comp->last, 1, 0);
10689 int op1 = ctxt->comp->last;
10696 PUSH_BINARY_EXPR(XPATH_OP_UNION, op1, ctxt->comp->last, 0, 0);
10729 PUSH_UNARY_EXPR(XPATH_OP_PLUS, ctxt->comp->last, 2, 0);
10731 PUSH_UNARY_EXPR(XPATH_OP_PLUS, ctxt->comp->last, 3, 0);
10757 int op1 = ctxt->comp->last;
10772 PUSH_BINARY_EXPR(XPATH_OP_MULT, op1, ctxt->comp->last, op, 0);
10796 int op1 = ctxt->comp->last;
10804 PUSH_BINARY_EXPR(XPATH_OP_PLUS, op1, ctxt->comp->last, plus, 0);
10837 int op1 = ctxt->comp->last;
10848 PUSH_BINARY_EXPR(XPATH_OP_CMP, op1, ctxt->comp->last, inf, strict);
10876 int op1 = ctxt->comp->last;
10885 PUSH_BINARY_EXPR(XPATH_OP_EQUAL, op1, ctxt->comp->last, eq, 0);
10906 int op1 = ctxt->comp->last;
10911 PUSH_BINARY_EXPR(XPATH_OP_AND, op1, ctxt->comp->last, 0, 0);
10932 int op1 = ctxt->comp->last;
10937 PUSH_BINARY_EXPR(XPATH_OP_OR, op1, ctxt->comp->last, 0, 0);
10940 if ((sort) && (ctxt->comp->steps[ctxt->comp->last].op != XPATH_OP_VALUE)) {
10947 PUSH_UNARY_EXPR(XPATH_OP_SORT, ctxt->comp->last , 0, 0);
10963 int op1 = ctxt->comp->last;
10972 ctxt->comp->last = -1;
10993 PUSH_BINARY_EXPR(XPATH_OP_FILTER, op1, ctxt->comp->last, 0, 0);
10995 PUSH_BINARY_EXPR(XPATH_OP_PREDICATE, op1, ctxt->comp->last, 0, 0);
11268 op2 = ctxt->comp->last;
11278 /* PUSH_BINARY_EXPR(XPATH_OP_RANGETO, op2, ctxt->comp->last, 0, 0); */
11352 op1 = ctxt->comp->last;
11353 ctxt->comp->last = -1;
11365 PUSH_FULL_EXPR(XPATH_OP_COLLECT, op1, ctxt->comp->last, axis,
11575 xmlXPathCompExprPtr comp = ctxt->comp;
11579 if (comp->steps[op->ch1].op != XPATH_OP_PREDICATE) {
11585 &comp->steps[op->ch1], set, contextSize, hasNsNodes);
11633 exprOp = &ctxt->comp->steps[op->ch2];
11729 xmlXPathCompExprPtr comp = ctxt->comp;
11730 if (comp->steps[op->ch1].op != XPATH_OP_PREDICATE) {
11736 &comp->steps[op->ch1], set, contextSize, hasNsNodes);
11779 exprOp = &ctxt->comp->steps[op->ch2];
11940 exprOp = &ctxt->comp->steps[op->ch2];
12184 predOp = &ctxt->comp->steps[op->ch2];
12190 predOp = &ctxt->comp->steps[predOp->ch1];
12638 xmlXPathCompExprPtr comp;
12642 comp = ctxt->comp;
12648 xmlXPathCompOpEvalFirst(ctxt, &comp->steps[op->ch1],
12670 xmlXPathCompOpEvalFirst(ctxt, &comp->steps[op->ch2],
12692 total += xmlXPathCompOpEval(ctxt, &comp->steps[op->ch1]);
12695 total += xmlXPathCompOpEval(ctxt, &comp->steps[op->ch2]);
12702 total += xmlXPathCompOpEval(ctxt, &comp->steps[op->ch1]);
12705 total += xmlXPathCompOpEval(ctxt, &comp->steps[op->ch2]);
12713 total = xmlXPathCompOpEval(ctxt, &comp->steps[op->ch1]);
12727 xmlXPathCompOpEvalFirst(ctxt, &comp->steps[op->ch1],
12762 xmlXPathCompExprPtr comp;
12770 comp = ctxt->comp;
12780 xmlXPathCompOpEvalLast(ctxt, &comp->steps[op->ch1], last);
12801 xmlXPathCompOpEvalLast(ctxt, &comp->steps[op->ch2], last);
12827 total += xmlXPathCompOpEval(ctxt, &comp->steps[op->ch1]);
12830 total += xmlXPathCompOpEval(ctxt, &comp->steps[op->ch2]);
12837 total += xmlXPathCompOpEval(ctxt, &comp->steps[op->ch1]);
12840 total += xmlXPathCompOpEval(ctxt, &comp->steps[op->ch2]);
12848 total += xmlXPathCompOpEval(ctxt, &comp->steps[op->ch1]);
12862 xmlXPathCompOpEvalLast(ctxt, &comp->steps[op->ch1],
12882 xmlXPathCompExprPtr comp;
12891 comp = ctxt->comp;
12896 (comp->steps[op->ch1].op == XPATH_OP_SORT) &&
12897 (comp->steps[op->ch2].op == XPATH_OP_SORT)) {
12898 int f = comp->steps[op->ch2].ch1;
12901 (comp->steps[f].op == XPATH_OP_FUNCTION) &&
12902 (comp->steps[f].value5 == NULL) &&
12903 (comp->steps[f].value == 0) &&
12904 (comp->steps[f].value4 != NULL) &&
12906 (comp->steps[f].value4, BAD_CAST "last"))) {
12911 &comp->steps[op->ch1],
12937 total += xmlXPathCompOpEval(ctxt, &comp->steps[op->ch1]);
12968 total += xmlXPathCompOpEval(ctxt, &comp->steps[op->ch2]);
12996 total += xmlXPathCompOpEval(ctxt, &comp->steps[op->ch2]);
13072 &comp->steps[op->ch2]);
13112 total += xmlXPathCompOpEval(ctxt, &comp->steps[op->ch2]);
13183 xmlXPathCompExprPtr comp;
13191 comp = ctxt->comp;
13200 total += xmlXPathCompOpEval(ctxt, &comp->steps[op->ch1]);
13210 total += xmlXPathCompOpEval(ctxt, &comp->steps[op->ch2]);
13226 total += xmlXPathCompOpEval(ctxt, &comp->steps[op->ch1]);
13236 total += xmlXPathCompOpEval(ctxt, &comp->steps[op->ch2]);
13252 total += xmlXPathCompOpEval(ctxt, &comp->steps[op->ch1]);
13258 total += xmlXPathCompOpEval(ctxt, &comp->steps[op->ch2]);
13271 total += xmlXPathCompOpEval(ctxt, &comp->steps[op->ch1]);
13277 total += xmlXPathCompOpEval(ctxt, &comp->steps[op->ch2]);
13287 total += xmlXPathCompOpEval(ctxt, &comp->steps[op->ch1]);
13294 total += xmlXPathCompOpEval(ctxt, &comp->steps[op->ch2]);
13313 total += xmlXPathCompOpEval(ctxt, &comp->steps[op->ch1]);
13319 total += xmlXPathCompOpEval(ctxt, &comp->steps[op->ch2]);
13333 total += xmlXPathCompOpEval(ctxt, &comp->steps[op->ch1]);
13339 total += xmlXPathCompOpEval(ctxt, &comp->steps[op->ch2]);
13363 total += xmlXPathCompOpEval(ctxt, &comp->steps[op->ch1]);
13366 total += xmlXPathCompOpEval(ctxt, &comp->steps[op->ch2]);
13373 total += xmlXPathCompOpEval(ctxt, &comp->steps[op->ch1]);
13376 total += xmlXPathCompOpEval(ctxt, &comp->steps[op->ch2]);
13384 total += xmlXPathCompOpEval(ctxt, &comp->steps[op->ch1]);
13400 xmlXPathCompOpEval(ctxt, &comp->steps[op->ch1]);
13438 xmlXPathCompOpEval(ctxt, &comp->steps[op->ch1]);
13502 total += xmlXPathCompOpEval(ctxt, &comp->steps[op->ch1]);
13509 total += xmlXPathCompOpEval(ctxt, &comp->steps[op->ch2]);
13539 ((comp->steps[op->ch1].op == XPATH_OP_SORT) || /* 18 */
13540 (comp->steps[op->ch1].op == XPATH_OP_FILTER)) && /* 17 */
13542 (comp->steps[op->ch1].op == XPATH_OP_SORT) &&
13544 (comp->steps[op->ch2].op == XPATH_OP_VALUE)) { /* 12 */
13547 val = comp->steps[op->ch2].value4;
13554 &comp->steps[op->ch1],
13573 (comp->steps[op->ch1].op == XPATH_OP_SORT) &&
13574 (comp->steps[op->ch2].op == XPATH_OP_SORT)) {
13575 int f = comp->steps[op->ch2].ch1;
13578 (comp->steps[f].op == XPATH_OP_FUNCTION) &&
13579 (comp->steps[f].value5 == NULL) &&
13580 (comp->steps[f].value == 0) &&
13581 (comp->steps[f].value4 != NULL) &&
13583 (comp->steps[f].value4, BAD_CAST "last"))) {
13588 &comp->steps[op->ch1],
13624 xmlXPathCompOpEval(ctxt, &comp->steps[op->ch1]);
13657 &comp->steps[op->ch2]);
13683 &comp->steps[op->ch2]);
13747 &comp->steps[op->ch2]);
13817 &comp->steps[op->ch2]);
13874 total += xmlXPathCompOpEval(ctxt, &comp->steps[op->ch1]);
13896 xmlXPathCompOpEval(ctxt, &comp->steps[op->ch1]);
13914 total += xmlXPathCompOpEval(ctxt,&comp->steps[op->ch2]);
13940 &comp->steps[op->ch2]);
14006 &comp->steps[op->ch2]);
14070 /* comp = ctxt->comp; */
14084 op = &ctxt->comp->steps[op->ch1];
14092 xmlXPathCompOpEval(ctxt, &ctxt->comp->steps[op->ch1]);
14151 xmlXPathRunStreamEval(xmlXPathContextPtr ctxt, xmlPatternPtr comp,
14163 if ((ctxt == NULL) || (comp == NULL))
14165 max_depth = xmlPatternMaxDepth(comp);
14170 comp);
14173 from_root = xmlPatternFromRoot(comp);
14246 patstream = xmlPatternGetStreamCtxt(comp);
14382 xmlXPathCompExprPtr comp;
14384 if ((ctxt == NULL) || (ctxt->comp == NULL))
14401 if (ctxt->comp->stream) {
14409 ctxt->comp->stream, NULL, 1);
14419 ctxt->comp->stream, &resObj, 0);
14434 comp = ctxt->comp;
14435 if (comp->last < 0) {
14442 &comp->steps[comp->last], 0));
14444 xmlXPathCompOpEval(ctxt, &comp->steps[comp->last]);
14561 xmlXPathCompExprPtr comp;
14609 comp = xmlXPathNewCompExpr();
14610 if (comp == NULL) {
14614 comp->stream = stream;
14615 comp->dict = dict;
14616 if (comp->dict)
14617 xmlDictReference(comp->dict);
14618 return(comp);
14638 xmlXPathRewriteDOSExpression(xmlXPathCompExprPtr comp, xmlXPathStepOpPtr op)
14653 xmlXPathStepOpPtr prevop = &comp->steps[op->ch1];
14662 (comp->steps[prevop->ch1].op == XPATH_OP_ROOT))
14673 xmlXPathRewriteDOSExpression(comp, &comp->steps[op->ch1]);
14676 xmlXPathRewriteDOSExpression(comp, &comp->steps[op->ch2]);
14692 xmlXPathCompExprPtr comp;
14695 comp = xmlXPathTryStreamCompile(ctxt, str);
14696 if (comp != NULL)
14697 return(comp);
14721 comp = NULL;
14723 comp = pctxt->comp;
14724 pctxt->comp = NULL;
14728 if (comp != NULL) {
14729 comp->expr = xmlStrdup(str);
14731 comp->string = xmlStrdup(str);
14732 comp->nb = 0;
14734 if ((comp->expr != NULL) &&
14735 (comp->nbStep > 2) &&
14736 (comp->last >= 0) &&
14737 (xmlXPathCanRewriteDosExpression(comp->expr) == 1))
14739 xmlXPathRewriteDOSExpression(comp, &comp->steps[comp->last]);
14742 return(comp);
14761 * @comp: the compiled XPath expression
14773 xmlXPathCompiledEvalInternal(xmlXPathCompExprPtr comp,
14786 if (comp == NULL)
14797 comp->nb++;
14798 if ((comp->string != NULL) && (comp->nb > 100)) {
14799 comp->string);
14800 comp->nb = 0;
14803 pctxt = xmlXPathCompParserContext(comp, ctxt);
14843 pctxt->comp = NULL;
14854 * @comp: the compiled XPath expression
14863 xmlXPathCompiledEval(xmlXPathCompExprPtr comp, xmlXPathContextPtr ctx)
14867 xmlXPathCompiledEvalInternal(comp, ctx, &res, 0);
14873 * @comp: the compiled XPath expression
14883 xmlXPathCompiledEvalToBoolean(xmlXPathCompExprPtr comp,
14886 return(xmlXPathCompiledEvalInternal(comp, ctxt, NULL, 1));
14899 xmlXPathCompExprPtr comp;
14905 comp = xmlXPathTryStreamCompile(ctxt->context, ctxt->base);
14906 if (comp != NULL) {
14907 if (ctxt->comp != NULL)
14908 xmlXPathFreeCompExpr(ctxt->comp);
14909 ctxt->comp = comp;
14920 (ctxt->comp != NULL) &&
14922 (ctxt->comp->nbStep > 2) &&
14923 (ctxt->comp->last >= 0) &&
14926 xmlXPathRewriteDOSExpression(ctxt->comp,
14927 &ctxt->comp->steps[ctxt->comp->last]);
14963 } else if ((*ctxt->cur != 0) && (ctxt->comp != NULL)
14965 && (ctxt->comp->stream == NULL)