diff --git a/include/chaiscript/utility/utility.hpp b/include/chaiscript/utility/utility.hpp index 7f5b6c0..262ae1a 100644 --- a/include/chaiscript/utility/utility.hpp +++ b/include/chaiscript/utility/utility.hpp @@ -17,7 +17,7 @@ namespace chaiscript { /// \todo Use of this utility, and uniform initializer lists, is causing memory errors in MSVC - /* + template void add_class(ModuleType &t_module, const std::string &t_classname, @@ -37,7 +37,7 @@ namespace chaiscript } } - */ + } } diff --git a/src/reflection.cpp b/src/reflection.cpp index 7f9f31f..cb369f2 100644 --- a/src/reflection.cpp +++ b/src/reflection.cpp @@ -73,26 +73,15 @@ CHAISCRIPT_MODULE_EXPORT chaiscript::ModulePtr create_chaiscript_module_reflect chaiscript::bootstrap::standard_library::vector_type > >("AST_NodeVector", m); using namespace chaiscript; - - m->add(chaiscript::user_type(), "eval_error"); - m->add(chaiscript::fun(&chaiscript::exception::eval_error::reason), "reason"); - m->add(chaiscript::fun(&chaiscript::exception::eval_error::call_stack), "call_stack"); - /* + chaiscript::utility::add_class(*m, "eval_error", { }, { {fun(&chaiscript::exception::eval_error::reason), "reason"}, {fun(&chaiscript::exception::eval_error::call_stack), "call_stack"} } ); - */ - - m->add(chaiscript::user_type(), "File_Position"); - m->add(chaiscript::constructor(), "File_Position"); - m->add(chaiscript::constructor(), "File_Position"); - m->add(chaiscript::fun(&File_Position::line), "line"); - m->add(chaiscript::fun(&File_Position::column), "column"); - - /* + + chaiscript::utility::add_class(*m, "File_Position", { constructor(), @@ -100,19 +89,8 @@ CHAISCRIPT_MODULE_EXPORT chaiscript::ModulePtr create_chaiscript_module_reflect { {fun(&File_Position::line), "line"}, {fun(&File_Position::column), "column"} } ); - */ - - m->add(chaiscript::user_type(), "AST_Node"); - m->add(chaiscript::fun(&AST_Node::text), "text"); - m->add(chaiscript::fun(&AST_Node::identifier), "identifier"); - m->add(chaiscript::fun(&AST_Node::filename), "filename"); - m->add(chaiscript::fun(&AST_Node::start), "start"); - m->add(chaiscript::fun(&AST_Node::end), "end"); - m->add(chaiscript::fun(&AST_Node::internal_to_string), "internal_to_string"); - m->add(chaiscript::fun(&AST_Node::children), "children"); - m->add(chaiscript::fun(&AST_Node::replace_child), "replace_child"); - - /* + + chaiscript::utility::add_class(*m, "AST_Node", { }, @@ -126,21 +104,15 @@ CHAISCRIPT_MODULE_EXPORT chaiscript::ModulePtr create_chaiscript_module_reflect {fun(&AST_Node::replace_child), "replace_child"} } ); - */ - - m->add(chaiscript::user_type(), "ChaiScript_Parser"); - m->add(chaiscript::constructor(), "ChaiScript_Parser"); - m->add(chaiscript::fun(&parser::ChaiScript_Parser::parse), "parse"); - m->add(chaiscript::fun(&parser::ChaiScript_Parser::ast), "ast"); - - /* + + chaiscript::utility::add_class(*m, "ChaiScript_Parser", { constructor() }, { {fun(&parser::ChaiScript_Parser::parse), "parse"}, {fun(&parser::ChaiScript_Parser::ast), "ast"} } ); - */ + return m;