Ejemplo n.º 1
0
static void eval_add(opstack ** stack, const void *userdata)
{                               /* (int, int) -> int */
    int a = opop_i(stack);
    int b = opop_i(stack);
    opush_i(stack, a + b);
    unused_arg(userdata);
}
Ejemplo n.º 2
0
static void eval_eq(opstack ** stack, const void *userdata)
{                               /* (int, int) -> int */
    int a = opop_i(stack);
    int b = opop_i(stack);
    int rval = (a == b) ? 1 : 0;
    opush_i(stack, rval);
    unused_arg(userdata);
}
Ejemplo n.º 3
0
static void eval_lt(opstack ** stack, const void *userdata)
{                               /* (int, int) -> int */
  int a = opop_i(stack);
  int b = opop_i(stack);
  int rval = (b < a) ? 1 : 0;
  opush_i(stack, rval);
  unused(userdata);
}
Ejemplo n.º 4
0
static void eval_if(opstack ** stack, const void *userdata)
{                               /* (int, int) -> int */
    void *a = opop_v(stack);
    void *b = opop_v(stack);
    int cond = opop_i(stack);
    opush_v(stack, cond ? b : a);
    unused_arg(userdata);
}
Ejemplo n.º 5
0
static void eval_int(opstack ** stack, const void *userdata)
{
    int i = opop_i(stack);
    const char *c = itoa10(i);
    size_t len = strlen(c);
    variant var;

    var.v = strcpy(balloc(len + 1), c);
    opush(stack, var);
}