summaryrefslogtreecommitdiff
path: root/src/builtin.h
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/builtin.h
parent970c6c1c6e4a7860170aee4ef2239fae7fcd9934 (diff)
Slight refactoring of builtin function and module handling
Diffstat (limited to 'src/builtin.h')
-rw-r--r--src/builtin.h45
1 files changed, 24 insertions, 21 deletions
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);
contact: Jan Huwald // Impressum