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/func.cc | |
parent | 970c6c1c6e4a7860170aee4ef2239fae7fcd9934 (diff) |
Slight refactoring of builtin function and module handling
Diffstat (limited to 'src/func.cc')
-rw-r--r-- | src/func.cc | 64 |
1 files changed, 26 insertions, 38 deletions
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)); } |