summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorMarius Kintel <marius@kintel.net>2011-11-06 17:37:12 (GMT)
committerMarius Kintel <marius@kintel.net>2011-11-06 17:37:12 (GMT)
commit45161d4356060e0a974b072c53349569332b6a74 (patch)
tree3681aede71d35912bc56738ae22ef2f28211e9f7 /src
parent970c6c1c6e4a7860170aee4ef2239fae7fcd9934 (diff)
Slight refactoring of builtin function and module handling
Diffstat (limited to 'src')
-rw-r--r--src/builtin.cc86
-rw-r--r--src/builtin.h45
-rw-r--r--src/cgaladv.cc16
-rw-r--r--src/color.cc2
-rw-r--r--src/context.cc21
-rw-r--r--src/control.cc13
-rw-r--r--src/csgops.cc6
-rw-r--r--src/dxfdim.cc5
-rw-r--r--src/func.cc64
-rw-r--r--src/import.cc9
-rw-r--r--src/linearextrude.cc12
-rw-r--r--src/module.cc29
-rw-r--r--src/openscad.cc6
-rw-r--r--src/primitives.cc22
-rw-r--r--src/projection.cc2
-rw-r--r--src/render.cc10
-rw-r--r--src/rotateextrude.cc12
-rw-r--r--src/surface.cc10
-rw-r--r--src/transform.cc10
19 files changed, 206 insertions, 174 deletions
diff --git a/src/builtin.cc b/src/builtin.cc
new file mode 100644
index 0000000..6eb32b6
--- /dev/null
+++ b/src/builtin.cc
@@ -0,0 +1,86 @@
+#include "builtin.h"
+#include "function.h"
+#include "module.h"
+#include <boost/foreach.hpp>
+
+Builtins *Builtins::instance(bool erase)
+{
+ static Builtins *s_builtins = new Builtins;
+ if (erase) {
+ delete s_builtins;
+ s_builtins = NULL;
+ }
+ return s_builtins;
+}
+
+void Builtins::init(const char *name, class AbstractModule *module)
+{
+ Builtins::instance()->builtinmodules[name] = module;
+}
+
+void Builtins::init(const char *name, class AbstractFunction *function)
+{
+ Builtins::instance()->builtinfunctions[name] = function;
+}
+
+extern void register_builtin_functions();
+extern void register_builtin_csgops();
+extern void register_builtin_transform();
+extern void register_builtin_color();
+extern void register_builtin_primitives();
+extern void register_builtin_surface();
+extern void register_builtin_control();
+extern void register_builtin_render();
+extern void register_builtin_import();
+extern void register_builtin_projection();
+extern void register_builtin_cgaladv();
+extern void register_builtin_dxf_linear_extrude();
+extern void register_builtin_dxf_rotate_extrude();
+extern void initialize_builtin_dxf_dim();
+
+/*!
+ Registers all builtin functions.
+ Call once for the whole app.
+*/
+void Builtins::initialize()
+{
+ register_builtin_functions();
+ initialize_builtin_dxf_dim();
+
+ init("group", new AbstractModule());
+
+ register_builtin_csgops();
+ register_builtin_transform();
+ register_builtin_color();
+ register_builtin_primitives();
+ register_builtin_surface();
+ register_builtin_control();
+ register_builtin_render();
+ register_builtin_import();
+ register_builtin_projection();
+ register_builtin_cgaladv();
+ register_builtin_dxf_linear_extrude();
+ register_builtin_dxf_rotate_extrude();
+
+ this->deprecations["dxf_linear_extrude"] = "linear_extrude";
+ this->deprecations["dxf_rotate_extrude"] = "rotate_extrude";
+ this->deprecations["import_stl"] = "import";
+ this->deprecations["import_dxf"] = "import";
+ this->deprecations["import_off"] = "import";
+}
+
+std::string Builtins::isDeprecated(const std::string &name)
+{
+ if (this->deprecations.find(name) != this->deprecations.end()) {
+ return this->deprecations[name];
+ }
+ return std::string();
+}
+
+Builtins::~Builtins()
+{
+ BOOST_FOREACH(FunctionContainer::value_type &f, this->builtinfunctions) delete f.second;
+ this->builtinfunctions.clear();
+ BOOST_FOREACH(ModuleContainer::value_type &m, this->builtinmodules) delete m.second;
+ this->builtinmodules.clear();
+}
diff --git a/src/builtin.h b/src/builtin.h
index 643966b..bc096e5 100644
--- a/src/builtin.h
+++ b/src/builtin.h
@@ -4,27 +4,30 @@
#include <string>
#include <boost/unordered_map.hpp>
-extern boost::unordered_map<std::string, class AbstractFunction*> builtin_functions;
-extern void initialize_builtin_functions();
-extern void destroy_builtin_functions();
-
-extern boost::unordered_map<std::string, class AbstractModule*> builtin_modules;
-extern void initialize_builtin_modules();
-extern void destroy_builtin_modules();
-
-extern void register_builtin_csgops();
-extern void register_builtin_transform();
-extern void register_builtin_color();
-extern void register_builtin_primitives();
-extern void register_builtin_surface();
-extern void register_builtin_control();
-extern void register_builtin_render();
-extern void register_builtin_import();
-extern void register_builtin_projection();
-extern void register_builtin_cgaladv();
-extern void register_builtin_dxf_linear_extrude();
-extern void register_builtin_dxf_rotate_extrude();
-extern void initialize_builtin_dxf_dim();
+class Builtins
+{
+public:
+ typedef boost::unordered_map<std::string, class AbstractFunction*> FunctionContainer;
+ typedef boost::unordered_map<std::string, class AbstractModule*> ModuleContainer;
+
+ static Builtins *instance(bool erase = false);
+ static void init(const char *name, class AbstractModule *module);
+ static void init(const char *name, class AbstractFunction *function);
+ void initialize();
+ std::string isDeprecated(const std::string &name);
+
+ const FunctionContainer &functions() { return this->builtinfunctions; }
+ const ModuleContainer &modules() { return this->builtinmodules; }
+
+private:
+ Builtins() { }
+ ~Builtins();
+
+ FunctionContainer builtinfunctions;
+ ModuleContainer builtinmodules;
+
+ boost::unordered_map<std::string, std::string> deprecations;
+};
extern void register_builtin(class Context &ctx);
diff --git a/src/cgaladv.cc b/src/cgaladv.cc
index c83e18b..9abf87c 100644
--- a/src/cgaladv.cc
+++ b/src/cgaladv.cc
@@ -97,14 +97,6 @@ PolySet *CgaladvNode::evaluate_polyset(PolySetEvaluator *ps) const
return ps->evaluatePolySet(*this);
}
-void register_builtin_cgaladv()
-{
- builtin_modules["minkowski"] = new CgaladvModule(MINKOWSKI);
- builtin_modules["glide"] = new CgaladvModule(GLIDE);
- builtin_modules["subdiv"] = new CgaladvModule(SUBDIV);
- builtin_modules["hull"] = new CgaladvModule(HULL);
-}
-
std::string CgaladvNode::name() const
{
switch (this->type) {
@@ -149,3 +141,11 @@ std::string CgaladvNode::toString() const
return stream.str();
}
+
+void register_builtin_cgaladv()
+{
+ Builtins::init("minkowski", new CgaladvModule(MINKOWSKI));
+ Builtins::init("glide", new CgaladvModule(GLIDE));
+ Builtins::init("subdiv", new CgaladvModule(SUBDIV));
+ Builtins::init("hull", new CgaladvModule(HULL));
+}
diff --git a/src/color.cc b/src/color.cc
index 3c6942c..304ccc1 100644
--- a/src/color.cc
+++ b/src/color.cc
@@ -101,5 +101,5 @@ std::string ColorNode::name() const
void register_builtin_color()
{
- builtin_modules["color"] = new ColorModule();
+ Builtins::init("color", new ColorModule());
}
diff --git a/src/context.cc b/src/context.cc
index 47b8a78..bd97f8f 100644
--- a/src/context.cc
+++ b/src/context.cc
@@ -150,20 +150,9 @@ AbstractNode *Context::evaluate_module(const ModuleInstantiation &inst) const
{
if (this->modules_p && this->modules_p->find(inst.modname) != this->modules_p->end()) {
AbstractModule *m = this->modules_p->find(inst.modname)->second;
- if (m == builtin_modules["dxf_linear_extrude"]) {
- PRINTF("DEPRECATED: The dxf_linear_extrude() module will be removed in future releases. Use a linear_extrude() instead.");
- }
- else if (m == builtin_modules["dxf_rotate_extrude"]) {
- PRINTF("DEPRECATED: The dxf_rotate_extrude() module will be removed in future releases. Use a rotate_extrude() instead.");
- }
- else if (m == builtin_modules["import_stl"]) {
- PRINTF("DEPRECATED: The import_stl() module will be removed in future releases. Use import() instead.");
- }
- else if (m == builtin_modules["import_dxf"]) {
- PRINTF("DEPRECATED: The import_dxf() module will be removed in future releases. Use import() instead.");
- }
- else if (m == builtin_modules["import_off"]) {
- PRINTF("DEPRECATED: The import_off() module will be removed in future releases. Use import() instead.");
+ std::string replacement = Builtins::instance()->isDeprecated(inst.modname);
+ if (!replacement.empty()) {
+ PRINTF("DEPRECATED: The %s() module will be removed in future releases. Use %s() instead.", inst.modname.c_str(), replacement.c_str());
}
return m->evaluate(this, &inst);
}
@@ -196,8 +185,8 @@ std::string Context::getAbsolutePath(const std::string &filename) const
void register_builtin(Context &ctx)
{
- ctx.functions_p = &builtin_functions;
- ctx.modules_p = &builtin_modules;
+ ctx.functions_p = &Builtins::instance()->functions();
+ ctx.modules_p = &Builtins::instance()->modules();
ctx.set_variable("$fn", Value(0.0));
ctx.set_variable("$fs", Value(1.0));
ctx.set_variable("$fa", Value(12.0));
diff --git a/src/control.cc b/src/control.cc
index 1f79254..2275c79 100644
--- a/src/control.cc
+++ b/src/control.cc
@@ -169,11 +169,10 @@ AbstractNode *ControlModule::evaluate(const Context*, const ModuleInstantiation
void register_builtin_control()
{
- builtin_modules["child"] = new ControlModule(CHILD);
- builtin_modules["echo"] = new ControlModule(ECHO);
- builtin_modules["assign"] = new ControlModule(ASSIGN);
- builtin_modules["for"] = new ControlModule(FOR);
- builtin_modules["intersection_for"] = new ControlModule(INT_FOR);
- builtin_modules["if"] = new ControlModule(IF);
+ Builtins::init("child", new ControlModule(CHILD));
+ Builtins::init("echo", new ControlModule(ECHO));
+ Builtins::init("assign", new ControlModule(ASSIGN));
+ Builtins::init("for", new ControlModule(FOR));
+ Builtins::init("intersection_for", new ControlModule(INT_FOR));
+ Builtins::init("if", new ControlModule(IF));
}
-
diff --git a/src/csgops.cc b/src/csgops.cc
index 7b363f0..7524559 100644
--- a/src/csgops.cc
+++ b/src/csgops.cc
@@ -72,8 +72,8 @@ std::string CsgNode::name() const
void register_builtin_csgops()
{
- builtin_modules["union"] = new CsgModule(CSG_TYPE_UNION);
- builtin_modules["difference"] = new CsgModule(CSG_TYPE_DIFFERENCE);
- builtin_modules["intersection"] = new CsgModule(CSG_TYPE_INTERSECTION);
+ Builtins::init("union", new CsgModule(CSG_TYPE_UNION));
+ Builtins::init("difference", new CsgModule(CSG_TYPE_DIFFERENCE));
+ Builtins::init("intersection", new CsgModule(CSG_TYPE_INTERSECTION));
}
diff --git a/src/dxfdim.cc b/src/dxfdim.cc
index 7b016f1..c696226 100644
--- a/src/dxfdim.cc
+++ b/src/dxfdim.cc
@@ -194,7 +194,6 @@ Value builtin_dxf_cross(const Context *ctx, const std::vector<std::string> &argn
void initialize_builtin_dxf_dim()
{
- builtin_functions["dxf_dim"] = new BuiltinFunction(&builtin_dxf_dim);
- builtin_functions["dxf_cross"] = new BuiltinFunction(&builtin_dxf_cross);
+ Builtins::init("dxf_dim", new BuiltinFunction(&builtin_dxf_dim));
+ Builtins::init("dxf_cross", new BuiltinFunction(&builtin_dxf_cross));
}
-
diff --git a/src/func.cc b/src/func.cc
index b011a27..a9d5948 100644
--- a/src/func.cc
+++ b/src/func.cc
@@ -33,7 +33,6 @@
#include "mathc99.h"
#include <algorithm>
#include "stl-utils.h"
-#include <boost/foreach.hpp>
AbstractFunction::~AbstractFunction()
{
@@ -81,9 +80,6 @@ std::string Function::dump(const std::string &indent, const std::string &name) c
return dump.str();
}
-typedef boost::unordered_map<std::string, AbstractFunction*> BuiltinContainer;
-BuiltinContainer builtin_functions;
-
BuiltinFunction::~BuiltinFunction()
{
}
@@ -375,38 +371,30 @@ Value builtin_version_num(const Context *ctx, const std::vector<std::string>& ca
return Value(y * 10000 + m * 100 + d);
}
-void initialize_builtin_functions()
-{
- builtin_functions["abs"] = new BuiltinFunction(&builtin_abs);
- builtin_functions["sign"] = new BuiltinFunction(&builtin_sign);
- builtin_functions["rands"] = new BuiltinFunction(&builtin_rands);
- builtin_functions["min"] = new BuiltinFunction(&builtin_min);
- builtin_functions["max"] = new BuiltinFunction(&builtin_max);
- builtin_functions["sin"] = new BuiltinFunction(&builtin_sin);
- builtin_functions["cos"] = new BuiltinFunction(&builtin_cos);
- builtin_functions["asin"] = new BuiltinFunction(&builtin_asin);
- builtin_functions["acos"] = new BuiltinFunction(&builtin_acos);
- builtin_functions["tan"] = new BuiltinFunction(&builtin_tan);
- builtin_functions["atan"] = new BuiltinFunction(&builtin_atan);
- builtin_functions["atan2"] = new BuiltinFunction(&builtin_atan2);
- builtin_functions["round"] = new BuiltinFunction(&builtin_round);
- builtin_functions["ceil"] = new BuiltinFunction(&builtin_ceil);
- builtin_functions["floor"] = new BuiltinFunction(&builtin_floor);
- builtin_functions["pow"] = new BuiltinFunction(&builtin_pow);
- builtin_functions["sqrt"] = new BuiltinFunction(&builtin_sqrt);
- builtin_functions["exp"] = new BuiltinFunction(&builtin_exp);
- builtin_functions["log"] = new BuiltinFunction(&builtin_log);
- builtin_functions["ln"] = new BuiltinFunction(&builtin_ln);
- builtin_functions["str"] = new BuiltinFunction(&builtin_str);
- builtin_functions["lookup"] = new BuiltinFunction(&builtin_lookup);
- builtin_functions["version"] = new BuiltinFunction(&builtin_version);
- builtin_functions["version_num"] = new BuiltinFunction(&builtin_version_num);
- initialize_builtin_dxf_dim();
-}
-
-void destroy_builtin_functions()
-{
- BOOST_FOREACH(BuiltinContainer::value_type &f, builtin_functions) delete f.second;
-//std::for_each(builtin_functions.begin(), builtin_functions.end(), del_fun<AbstractFunction>());
- builtin_functions.clear();
+void register_builtin_functions()
+{
+ Builtins::init("abs", new BuiltinFunction(&builtin_abs));
+ Builtins::init("sign", new BuiltinFunction(&builtin_sign));
+ Builtins::init("rands", new BuiltinFunction(&builtin_rands));
+ Builtins::init("min", new BuiltinFunction(&builtin_min));
+ Builtins::init("max", new BuiltinFunction(&builtin_max));
+ Builtins::init("sin", new BuiltinFunction(&builtin_sin));
+ Builtins::init("cos", new BuiltinFunction(&builtin_cos));
+ Builtins::init("asin", new BuiltinFunction(&builtin_asin));
+ Builtins::init("acos", new BuiltinFunction(&builtin_acos));
+ Builtins::init("tan", new BuiltinFunction(&builtin_tan));
+ Builtins::init("atan", new BuiltinFunction(&builtin_atan));
+ Builtins::init("atan2", new BuiltinFunction(&builtin_atan2));
+ Builtins::init("round", new BuiltinFunction(&builtin_round));
+ Builtins::init("ceil", new BuiltinFunction(&builtin_ceil));
+ Builtins::init("floor", new BuiltinFunction(&builtin_floor));
+ Builtins::init("pow", new BuiltinFunction(&builtin_pow));
+ Builtins::init("sqrt", new BuiltinFunction(&builtin_sqrt));
+ Builtins::init("exp", new BuiltinFunction(&builtin_exp));
+ Builtins::init("log", new BuiltinFunction(&builtin_log));
+ Builtins::init("ln", new BuiltinFunction(&builtin_ln));
+ Builtins::init("str", new BuiltinFunction(&builtin_str));
+ Builtins::init("lookup", new BuiltinFunction(&builtin_lookup));
+ Builtins::init("version", new BuiltinFunction(&builtin_version));
+ Builtins::init("version_num", new BuiltinFunction(&builtin_version_num));
}
diff --git a/src/import.cc b/src/import.cc
index 8a3b0a4..880823d 100644
--- a/src/import.cc
+++ b/src/import.cc
@@ -251,9 +251,8 @@ std::string ImportNode::name() const
void register_builtin_import()
{
- builtin_modules["import_stl"] = new ImportModule(TYPE_STL);
- builtin_modules["import_off"] = new ImportModule(TYPE_OFF);
- builtin_modules["import_dxf"] = new ImportModule(TYPE_DXF);
- builtin_modules["import"] = new ImportModule();
+ Builtins::init("import_stl", new ImportModule(TYPE_STL));
+ Builtins::init("import_off", new ImportModule(TYPE_OFF));
+ Builtins::init("import_dxf", new ImportModule(TYPE_DXF));
+ Builtins::init("import", new ImportModule());
}
-
diff --git a/src/linearextrude.cc b/src/linearextrude.cc
index 019f606..d1d2841 100644
--- a/src/linearextrude.cc
+++ b/src/linearextrude.cc
@@ -114,12 +114,6 @@ AbstractNode *LinearExtrudeModule::evaluate(const Context *ctx, const ModuleInst
return node;
}
-void register_builtin_dxf_linear_extrude()
-{
- builtin_modules["dxf_linear_extrude"] = new LinearExtrudeModule();
- builtin_modules["linear_extrude"] = new LinearExtrudeModule();
-}
-
class PolySet *LinearExtrudeNode::evaluate_polyset(PolySetEvaluator *evaluator) const
{
if (!evaluator) {
@@ -161,3 +155,9 @@ std::string LinearExtrudeNode::toString() const
return stream.str();
}
+
+void register_builtin_dxf_linear_extrude()
+{
+ Builtins::init("dxf_linear_extrude", new LinearExtrudeModule());
+ Builtins::init("linear_extrude", new LinearExtrudeModule());
+}
diff --git a/src/module.cc b/src/module.cc
index 0b17ff7..269e128 100644
--- a/src/module.cc
+++ b/src/module.cc
@@ -29,7 +29,6 @@
#include "context.h"
#include "expression.h"
#include "function.h"
-#include "builtin.h"
#include "printutils.h"
#include <boost/foreach.hpp>
#include <sstream>
@@ -201,31 +200,3 @@ std::string Module::dump(const std::string &indent, const std::string &name) con
}
return dump.str();
}
-
-Module::AbstractModuleContainer builtin_modules;
-
-void initialize_builtin_modules()
-{
- builtin_modules["group"] = new AbstractModule();
-
- register_builtin_csgops();
- register_builtin_transform();
- register_builtin_color();
- register_builtin_primitives();
- register_builtin_surface();
- register_builtin_control();
- register_builtin_render();
- register_builtin_import();
- register_builtin_projection();
- register_builtin_cgaladv();
- register_builtin_dxf_linear_extrude();
- register_builtin_dxf_rotate_extrude();
-}
-
-void destroy_builtin_modules()
-{
- BOOST_FOREACH(Module::AbstractModuleContainer::value_type &m, builtin_modules) {
- delete m.second;
- }
- builtin_modules.clear();
-}
diff --git a/src/openscad.cc b/src/openscad.cc
index e80f02c..678d87a 100644
--- a/src/openscad.cc
+++ b/src/openscad.cc
@@ -101,8 +101,7 @@ int main(int argc, char **argv)
// (which we don't catch). This gives us stack traces without rerunning in gdb.
CGAL::set_error_behaviour(CGAL::ABORT);
#endif
- initialize_builtin_functions();
- initialize_builtin_modules();
+ Builtins::instance()->initialize();
#ifdef Q_WS_X11
// see <http://qt.nokia.com/doc/4.5/qapplication.html#QApplication-2>:
@@ -409,8 +408,7 @@ int main(int argc, char **argv)
exit(1);
}
- destroy_builtin_functions();
- destroy_builtin_modules();
+ Builtins::instance(true);
return rc;
}
diff --git a/src/primitives.cc b/src/primitives.cc
index a651ff8..b18a816 100644
--- a/src/primitives.cc
+++ b/src/primitives.cc
@@ -236,17 +236,6 @@ AbstractNode *PrimitiveModule::evaluate(const Context *ctx, const ModuleInstanti
return node;
}
-void register_builtin_primitives()
-{
- builtin_modules["cube"] = new PrimitiveModule(CUBE);
- builtin_modules["sphere"] = new PrimitiveModule(SPHERE);
- builtin_modules["cylinder"] = new PrimitiveModule(CYLINDER);
- builtin_modules["polyhedron"] = new PrimitiveModule(POLYHEDRON);
- builtin_modules["square"] = new PrimitiveModule(SQUARE);
- builtin_modules["circle"] = new PrimitiveModule(CIRCLE);
- builtin_modules["polygon"] = new PrimitiveModule(POLYGON);
-}
-
/*!
Returns the number of subdivision of a whole circle, given radius and
the three special variables $fn, $fs and $fa
@@ -606,3 +595,14 @@ std::string PrimitiveNode::toString() const
return stream.str();
}
+
+void register_builtin_primitives()
+{
+ Builtins::init("cube", new PrimitiveModule(CUBE));
+ Builtins::init("sphere", new PrimitiveModule(SPHERE));
+ Builtins::init("cylinder", new PrimitiveModule(CYLINDER));
+ Builtins::init("polyhedron", new PrimitiveModule(POLYHEDRON));
+ Builtins::init("square", new PrimitiveModule(SQUARE));
+ Builtins::init("circle", new PrimitiveModule(CIRCLE));
+ Builtins::init("polygon", new PrimitiveModule(POLYGON));
+}
diff --git a/src/projection.cc b/src/projection.cc
index 1333d19..a712800 100644
--- a/src/projection.cc
+++ b/src/projection.cc
@@ -97,5 +97,5 @@ std::string ProjectionNode::toString() const
void register_builtin_projection()
{
- builtin_modules["projection"] = new ProjectionModule();
+ Builtins::init("projection", new ProjectionModule());
}
diff --git a/src/render.cc b/src/render.cc
index b79fa56..7b0ced5 100644
--- a/src/render.cc
+++ b/src/render.cc
@@ -67,11 +67,6 @@ class PolySet *RenderNode::evaluate_polyset(PolySetEvaluator *ps) const
return ps->evaluatePolySet(*this);
}
-void register_builtin_render()
-{
- builtin_modules["render"] = new RenderModule();
-}
-
std::string RenderNode::toString() const
{
std::stringstream stream;
@@ -80,3 +75,8 @@ std::string RenderNode::toString() const
return stream.str();
}
+
+void register_builtin_render()
+{
+ Builtins::init("render", new RenderModule());
+}
diff --git a/src/rotateextrude.cc b/src/rotateextrude.cc
index 13e5db0..ae8793d 100644
--- a/src/rotateextrude.cc
+++ b/src/rotateextrude.cc
@@ -92,12 +92,6 @@ AbstractNode *RotateExtrudeModule::evaluate(const Context *ctx, const ModuleInst
return node;
}
-void register_builtin_dxf_rotate_extrude()
-{
- builtin_modules["dxf_rotate_extrude"] = new RotateExtrudeModule();
- builtin_modules["rotate_extrude"] = new RotateExtrudeModule();
-}
-
PolySet *RotateExtrudeNode::evaluate_polyset(PolySetEvaluator *evaluator) const
{
if (!evaluator) {
@@ -133,3 +127,9 @@ std::string RotateExtrudeNode::toString() const
return stream.str();
}
+
+void register_builtin_dxf_rotate_extrude()
+{
+ Builtins::init("dxf_rotate_extrude", new RotateExtrudeModule());
+ Builtins::init("rotate_extrude", new RotateExtrudeModule());
+}
diff --git a/src/surface.cc b/src/surface.cc
index 8349afd..cdac4ec 100644
--- a/src/surface.cc
+++ b/src/surface.cc
@@ -92,11 +92,6 @@ AbstractNode *SurfaceModule::evaluate(const Context *ctx, const ModuleInstantiat
return node;
}
-void register_builtin_surface()
-{
- builtin_modules["surface"] = new SurfaceModule();
-}
-
PolySet *SurfaceNode::evaluate_polyset(class PolySetEvaluator *) const
{
handle_dep(filename);
@@ -219,3 +214,8 @@ std::string SurfaceNode::toString() const
return stream.str();
}
+
+void register_builtin_surface()
+{
+ Builtins::init("surface", new SurfaceModule());
+}
diff --git a/src/transform.cc b/src/transform.cc
index eda69c2..f5038b1 100644
--- a/src/transform.cc
+++ b/src/transform.cc
@@ -206,9 +206,9 @@ std::string TransformNode::name() const
void register_builtin_transform()
{
- builtin_modules["scale"] = new TransformModule(SCALE);
- builtin_modules["rotate"] = new TransformModule(ROTATE);
- builtin_modules["mirror"] = new TransformModule(MIRROR);
- builtin_modules["translate"] = new TransformModule(TRANSLATE);
- builtin_modules["multmatrix"] = new TransformModule(MULTMATRIX);
+ Builtins::init("scale", new TransformModule(SCALE));
+ Builtins::init("rotate", new TransformModule(ROTATE));
+ Builtins::init("mirror", new TransformModule(MIRROR));
+ Builtins::init("translate", new TransformModule(TRANSLATE));
+ Builtins::init("multmatrix", new TransformModule(MULTMATRIX));
}
contact: Jan Huwald // Impressum