Add additional support for boost::shared_ptr as a return type
This commit is contained in:
@@ -126,7 +126,13 @@ namespace chaiscript
|
||||
}
|
||||
|
||||
template<typename T>
|
||||
boost::shared_ptr<Data> get(boost::shared_ptr<T> obj)
|
||||
boost::shared_ptr<Data> get(const boost::shared_ptr<T> *obj)
|
||||
{
|
||||
return get(*obj);
|
||||
}
|
||||
|
||||
template<typename T>
|
||||
boost::shared_ptr<Data> get(const boost::shared_ptr<T> &obj)
|
||||
{
|
||||
boost::shared_ptr<Data> data(new Data(
|
||||
Get_Type_Info<T>::get(),
|
||||
|
@@ -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);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@@ -40,6 +40,24 @@ namespace chaiscript
|
||||
}
|
||||
};
|
||||
|
||||
template<typename Ret>
|
||||
struct Handle_Return<boost::shared_ptr<Ret> &>
|
||||
{
|
||||
Boxed_Value operator()(const boost::function<boost::shared_ptr<Ret> & ()> &f)
|
||||
{
|
||||
return Boxed_Value(f());
|
||||
}
|
||||
};
|
||||
|
||||
template<typename Ret>
|
||||
struct Handle_Return<const boost::shared_ptr<Ret> &>
|
||||
{
|
||||
Boxed_Value operator()(const boost::function<const boost::shared_ptr<Ret> & ()> &f)
|
||||
{
|
||||
return Boxed_Value(f());
|
||||
}
|
||||
};
|
||||
|
||||
/**
|
||||
* Used internally for handling a return value from a Proxy_Function call
|
||||
*/
|
||||
|
Reference in New Issue
Block a user