summaryrefslogtreecommitdiff
path: root/src/module.cc
diff options
context:
space:
mode:
authorMarius Kintel <marius@kintel.net>2011-09-04 18:35:23 (GMT)
committerMarius Kintel <marius@kintel.net>2011-09-04 18:35:23 (GMT)
commit5417b4fa65098a41299bb2d693d646a5f4d06051 (patch)
tree16d92e93f7b26470aa9113e9602ffd4b7d378f35 /src/module.cc
parent2a18b857f0dccca7d9f697f7cbcae6759610429c (diff)
Ported use for Qt's foreach to BOOST_FOREACH
Diffstat (limited to 'src/module.cc')
-rw-r--r--src/module.cc51
1 files changed, 30 insertions, 21 deletions
diff --git a/src/module.cc b/src/module.cc
index 2852c4e..365eff5 100644
--- a/src/module.cc
+++ b/src/module.cc
@@ -42,11 +42,7 @@ AbstractNode *AbstractModule::evaluate(const Context*, const ModuleInstantiation
{
AbstractNode *node = new AbstractNode(inst);
- foreach (ModuleInstantiation *v, inst->children) {
- AbstractNode *n = v->evaluate(inst->ctx);
- if (n)
- node->children.push_back(n);
- }
+ node->children = inst->evaluateChildren();
return node;
}
@@ -60,16 +56,13 @@ std::string AbstractModule::dump(const std::string &indent, const std::string &n
ModuleInstantiation::~ModuleInstantiation()
{
- foreach (Expression *v, argexpr)
- delete v;
- foreach (ModuleInstantiation *v, children)
- delete v;
+ BOOST_FOREACH (Expression *v, argexpr) delete v;
+ BOOST_FOREACH (ModuleInstantiation *v, children) delete v;
}
IfElseModuleInstantiation::~IfElseModuleInstantiation()
{
- foreach (ModuleInstantiation *v, else_children)
- delete v;
+ BOOST_FOREACH (ModuleInstantiation *v, else_children) delete v;
}
std::string ModuleInstantiation::dump(const std::string &indent) const
@@ -106,7 +99,7 @@ AbstractNode *ModuleInstantiation::evaluate(const Context *ctx) const
} else {
ModuleInstantiation *that = (ModuleInstantiation*)this;
that->argvalues.clear();
- foreach (Expression *v, that->argexpr) {
+ BOOST_FOREACH (Expression *v, that->argexpr) {
that->argvalues.push_back(v->evaluate(ctx));
}
that->ctx = ctx;
@@ -117,18 +110,34 @@ AbstractNode *ModuleInstantiation::evaluate(const Context *ctx) const
return node;
}
-Module::~Module()
+std::vector<AbstractNode*> ModuleInstantiation::evaluateChildren(const Context *ctx) const
{
- foreach (Expression *v, assignments_expr)
- delete v;
- BOOST_FOREACH(FunctionContainer::value_type &f, functions) {
- delete f.second;
+ if (!ctx) ctx = this->ctx;
+ std::vector<AbstractNode*> childnodes;
+ BOOST_FOREACH (ModuleInstantiation *v, this->children) {
+ AbstractNode *n = v->evaluate(this->ctx);
+ if (n != NULL) childnodes.push_back(n);
}
- BOOST_FOREACH(AbstractModuleContainer::value_type &m, modules) {
- delete m.second;
+ return childnodes;
+}
+
+std::vector<AbstractNode*> IfElseModuleInstantiation::evaluateElseChildren(const Context *ctx) const
+{
+ if (!ctx) ctx = this->ctx;
+ std::vector<AbstractNode*> childnodes;
+ BOOST_FOREACH (ModuleInstantiation *v, this->else_children) {
+ AbstractNode *n = v->evaluate(this->ctx);
+ if (n != NULL) childnodes.push_back(n);
}
- foreach (ModuleInstantiation *v, children)
- delete v;
+ return childnodes;
+}
+
+Module::~Module()
+{
+ BOOST_FOREACH (Expression *v, assignments_expr) delete v;
+ BOOST_FOREACH (FunctionContainer::value_type &f, functions) delete f.second;
+ BOOST_FOREACH (AbstractModuleContainer::value_type &m, modules) delete m.second;
+ BOOST_FOREACH (ModuleInstantiation *v, children) delete v;
}
AbstractNode *Module::evaluate(const Context *ctx, const ModuleInstantiation *inst) const
contact: Jan Huwald // Impressum