Lines Matching refs:par

176 static CondResult CondParser_Or(CondParser *par, bool);
200 CondParser_SkipWhitespace(CondParser *par) in CondParser_SkipWhitespace() argument
202 cpp_skip_whitespace(&par->p); in CondParser_SkipWhitespace()
261 ParseFuncArg(CondParser *par, const char **pp, bool doEval, const char *func) in ParseFuncArg() argument
278 par->printedError = true; in ParseFuncArg()
388 CondParser_StringExpr(CondParser *par, const char *start, in CondParser_StringExpr() argument
401 p = par->p; in CondParser_StringExpr()
413 par->printedError = true; in CondParser_StringExpr()
427 par->p = p; in CondParser_StringExpr()
434 if (atStart && is_separator(par->p[0])) in CondParser_StringExpr()
452 CondParser_Leaf(CondParser *par, bool doEval, bool unquotedOK, in CondParser_Leaf() argument
462 *out_quoted = quoted = par->p[0] == '"'; in CondParser_Leaf()
463 start = par->p; in CondParser_Leaf()
465 par->p++; in CondParser_Leaf()
467 while (par->p[0] != '\0' && str.str == NULL) { in CondParser_Leaf()
468 switch (par->p[0]) { in CondParser_Leaf()
470 par->p++; in CondParser_Leaf()
471 if (par->p[0] != '\0') { in CondParser_Leaf()
472 Buf_AddByte(&buf, par->p[0]); in CondParser_Leaf()
473 par->p++; in CondParser_Leaf()
477 par->p++; in CondParser_Leaf()
491 Buf_AddByte(&buf, par->p[0]); in CondParser_Leaf()
492 par->p++; in CondParser_Leaf()
495 if (!CondParser_StringExpr(par, in CondParser_Leaf()
509 Buf_AddByte(&buf, par->p[0]); in CondParser_Leaf()
510 par->p++; in CondParser_Leaf()
527 EvalNotEmpty(CondParser *par, const char *value, bool quoted) in EvalNotEmpty() argument
548 if (par->plain) in EvalNotEmpty()
551 return par->evalBare(value) != par->negateEvalBare; in EvalNotEmpty()
577 EvalCompareStr(CondParser *par, const char *lhs, in EvalCompareStr() argument
585 par->printedError = true; in EvalCompareStr()
595 EvalCompare(CondParser *par, const char *lhs, bool lhsQuoted, in EvalCompare() argument
604 return EvalCompareStr(par, lhs, op, rhs); in EvalCompare()
608 CondParser_ComparisonOp(CondParser *par, ComparisonOp *out_op) in CondParser_ComparisonOp() argument
610 const char *p = par->p; in CondParser_ComparisonOp()
613 return par->p += 2, *out_op = LE, true; in CondParser_ComparisonOp()
615 return par->p += 1, *out_op = LT, true; in CondParser_ComparisonOp()
617 return par->p += 2, *out_op = GE, true; in CondParser_ComparisonOp()
619 return par->p += 1, *out_op = GT, true; in CondParser_ComparisonOp()
621 return par->p += 2, *out_op = EQ, true; in CondParser_ComparisonOp()
623 return par->p += 2, *out_op = NE, true; in CondParser_ComparisonOp()
636 CondParser_Comparison(CondParser *par, bool doEval) in CondParser_Comparison() argument
643 CondParser_Leaf(par, doEval, par->leftUnquotedOK, &lhs, &lhsQuoted); in CondParser_Comparison()
647 CondParser_SkipWhitespace(par); in CondParser_Comparison()
649 if (!CondParser_ComparisonOp(par, &op)) { in CondParser_Comparison()
651 t = ToToken(doEval && EvalNotEmpty(par, lhs.str, lhsQuoted)); in CondParser_Comparison()
655 CondParser_SkipWhitespace(par); in CondParser_Comparison()
657 if (par->p[0] == '\0') { in CondParser_Comparison()
660 par->printedError = true; in CondParser_Comparison()
664 CondParser_Leaf(par, doEval, true, &rhs, &rhsQuoted); in CondParser_Comparison()
667 : EvalCompare(par, lhs.str, lhsQuoted, op, rhs.str, rhsQuoted); in CondParser_Comparison()
680 CondParser_FuncCallEmpty(CondParser *par, bool doEval, Token *out_token) in CondParser_FuncCallEmpty() argument
682 const char *cp = par->p; in CondParser_FuncCallEmpty()
707 par->p = cp; in CondParser_FuncCallEmpty()
713 CondParser_FuncCall(CondParser *par, bool doEval, Token *out_token) in CondParser_FuncCall() argument
716 const char *p = par->p; in CondParser_FuncCall()
737 arg = ParseFuncArg(par, &p, doEval, fn_name); in CondParser_FuncCall()
742 par->p = p; in CondParser_FuncCall()
754 CondParser_ComparisonOrLeaf(CondParser *par, bool doEval) in CondParser_ComparisonOrLeaf() argument
761 cp = par->p; in CondParser_ComparisonOrLeaf()
763 return CondParser_Comparison(par, doEval); in CondParser_ComparisonOrLeaf()
781 return CondParser_Comparison(par, doEval); in CondParser_ComparisonOrLeaf()
782 par->p = cp; in CondParser_ComparisonOrLeaf()
790 t = ToToken(doEval && par->evalBare(arg) != par->negateEvalBare); in CondParser_ComparisonOrLeaf()
797 CondParser_Token(CondParser *par, bool doEval) in CondParser_Token() argument
801 t = par->curr; in CondParser_Token()
803 par->curr = TOK_NONE; in CondParser_Token()
807 cpp_skip_hspace(&par->p); in CondParser_Token()
809 switch (par->p[0]) { in CondParser_Token()
812 par->p++; in CondParser_Token()
816 par->p++; in CondParser_Token()
820 par->p++; in CondParser_Token()
821 if (par->p[0] == '|') in CondParser_Token()
822 par->p++; in CondParser_Token()
825 par->printedError = true; in CondParser_Token()
831 par->p++; in CondParser_Token()
832 if (par->p[0] == '&') in CondParser_Token()
833 par->p++; in CondParser_Token()
836 par->printedError = true; in CondParser_Token()
842 par->p++; in CondParser_Token()
853 return CondParser_Comparison(par, doEval); in CondParser_Token()
856 if (CondParser_FuncCallEmpty(par, doEval, &t)) in CondParser_Token()
858 if (CondParser_FuncCall(par, doEval, &t)) in CondParser_Token()
860 return CondParser_ComparisonOrLeaf(par, doEval); in CondParser_Token()
866 CondParser_Skip(CondParser *par, Token t) in CondParser_Skip() argument
870 actual = CondParser_Token(par, false); in CondParser_Skip()
874 assert(par->curr == TOK_NONE); in CondParser_Skip()
876 par->curr = actual; in CondParser_Skip()
887 CondParser_Term(CondParser *par, bool doEval) in CondParser_Term() argument
892 t = CondParser_Token(par, doEval); in CondParser_Term()
899 res = CondParser_Or(par, doEval); in CondParser_Term()
902 if (CondParser_Token(par, doEval) != TOK_RPAREN) in CondParser_Term()
908 res = CondParser_Term(par, doEval); in CondParser_Term()
923 CondParser_And(CondParser *par, bool doEval) in CondParser_And() argument
929 if ((rhs = CondParser_Term(par, doEval)) == CR_ERROR) in CondParser_And()
935 } while (CondParser_Skip(par, TOK_AND)); in CondParser_And()
944 CondParser_Or(CondParser *par, bool doEval) in CondParser_Or() argument
950 if ((rhs = CondParser_And(par, doEval)) == CR_ERROR) in CondParser_Or()
956 } while (CondParser_Skip(par, TOK_OR)); in CondParser_Or()
962 CondParser_Eval(CondParser *par) in CondParser_Eval() argument
966 DEBUG1(COND, "CondParser_Eval: %s\n", par->p); in CondParser_Eval()
968 res = CondParser_Or(par, true); in CondParser_Eval()
969 if (res != CR_ERROR && CondParser_Token(par, false) != TOK_EOF) in CondParser_Eval()
985 CondParser par; in CondEvalExpression() local
990 par.plain = plain; in CondEvalExpression()
991 par.evalBare = evalBare; in CondEvalExpression()
992 par.negateEvalBare = negate; in CondEvalExpression()
993 par.leftUnquotedOK = leftUnquotedOK; in CondEvalExpression()
994 par.p = cond; in CondEvalExpression()
995 par.curr = TOK_NONE; in CondEvalExpression()
996 par.printedError = false; in CondEvalExpression()
998 rval = CondParser_Eval(&par); in CondEvalExpression()
1000 if (rval == CR_ERROR && eprint && !par.printedError) in CondEvalExpression()