bool op_exists(t_op *ops, char *nick) { ops = first_op(ops); while (ops != NULL) { if (strcmp(ops->nick, nick) == 0) return (true); ops = ops->next; } return (false); }
Expressions::Operator Expressions::push_calc(Expressions::Operator op) { gint first = first_op(); /* calculate if op has lower precedence than op on stack */ if (first >= 0 && precedence(op) <= precedence(operators.peek(first))) calc(); return push(op); }
t_op *pop_op(t_op *ops, char *nick) { t_op *tmp; while (ops != NULL && strcmp(ops->nick, nick) != 0) ops = ops->next; if (ops != NULL) { tmp = ops; ops = pop_element(ops, tmp); free_op(tmp); } return (first_op(ops)); }
void Expressions::eval(bool pop_brace) { for (;;) { gint n = first_op(); Operator op; if (n < 0) break; op = operators.peek(n); if (op == OP_BRACE) { if (pop_brace) pop_op(n); break; } if (n < 1) break; calc(); } }