const struct ec_parsed *var)
{
const struct ec_strvec *vec;
- struct my_eval_result *eval;
+ const struct ec_node *node;
+ struct my_eval_result *eval = NULL;
+ int64_t val;
(void)userctx;
if (ec_strvec_len(vec) != 1)
return -EINVAL;
+ node = ec_parsed_get_node(var);
+ if (ec_node_int_getval(node, ec_strvec_val(vec, 0), &val) < 0)
+ return -EINVAL;
+
eval = ec_malloc(sizeof(*eval));
if (eval == NULL)
return -ENOMEM;
- eval->val = atoi(ec_strvec_val(vec, 0)); // XXX use strtol
- printf("eval var %d\n", eval->val);
+ eval->val = val;
+ EC_LOG(EC_LOG_DEBUG, "eval var %d\n", eval->val);
*result = eval;
return 0;
else
return -EINVAL;
- printf("eval pre_op %d\n", eval->val);
+ EC_LOG(EC_LOG_DEBUG, "eval pre_op %d\n", eval->val);
*result = eval;
return 0;
else
return -EINVAL;
- printf("eval post_op %d\n", eval->val);
+ EC_LOG(EC_LOG_DEBUG, "eval post_op %d\n", eval->val);
*result = eval;
return 0;
else
return -EINVAL;
- printf("eval bin_op %d\n", eval1->val);
+ EC_LOG(EC_LOG_DEBUG, "eval bin_op %d\n", eval1->val);
ec_free(eval2);
*result = eval1;
(void)open_paren;
(void)close_paren;
- printf("eval paren\n");
+ EC_LOG(EC_LOG_DEBUG, "eval paren\n");
*result = value;
return 0;
struct my_eval_result *eval;
int ret;
- /* XXX check node type (again and again) */
-
p = ec_node_parse(lex_node, str);
if (p == NULL)
return -1;
eval = result;
assert(eval != NULL);
- printf("result: %d (expected %d)\n", eval->val, val);
+ EC_LOG(EC_LOG_DEBUG, "result: %d (expected %d)\n", eval->val, val);
if (eval->val == val)
ret = 0;
else