diff options
author | Marius Kintel <marius@kintel.net> | 2011-11-06 17:37:12 (GMT) |
---|---|---|
committer | Marius Kintel <marius@kintel.net> | 2011-11-06 17:37:12 (GMT) |
commit | 45161d4356060e0a974b072c53349569332b6a74 (patch) | |
tree | 3681aede71d35912bc56738ae22ef2f28211e9f7 /src | |
parent | 970c6c1c6e4a7860170aee4ef2239fae7fcd9934 (diff) |
Slight refactoring of builtin function and module handling
Diffstat (limited to 'src')
-rw-r--r-- | src/builtin.cc | 86 | ||||
-rw-r--r-- | src/builtin.h | 45 | ||||
-rw-r--r-- | src/cgaladv.cc | 16 | ||||
-rw-r--r-- | src/color.cc | 2 | ||||
-rw-r--r-- | src/context.cc | 21 | ||||
-rw-r--r-- | src/control.cc | 13 | ||||
-rw-r--r-- | src/csgops.cc | 6 | ||||
-rw-r--r-- | src/dxfdim.cc | 5 | ||||
-rw-r--r-- | src/func.cc | 64 | ||||
-rw-r--r-- | src/import.cc | 9 | ||||
-rw-r--r-- | src/linearextrude.cc | 12 | ||||
-rw-r--r-- | src/module.cc | 29 | ||||
-rw-r--r-- | src/openscad.cc | 6 | ||||
-rw-r--r-- | src/primitives.cc | 22 | ||||
-rw-r--r-- | src/projection.cc | 2 | ||||
-rw-r--r-- | src/render.cc | 10 | ||||
-rw-r--r-- | src/rotateextrude.cc | 12 | ||||
-rw-r--r-- | src/surface.cc | 10 | ||||
-rw-r--r-- | src/transform.cc | 10 |
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)); } |