From 7f4af72244dd113c1b19c2ef436e32d259dfe3fa Mon Sep 17 00:00:00 2001 From: Stan Date: Wed, 23 Nov 2016 20:39:21 +0100 Subject: [PATCH] Added add_class overload for scoped enums. --- include/chaiscript/utility/utility.hpp | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/include/chaiscript/utility/utility.hpp b/include/chaiscript/utility/utility.hpp index fa2bbdb..11262ff 100644 --- a/include/chaiscript/utility/utility.hpp +++ b/include/chaiscript/utility/utility.hpp @@ -89,6 +89,29 @@ namespace chaiscript t_module.add_global_const(chaiscript::const_var(Enum(constant.first)), constant.second); } } + + template + typename std::enable_if::value, void>::type + add_class(ModuleType &t_module, + const std::string &t_class_name, + const std::vector> &t_constants + ) + { + t_module.add(chaiscript::user_type(), t_class_name); + + t_module.add(chaiscript::constructor(), t_class_name); + t_module.add(chaiscript::constructor(), t_class_name); + + using namespace chaiscript::bootstrap::operators; + equal(t_module); + not_equal(t_module); + assign(t_module); + + for (const auto &constant : t_constants) + { + t_module.add_global_const(chaiscript::const_var(EnumClass(constant.first)), constant.second); + } + } } }