Lines Matching full:par

190 CondParser_SkipWhitespace(CondParser *par)  in CondParser_SkipWhitespace()  argument
192 cpp_skip_whitespace(&par->p); in CondParser_SkipWhitespace()
379 CondParser_StringExpr(CondParser *par, const char *start, in CondParser_StringExpr() argument
391 p = par->p; in CondParser_StringExpr()
399 par->p = p; in CondParser_StringExpr()
401 if (outsideQuotes && is_separator(par->p[0])) in CondParser_StringExpr()
418 CondParser_Leaf(CondParser *par, bool doEval, bool unquotedOK, in CondParser_Leaf() argument
428 *out_quoted = quoted = par->p[0] == '"'; in CondParser_Leaf()
429 start = par->p; in CondParser_Leaf()
431 par->p++; in CondParser_Leaf()
433 while (par->p[0] != '\0' && str.str == NULL) { in CondParser_Leaf()
434 switch (par->p[0]) { in CondParser_Leaf()
436 par->p++; in CondParser_Leaf()
437 if (par->p[0] != '\0') { in CondParser_Leaf()
438 Buf_AddByte(&buf, par->p[0]); in CondParser_Leaf()
439 par->p++; in CondParser_Leaf()
445 par->p++; in CondParser_Leaf()
459 Buf_AddByte(&buf, par->p[0]); in CondParser_Leaf()
460 par->p++; in CondParser_Leaf()
463 if (!CondParser_StringExpr(par, in CondParser_Leaf()
473 Buf_AddByte(&buf, par->p[0]); in CondParser_Leaf()
474 par->p++; in CondParser_Leaf()
494 EvalTruthy(CondParser *par, const char *value, bool quoted) in EvalTruthy() argument
502 if (par->plain) in EvalTruthy()
504 return par->evalBare(value) != par->negateEvalBare; in EvalTruthy()
559 CondParser_ComparisonOp(CondParser *par, ComparisonOp *out_op) in CondParser_ComparisonOp() argument
561 const char *p = par->p; in CondParser_ComparisonOp()
564 return par->p += 2, *out_op = LE, true; in CondParser_ComparisonOp()
566 return par->p += 1, *out_op = LT, true; in CondParser_ComparisonOp()
568 return par->p += 2, *out_op = GE, true; in CondParser_ComparisonOp()
570 return par->p += 1, *out_op = GT, true; in CondParser_ComparisonOp()
572 return par->p += 2, *out_op = EQ, true; in CondParser_ComparisonOp()
574 return par->p += 2, *out_op = NE, true; in CondParser_ComparisonOp()
587 CondParser_Comparison(CondParser *par, bool doEval) in CondParser_Comparison() argument
594 lhs = CondParser_Leaf(par, doEval, par->leftUnquotedOK, &lhsQuoted); in CondParser_Comparison()
598 CondParser_SkipWhitespace(par); in CondParser_Comparison()
600 if (!CondParser_ComparisonOp(par, &op)) { in CondParser_Comparison()
601 t = ToToken(doEval && EvalTruthy(par, lhs.str, lhsQuoted)); in CondParser_Comparison()
605 CondParser_SkipWhitespace(par); in CondParser_Comparison()
607 if (par->p[0] == '\0') { in CondParser_Comparison()
613 rhs = CondParser_Leaf(par, doEval, true, &rhsQuoted); in CondParser_Comparison()
629 CondParser_FuncCallEmpty(CondParser *par, bool doEval, Token *out_token) in CondParser_FuncCallEmpty() argument
631 const char *p = par->p; in CondParser_FuncCallEmpty()
655 par->p = p; in CondParser_FuncCallEmpty()
661 CondParser_FuncCall(CondParser *par, bool doEval, Token *out_token) in CondParser_FuncCall() argument
664 const char *p = par->p; in CondParser_FuncCall()
690 par->p = p; in CondParser_FuncCall()
702 CondParser_ComparisonOrLeaf(CondParser *par, bool doEval) in CondParser_ComparisonOrLeaf() argument
708 p = par->p; in CondParser_ComparisonOrLeaf()
710 return CondParser_Comparison(par, doEval); in CondParser_ComparisonOrLeaf()
730 return CondParser_Comparison(par, doEval); in CondParser_ComparisonOrLeaf()
732 par->p = p; in CondParser_ComparisonOrLeaf()
740 t = ToToken(doEval && par->evalBare(arg) != par->negateEvalBare); in CondParser_ComparisonOrLeaf()
747 CondParser_Token(CondParser *par, bool doEval) in CondParser_Token() argument
751 t = par->curr; in CondParser_Token()
753 par->curr = TOK_NONE; in CondParser_Token()
757 cpp_skip_hspace(&par->p); in CondParser_Token()
759 switch (par->p[0]) { in CondParser_Token()
762 par->p++; in CondParser_Token()
766 par->p++; in CondParser_Token()
770 par->p++; in CondParser_Token()
771 if (par->p[0] == '|') in CondParser_Token()
772 par->p++; in CondParser_Token()
780 par->p++; in CondParser_Token()
781 if (par->p[0] == '&') in CondParser_Token()
782 par->p++; in CondParser_Token()
790 par->p++; in CondParser_Token()
801 return CondParser_Comparison(par, doEval); in CondParser_Token()
804 if (CondParser_FuncCallEmpty(par, doEval, &t)) in CondParser_Token()
806 if (CondParser_FuncCall(par, doEval, &t)) in CondParser_Token()
808 return CondParser_ComparisonOrLeaf(par, doEval); in CondParser_Token()
814 CondParser_Skip(CondParser *par, Token t) in CondParser_Skip() argument
818 actual = CondParser_Token(par, false); in CondParser_Skip()
822 assert(par->curr == TOK_NONE); in CondParser_Skip()
824 par->curr = actual; in CondParser_Skip()
835 CondParser_Term(CondParser *par, bool doEval) in CondParser_Term() argument
841 while ((t = CondParser_Token(par, doEval)) == TOK_NOT) in CondParser_Term()
848 res = CondParser_Or(par, doEval); in CondParser_Term()
851 if (CondParser_Token(par, doEval) != TOK_RPAREN) in CondParser_Term()
863 CondParser_And(CondParser *par, bool doEval) in CondParser_And() argument
869 if ((rhs = CondParser_Term(par, doEval)) == CR_ERROR) in CondParser_And()
875 } while (CondParser_Skip(par, TOK_AND)); in CondParser_And()
884 CondParser_Or(CondParser *par, bool doEval) in CondParser_Or() argument
890 if ((rhs = CondParser_And(par, doEval)) == CR_ERROR) in CondParser_Or()
896 } while (CondParser_Skip(par, TOK_OR)); in CondParser_Or()
911 CondParser par; in CondEvalExpression() local
917 par.plain = plain; in CondEvalExpression()
918 par.evalBare = evalBare; in CondEvalExpression()
919 par.negateEvalBare = negate; in CondEvalExpression()
920 par.leftUnquotedOK = leftUnquotedOK; in CondEvalExpression()
921 par.p = cond; in CondEvalExpression()
922 par.curr = TOK_NONE; in CondEvalExpression()
924 DEBUG1(COND, "CondParser_Eval: %s\n", par.p); in CondEvalExpression()
925 rval = CondParser_Or(&par, true); in CondEvalExpression()
926 if (par.curr != TOK_EOF) in CondEvalExpression()