diff options
author | clifford <clifford@b57f626f-c46c-0410-a088-ec61d464b74c> | 2009-06-23 10:31:25 (GMT) |
---|---|---|
committer | clifford <clifford@b57f626f-c46c-0410-a088-ec61d464b74c> | 2009-06-23 10:31:25 (GMT) |
commit | 9271046a02c5e8b62a9ed92e914ab6cf30938fc7 (patch) | |
tree | deb469a4f6787224ec84f74052eaec7c02e484ff /module.cc | |
parent | 4480b67f960af29106e66d1c24e211cf4368f33b (diff) |
Clifford Wolf:
Cleanups and improvements: values and expressions
Avoid unnaccesary nodes in csg tree
git-svn-id: http://svn.clifford.at/openscad/trunk@11 b57f626f-c46c-0410-a088-ec61d464b74c
Diffstat (limited to 'module.cc')
-rw-r--r-- | module.cc | 10 |
1 files changed, 10 insertions, 0 deletions
@@ -28,6 +28,9 @@ AbstractModule::~AbstractModule() AbstractNode *AbstractModule::evaluate(const Context*, const QVector<QString>&, const QVector<Value>&, const QVector<AbstractNode*> child_nodes) const { + if (child_nodes.size() == 1) + return child_nodes[0]; + AbstractNode *node = new AbstractNode(); foreach (AbstractNode *v, child_nodes) node->children.append(v); @@ -120,6 +123,13 @@ AbstractNode *Module::evaluate(const Context *ctx, const QVector<QString> &call_ foreach (AbstractNode *v, child_nodes) node->children.append(v); + if (node->children.size() == 1) { + AbstractNode *c = node->children[0]; + node->children.clear(); + delete node; + return c; + } + return node; } |