summaryrefslogtreecommitdiff
path: root/openscad.h
diff options
context:
space:
mode:
authorclifford <clifford@b57f626f-c46c-0410-a088-ec61d464b74c>2009-07-01 09:48:25 (GMT)
committerclifford <clifford@b57f626f-c46c-0410-a088-ec61d464b74c>2009-07-01 09:48:25 (GMT)
commit82fad98cb63d6e27e7c156d4c5e4c9a9847abfd1 (patch)
treed70ff76ec4f5138706df5cb11fd034e60d927f4d /openscad.h
parent27ecd0b1d0bf0114b465beeb4db482f0f1f87c52 (diff)
Clifford Wolf:
Yet another redesign of the evaluation path git-svn-id: http://svn.clifford.at/openscad/trunk@44 b57f626f-c46c-0410-a088-ec61d464b74c
Diffstat (limited to 'openscad.h')
-rw-r--r--openscad.h17
1 files changed, 12 insertions, 5 deletions
diff --git a/openscad.h b/openscad.h
index 081a7a0..2de5d42 100644
--- a/openscad.h
+++ b/openscad.h
@@ -209,7 +209,7 @@ class AbstractModule
{
public:
virtual ~AbstractModule();
- virtual AbstractNode *evaluate(const Context *ctx, const QVector<QString> &call_argnames, const QVector<Value> &call_argvalues, const QVector<ModuleInstanciation*> arg_children, const Context *arg_context) const;
+ virtual AbstractNode *evaluate(const Context *ctx, const ModuleInstanciation *inst) const;
virtual QString dump(QString indent, QString name) const;
};
@@ -220,9 +220,14 @@ public:
QString modname;
QVector<QString> argnames;
QVector<Expression*> argexpr;
+ QVector<Value> argvalues;
QVector<ModuleInstanciation*> children;
- ModuleInstanciation() { }
+ bool tag_root;
+ bool tag_highlight;
+ const Context *ctx;
+
+ ModuleInstanciation() : tag_root(false), tag_highlight(false), ctx(NULL) { }
~ModuleInstanciation();
QString dump(QString indent) const;
@@ -246,7 +251,7 @@ public:
Module() { }
virtual ~Module();
- virtual AbstractNode *evaluate(const Context *ctx, const QVector<QString> &call_argnames, const QVector<Value> &call_argvalues, const QVector<ModuleInstanciation*> arg_children, const Context *arg_context) const;
+ virtual AbstractNode *evaluate(const Context *ctx, const ModuleInstanciation *inst) const;
virtual QString dump(QString indent, QString name) const;
};
@@ -279,7 +284,7 @@ public:
Value lookup_variable(QString name) const;
Value evaluate_function(QString name, const QVector<QString> &argnames, const QVector<Value> &argvalues) const;
- AbstractNode *evaluate_module(QString name, const QVector<QString> &argnames, const QVector<Value> &argvalues, const QVector<ModuleInstanciation*> arg_children, const Context *arg_context = NULL) const;
+ AbstractNode *evaluate_module(const ModuleInstanciation *inst) const;
};
// The CGAL template magic slows down the compilation process by a factor of 5.
@@ -390,6 +395,7 @@ class AbstractNode
{
public:
QVector<AbstractNode*> children;
+ const ModuleInstanciation *modinst;
int progress_mark;
void progress_prepare();
@@ -398,7 +404,7 @@ public:
int idx;
static int idx_counter;
- AbstractNode();
+ AbstractNode(const ModuleInstanciation *mi);
virtual ~AbstractNode();
#ifdef ENABLE_CGAL
virtual CGAL_Nef_polyhedron render_cgal_nef_polyhedron() const;
@@ -414,6 +420,7 @@ public:
RENDER_CGAL,
RENDER_OPENCSG
};
+ AbstractPolyNode(const ModuleInstanciation *mi) : AbstractNode(mi) { };
virtual PolySet *render_polyset(render_mode_e mode) const;
#ifdef ENABLE_CGAL
virtual CGAL_Nef_polyhedron render_cgal_nef_polyhedron() const;
contact: Jan Huwald // Impressum