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); }
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); }
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); }
static void eval_strlen(opstack ** stack, const void *userdata) { /* string -> int */ const char *c = (const char *)opop_v(stack); opush_i(stack, c ? (int)strlen(c) : 0); unused_arg(userdata); }
static void eval_isnull(opstack ** stack, const void *userdata) { /* (int, int) -> int */ void *a = opop_v(stack); opush_i(stack, (a == NULL) ? 1 : 0); unused_arg(userdata); }