summaryrefslogtreecommitdiff
path: root/src/module.cc
diff options
context:
space:
mode:
Diffstat (limited to 'src/module.cc')
-rw-r--r--src/module.cc10
1 files changed, 4 insertions, 6 deletions
diff --git a/src/module.cc b/src/module.cc
index 970dd56..9c3541f 100644
--- a/src/module.cc
+++ b/src/module.cc
@@ -153,7 +153,7 @@ std::vector<AbstractNode*> IfElseModuleInstantiation::instantiateElseChildren(co
return this->else_scope.instantiateChildren(evalctx);
}
-std::stack<std::string> Module::stack;
+std::deque<std::string> Module::module_stack;
Module::~Module()
{
@@ -183,20 +183,18 @@ AbstractNode *Module::instantiate(const Context *ctx, const ModuleInstantiation
ModuleContext c(ctx, evalctx);
c.initializeModule(*this);
- c.set_variable("_current_module", inst->name());
- if (!stack.empty())
- c.set_variable("_parent_module", stack.top());
+ module_stack.push_back(inst->name());
+ c.set_variable("$parent_modules", Value(double(module_stack.size())));
c.set_variable("$children", Value(double(inst->scope.children.size())));
// FIXME: Set document path to the path of the module
#if 0 && DEBUG
c.dump(this, inst);
#endif
- stack.push(inst->name());
AbstractNode *node = new AbstractNode(inst);
std::vector<AbstractNode *> instantiatednodes = this->scope.instantiateChildren(&c);
node->children.insert(node->children.end(), instantiatednodes.begin(), instantiatednodes.end());
- stack.pop();
+ module_stack.pop_back();
return node;
}
contact: Jan Huwald // Impressum