return ke;
}
-int ke_eval(const kexpr_t *ke, int64_t *_i, double *_r)
+int ke_eval(const kexpr_t *ke, int64_t *_i, double *_r, int *int_ret)
{
#define _do_cmp(_op) do { \
q = &stack[--top], p = &stack[top-1]; \
}
if (top != 1) err |= KEE_ARG;
free(stack);
- *_i = stack->i, *_r = stack->r;
+ *_i = stack->i, *_r = stack->r, *int_ret = (stack->vtype == KEV_INT);
return err;
#undef _do_bin_int
if (!to_print) {
int64_t vi;
double vr;
- err = ke_eval(ke, &vi, &vr);
+ int int_ret;
+ err = ke_eval(ke, &vi, &vr, &int_ret);
if (err) {
fprintf(stderr, "ERROR: 0x%x\n", err);
return 1;
int ke_set_int(kexpr_t *ke, const char *var, int64_t x);
int ke_set_real(kexpr_t *ke, const char *var, double x);
int ke_set_str(kexpr_t *ke, const char *var, const char *x);
-int ke_eval(const kexpr_t *ke, int64_t *_i, double *_r);
+int ke_eval(const kexpr_t *ke, int64_t *_i, double *_r, int *int_ret);
#ifdef __cplusplus
}