#include <ecoli_node_weakref.h>
#include <ecoli_node_expr.h>
+EC_LOG_TYPE_REGISTER(node_expr);
+
struct ec_node_expr {
struct ec_node gen;
return ec_node_parse_child(node->child, state, strvec);
}
-static struct ec_completed *ec_node_expr_complete(const struct ec_node *gen_node,
- struct ec_parsed *state,
- const struct ec_strvec *strvec)
+static int
+ec_node_expr_complete(const struct ec_node *gen_node,
+ struct ec_completed *completed,
+ const struct ec_strvec *strvec)
{
struct ec_node_expr *node = (struct ec_node_expr *)gen_node;
- return ec_node_complete_child(node->child, state, strvec);
+ return ec_node_complete_child(node->child, completed, strvec);
}
static void ec_node_expr_free_priv(struct ec_node *gen_node)
struct ec_node_expr *node = (struct ec_node_expr *)gen_node;
unsigned int i;
- ec_log(EC_LOG_DEBUG, "free %p %p %p\n", node, node->child, node->val_node);
+ EC_LOG(EC_LOG_DEBUG, "free %p %p %p\n", node, node->child, node->val_node);
ec_node_free(node->val_node);
for (i = 0; i < node->bin_ops_len; i++)
weak = NULL;
node->child = expr;
- ec_node_dump(stdout, node->child); //XXX
+ //ec_node_dump(stdout, node->child); //XXX
return 0;
memset(result, 0, sizeof(*result));
memset(&child_result, 0, sizeof(child_result));
- type = get_node_type(expr_gen_node, parsed->node);
+ type = get_node_type(expr_gen_node, ec_parsed_get_node(parsed));
if (type == VAL) {
ret = ops->eval_var(&result->val, userctx, parsed);
if (ret < 0)
result->op_type = type;
}
- TAILQ_FOREACH(child, &parsed->children, next) {
+ EC_PARSED_FOREACH_CHILD(child, parsed) {
- type = get_node_type(expr_gen_node, child->node);
+ type = get_node_type(expr_gen_node, ec_parsed_get_node(child));
if (type == PAREN_OPEN) {
open = child;
continue;
if (!ec_parsed_matches(parsed))
return -EINVAL;
- ec_parsed_dump(stdout, parsed); //XXX
+ //ec_parsed_dump(stdout, parsed); //XXX
ret = eval_expression(&result, userctx, ops, node, parsed);
if (ret < 0)
return ret;