diff options
author | clifford <clifford@b57f626f-c46c-0410-a088-ec61d464b74c> | 2009-06-29 20:30:43 (GMT) |
---|---|---|
committer | clifford <clifford@b57f626f-c46c-0410-a088-ec61d464b74c> | 2009-06-29 20:30:43 (GMT) |
commit | ed687599bf1ca36869dc64dab2b9969f1d96b4c1 (patch) | |
tree | c0aa344d2dd28e03eddd8b5cfdb2f47cdea807d3 /context.cc | |
parent | 934e2cef98bc16d2552641314dae1f17a8841079 (diff) |
Clifford Wolf:
Restructured AST evaluation for control statements
git-svn-id: http://svn.clifford.at/openscad/trunk@37 b57f626f-c46c-0410-a088-ec61d464b74c
Diffstat (limited to 'context.cc')
-rw-r--r-- | context.cc | 10 |
1 files changed, 7 insertions, 3 deletions
@@ -71,6 +71,7 @@ Value Context::lookup_variable(QString name) const return variables[name]; if (parent) return parent->lookup_variable(name); + PRINTA("WARNING: Ignoring unkown variable '%1'.", name); return Value(); } @@ -80,15 +81,18 @@ Value Context::evaluate_function(QString name, const QVector<QString> &argnames, return functions_p->value(name)->evaluate(this, argnames, argvalues); if (parent) return parent->evaluate_function(name, argnames, argvalues); + PRINTA("WARNING: Ignoring unkown function '%1'.", name); return Value(); } -AbstractNode *Context::evaluate_module(QString name, const QVector<QString> &argnames, const QVector<Value> &argvalues, const QVector<AbstractNode*> child_nodes) const +AbstractNode *Context::evaluate_module(QString name, const QVector<QString> &argnames, const QVector<Value> &argvalues, const QVector<ModuleInstanciation*> arg_children, const Context *arg_context) const { + if (arg_context == NULL) + arg_context = this; if (modules_p->contains(name)) - return modules_p->value(name)->evaluate(this, argnames, argvalues, child_nodes); + return modules_p->value(name)->evaluate(this, argnames, argvalues, arg_children, arg_context); if (parent) - return parent->evaluate_module(name, argnames, argvalues, child_nodes); + return parent->evaluate_module(name, argnames, argvalues, arg_children, arg_context); PRINTA("WARNING: Ignoring unkown module '%1'.", name); return NULL; } |