diff options
author | don bright <hugh.m.bright@gmail.com> | 2011-11-06 18:19:09 (GMT) |
---|---|---|
committer | don bright <hugh.m.bright@gmail.com> | 2011-11-06 18:19:09 (GMT) |
commit | 8baead275affe384e2344bbbff78b046c08c8812 (patch) | |
tree | 63d741c40631a6c6f1b42a598a672a19844f9f72 /src/builtin.h | |
parent | 31a97f34e1122690cbad2c9bf01f3ede6d3da135 (diff) | |
parent | 6bb261bcd5922c69770c27d25f43c7c315c101a4 (diff) |
Merge remote-tracking branch 'upstream/master'
Diffstat (limited to 'src/builtin.h')
-rw-r--r-- | src/builtin.h | 45 |
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); |