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/builtin.h | |
parent | 970c6c1c6e4a7860170aee4ef2239fae7fcd9934 (diff) |
Slight refactoring of builtin function and module handling
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); |