Lines Matching full:state
35 char* Evaluate(State* state, Expr* expr) {
36 Value* v = expr->fn(expr->name, state, expr->argc, expr->argv);
39 ErrorAbort(state, "expecting string, got value type %d", v->type);
48 Value* EvaluateValue(State* state, Expr* expr) {
49 return expr->fn(expr->name, state, expr->argc, expr->argv);
67 Value* ConcatFn(const char* name, State* state, int argc, Expr* argv[]) {
79 strings[i] = Evaluate(state, argv[i]);
102 Value* IfElseFn(const char* name, State* state, int argc, Expr* argv[]) {
104 free(state->errmsg);
105 state->errmsg = strdup("ifelse expects 2 or 3 arguments");
108 char* cond = Evaluate(state, argv[0]);
115 return EvaluateValue(state, argv[1]);
119 return EvaluateValue(state, argv[2]);
126 Value* AbortFn(const char* name, State* state, int argc, Expr* argv[]) {
129 msg = Evaluate(state, argv[0]);
131 free(state->errmsg);
133 state->errmsg = msg;
135 state->errmsg = strdup("called abort()");
140 Value* AssertFn(const char* name, State* state, int argc, Expr* argv[]) {
143 char* v = Evaluate(state, argv[i]);
155 memcpy(err_src + prefix_len, state->script + argv[i]->start, len);
157 free(state->errmsg);
158 state->errmsg = err_src;
165 Value* SleepFn(const char* name, State* state, int argc, Expr* argv[]) {
166 char* val = Evaluate(state, argv[0]);
175 Value* StdoutFn(const char* name, State* state, int argc, Expr* argv[]) {
178 char* v = Evaluate(state, argv[i]);
188 Value* LogicalAndFn(const char* name, State* state,
190 char* left = Evaluate(state, argv[0]);
194 return EvaluateValue(state, argv[1]);
200 Value* LogicalOrFn(const char* name, State* state,
202 char* left = Evaluate(state, argv[0]);
206 return EvaluateValue(state, argv[1]);
212 Value* LogicalNotFn(const char* name, State* state,
214 char* val = Evaluate(state, argv[0]);
221 Value* SubstringFn(const char* name, State* state,
223 char* needle = Evaluate(state, argv[0]);
225 char* haystack = Evaluate(state, argv[1]);
237 Value* EqualityFn(const char* name, State* state, int argc, Expr* argv[]) {
238 char* left = Evaluate(state, argv[0]);
240 char* right = Evaluate(state, argv[1]);
252 Value* InequalityFn(const char* name, State* state, int argc, Expr* argv[]) {
253 char* left = Evaluate(state, argv[0]);
255 char* right = Evaluate(state, argv[1]);
267 Value* SequenceFn(const char* name, State* state, int argc, Expr* argv[]) {
268 Value* left = EvaluateValue(state, argv[0]);
271 return EvaluateValue(state, argv[1]);
274 Value* LessThanIntFn(const char* name, State* state, int argc, Expr* argv[]) {
276 free(state->errmsg);
277 state->errmsg = strdup("less_than_int expects 2 arguments");
283 if (ReadArgs(state, argv, 2, &left, &right) < 0) return NULL;
308 Value* GreaterThanIntFn(const char* name, State* state,
311 free(state->errmsg);
312 state->errmsg = strdup("greater_than_int expects 2 arguments");
320 return LessThanIntFn(name, state, 2, temp);
323 Value* Literal(const char* name, State* state, int argc, Expr* argv[]) {
405 int ReadArgs(State* state, Expr* argv[], int count, ...) {
411 args[i] = Evaluate(state, argv[i]);
431 int ReadValueArgs(State* state, Expr* argv[], int count, ...) {
437 args[i] = EvaluateValue(state, argv[i]);
458 char** ReadVarArgs(State* state, int argc, Expr* argv[]) {
462 args[i] = Evaluate(state, argv[i]);
479 Value** ReadValueVarArgs(State* state, int argc, Expr* argv[]) {
483 args[i] = EvaluateValue(state, argv[i]);
497 // *state. Returns NULL.
498 Value* ErrorAbort(State* state, const char* format, ...) {
504 free(state->errmsg);
505 state->errmsg = buffer;