Merge branch 'master' into ChaiScript_5_0_CPP_11

Conflicts:
	include/chaiscript/dispatchkit/dynamic_object.hpp
	include/chaiscript/dispatchkit/proxy_functions_detail.hpp
This commit is contained in:
Jason Turner
2013-04-25 12:42:00 -06:00
2 changed files with 9 additions and 9 deletions

View File

@@ -87,7 +87,7 @@ namespace chaiscript
virtual bool call_match(const std::vector<Boxed_Value> &vals, const Dynamic_Cast_Conversions &t_conversions) const virtual bool call_match(const std::vector<Boxed_Value> &vals, const Dynamic_Cast_Conversions &t_conversions) const
{ {
if (dynamic_object_typename_match(vals, m_type_name, m_ti)) if (dynamic_object_typename_match(vals, m_type_name, m_ti, t_conversions))
{ {
return m_func->call_match(vals, t_conversions); return m_func->call_match(vals, t_conversions);
} else { } else {
@@ -115,7 +115,7 @@ namespace chaiscript
protected: protected:
virtual Boxed_Value do_call(const std::vector<Boxed_Value> &params, const Dynamic_Cast_Conversions &t_conversions) const virtual Boxed_Value do_call(const std::vector<Boxed_Value> &params, const Dynamic_Cast_Conversions &t_conversions) const
{ {
if (dynamic_object_typename_match(params, m_type_name, m_ti)) if (dynamic_object_typename_match(params, m_type_name, m_ti, t_conversions))
{ {
return (*m_func)(params, t_conversions); return (*m_func)(params, t_conversions);
} else { } else {
@@ -123,9 +123,9 @@ namespace chaiscript
} }
} }
virtual bool compare_first_type(const Boxed_Value &bv) const virtual bool compare_first_type(const Boxed_Value &bv, const Dynamic_Cast_Conversions &t_conversions) const
{ {
return dynamic_object_typename_match(bv, m_type_name, m_ti); return dynamic_object_typename_match(bv, m_type_name, m_ti, t_conversions);
} }
private: private:
@@ -141,13 +141,13 @@ namespace chaiscript
} }
static bool dynamic_object_typename_match(const Boxed_Value &bv, const std::string &name, static bool dynamic_object_typename_match(const Boxed_Value &bv, const std::string &name,
const std::shared_ptr<Type_Info> &ti) const std::shared_ptr<Type_Info> &ti, const Dynamic_Cast_Conversions &t_conversions)
{ {
static Type_Info doti = user_type<Dynamic_Object>(); static Type_Info doti = user_type<Dynamic_Object>();
if (bv.get_type_info().bare_equal(doti)) if (bv.get_type_info().bare_equal(doti))
{ {
try { try {
const Dynamic_Object &d = boxed_cast<const Dynamic_Object &>(bv); const Dynamic_Object &d = boxed_cast<const Dynamic_Object &>(bv, &t_conversions);
return name == "Dynamic_Object" || d.get_type_name() == name; return name == "Dynamic_Object" || d.get_type_name() == name;
} catch (const std::bad_cast &) { } catch (const std::bad_cast &) {
return false; return false;
@@ -164,11 +164,11 @@ namespace chaiscript
} }
static bool dynamic_object_typename_match(const std::vector<Boxed_Value> &bvs, const std::string &name, static bool dynamic_object_typename_match(const std::vector<Boxed_Value> &bvs, const std::string &name,
const std::shared_ptr<Type_Info> &ti) const std::shared_ptr<Type_Info> &ti, const Dynamic_Cast_Conversions &t_conversions)
{ {
if (bvs.size() > 0) if (bvs.size() > 0)
{ {
return dynamic_object_typename_match(bvs[0], name, ti); return dynamic_object_typename_match(bvs[0], name, ti, t_conversions);
} else { } else {
return false; return false;
} }

View File

@@ -116,7 +116,7 @@ namespace chaiscript
{ {
template<typename ... InnerParams> template<typename ... InnerParams>
static Ret do_call(const std::function<Ret (Params...)> &f, static Ret do_call(const std::function<Ret (Params...)> &f,
const std::vector<Boxed_Value> &, const Dynamic_Cast_Conversions &t_conversions, InnerParams &&... innerparams) const std::vector<Boxed_Value> &, const Dynamic_Cast_Conversions &t_conversions, InnerParams &&... innerparams)
{ {
return f(boxed_cast<Params>(std::forward<InnerParams>(innerparams), &t_conversions)...); return f(boxed_cast<Params>(std::forward<InnerParams>(innerparams), &t_conversions)...);
} }