diff --git a/include/chaiscript/dispatchkit/handle_return.hpp b/include/chaiscript/dispatchkit/handle_return.hpp index 3a52eb17..e9c3261e 100644 --- a/include/chaiscript/dispatchkit/handle_return.hpp +++ b/include/chaiscript/dispatchkit/handle_return.hpp @@ -34,6 +34,15 @@ namespace chaiscript } }; + template + struct Handle_Return + { + static Boxed_Value handle(Ret *p) + { + return Boxed_Value(p); + } + }; + template struct Handle_Return &> { diff --git a/src/test_module.cpp b/src/test_module.cpp index 77455f67..bb0f3a77 100644 --- a/src/test_module.cpp +++ b/src/test_module.cpp @@ -7,6 +7,7 @@ class TestBaseType public: TestBaseType() {} TestBaseType(int) {} + TestBaseType(int *) {} virtual ~TestBaseType() {} virtual int func() { return 0; } @@ -24,6 +25,11 @@ std::string hello_world() return "Hello World"; } +int *get_new_int() +{ + return new int(1); +} + // MSVC doesn't like that we are using C++ return types from our C declared module // but this is the best way to do it for cross platform compatibility #ifdef BOOST_MSVC @@ -44,6 +50,7 @@ CHAISCRIPT_MODULE_EXPORT chaiscript::ModulePtr create_chaiscript_module_test_mo m->add(chaiscript::constructor(), "TestBaseType"); // m->add(chaiscript::constructor(), "TestBaseType"); m->add(chaiscript::constructor(), "TestBaseType"); + m->add(chaiscript::constructor(), "TestBaseType"); m->add(chaiscript::constructor(), "TestDerivedType"); m->add(chaiscript::constructor(), "TestDerivedType"); @@ -52,6 +59,8 @@ CHAISCRIPT_MODULE_EXPORT chaiscript::ModulePtr create_chaiscript_module_test_mo m->add(chaiscript::fun(&TestBaseType::func), "func"); + m->add(chaiscript::fun(&get_new_int), "get_new_int"); + return m; }