Skip to content

Commit 940e0c2

Browse files
authored
Merge pull request #306 from StanEpp/develop
Added add_class overload for scoped enums.
2 parents e8c03b3 + 7f4af72 commit 940e0c2

1 file changed

Lines changed: 23 additions & 0 deletions

File tree

include/chaiscript/utility/utility.hpp

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -89,6 +89,29 @@ namespace chaiscript
8989
t_module.add_global_const(chaiscript::const_var(Enum(constant.first)), constant.second);
9090
}
9191
}
92+
93+
template<typename EnumClass, typename ModuleType>
94+
typename std::enable_if<std::is_enum<EnumClass>::value, void>::type
95+
add_class(ModuleType &t_module,
96+
const std::string &t_class_name,
97+
const std::vector<std::pair<EnumClass, std::string>> &t_constants
98+
)
99+
{
100+
t_module.add(chaiscript::user_type<EnumClass>(), t_class_name);
101+
102+
t_module.add(chaiscript::constructor<EnumClass()>(), t_class_name);
103+
t_module.add(chaiscript::constructor<EnumClass(const EnumClass &)>(), t_class_name);
104+
105+
using namespace chaiscript::bootstrap::operators;
106+
equal<EnumClass>(t_module);
107+
not_equal<EnumClass>(t_module);
108+
assign<EnumClass>(t_module);
109+
110+
for (const auto &constant : t_constants)
111+
{
112+
t_module.add_global_const(chaiscript::const_var(EnumClass(constant.first)), constant.second);
113+
}
114+
}
92115
}
93116
}
94117

0 commit comments

Comments
 (0)