Beispiel #1
0
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);
}
Beispiel #2
0
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);
}
Beispiel #3
0
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));
}
Beispiel #4
0
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();
	}
}