diff --git a/dispatchkit/bootstrap.hpp b/dispatchkit/bootstrap.hpp index 2b4240e..7be961e 100644 --- a/dispatchkit/bootstrap.hpp +++ b/dispatchkit/bootstrap.hpp @@ -397,6 +397,21 @@ namespace dispatchkit register_function(s, &parse_string, "to_" + name); } + template + boost::shared_ptr shared_ptr_clone(boost::shared_ptr f) + { + return f; + } + + template + Boxed_Value ptr_assign(Boxed_Value lhs, boost::shared_ptr rhs) + { + lhs.assign(Boxed_Value(rhs)); + + return lhs; + } + + struct Bootstrap { static Boxed_Value unknown_assign(Boxed_Value lhs, Boxed_Value rhs) @@ -467,11 +482,6 @@ namespace dispatchkit return Boxed_Value(f->types_match(std::vector(params.begin() + 1, params.end()))); } - static boost::shared_ptr function_clone(boost::shared_ptr f) - { - return f; - } - static void bootstrap(Dispatch_Engine &s) { s.register_type("void"); @@ -512,7 +522,8 @@ namespace dispatchkit s.register_function(boost::shared_ptr(new Dynamic_Proxy_Function(boost::bind(&bind_function, _1))), "bind"); - register_function(s, &function_clone, "clone"); + register_function(s, &shared_ptr_clone, "clone"); + register_function(s, &ptr_assign, "="); s.register_function(boost::shared_ptr(new Dynamic_Proxy_Function(boost::bind(&call_exists, _1))), "call_exists");