diff --git a/include/chaiscript/dispatchkit/boxed_value.hpp b/include/chaiscript/dispatchkit/boxed_value.hpp index 3dd7db1..62c38a6 100644 --- a/include/chaiscript/dispatchkit/boxed_value.hpp +++ b/include/chaiscript/dispatchkit/boxed_value.hpp @@ -126,7 +126,13 @@ namespace chaiscript } template - boost::shared_ptr get(boost::shared_ptr obj) + boost::shared_ptr get(const boost::shared_ptr *obj) + { + return get(*obj); + } + + template + boost::shared_ptr get(const boost::shared_ptr &obj) { boost::shared_ptr data(new Data( Get_Type_Info::get(), diff --git a/include/chaiscript/dispatchkit/dispatchkit.hpp b/include/chaiscript/dispatchkit/dispatchkit.hpp index 7da511a..d825a9a 100644 --- a/include/chaiscript/dispatchkit/dispatchkit.hpp +++ b/include/chaiscript/dispatchkit/dispatchkit.hpp @@ -389,7 +389,8 @@ namespace chaiscript */ void dump_object(Boxed_Value o, const Dispatch_Engine &e) { - std::cout << e.get_type_name(o.get_type_info()) << std::endl; + Type_Info ti = o.get_type_info(); + std::cout << (ti.m_is_const?"const ":"") << e.get_type_name(ti) << std::endl; } /** @@ -397,7 +398,7 @@ namespace chaiscript */ void dump_type(const Type_Info &type, const Dispatch_Engine &e) { - std::cout << e.get_type_name(type); + std::cout << (type.m_is_const?"const ":"") << e.get_type_name(type); } /** diff --git a/include/chaiscript/dispatchkit/proxy_functions.hpp b/include/chaiscript/dispatchkit/proxy_functions.hpp index 260ceb1..06ef239 100644 --- a/include/chaiscript/dispatchkit/proxy_functions.hpp +++ b/include/chaiscript/dispatchkit/proxy_functions.hpp @@ -40,6 +40,24 @@ namespace chaiscript } }; + template + struct Handle_Return &> + { + Boxed_Value operator()(const boost::function & ()> &f) + { + return Boxed_Value(f()); + } + }; + + template + struct Handle_Return &> + { + Boxed_Value operator()(const boost::function & ()> &f) + { + return Boxed_Value(f()); + } + }; + /** * Used internally for handling a return value from a Proxy_Function call */