diff --git a/include/chaiscript/dispatchkit/dynamic_object.hpp b/include/chaiscript/dispatchkit/dynamic_object.hpp index 7467482..934aba5 100644 --- a/include/chaiscript/dispatchkit/dynamic_object.hpp +++ b/include/chaiscript/dispatchkit/dynamic_object.hpp @@ -87,7 +87,7 @@ namespace chaiscript virtual bool call_match(const std::vector &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); } else { @@ -115,7 +115,7 @@ namespace chaiscript protected: virtual Boxed_Value do_call(const std::vector ¶ms, 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); } 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: @@ -141,13 +141,13 @@ namespace chaiscript } static bool dynamic_object_typename_match(const Boxed_Value &bv, const std::string &name, - const std::shared_ptr &ti) + const std::shared_ptr &ti, const Dynamic_Cast_Conversions &t_conversions) { static Type_Info doti = user_type(); if (bv.get_type_info().bare_equal(doti)) { try { - const Dynamic_Object &d = boxed_cast(bv); + const Dynamic_Object &d = boxed_cast(bv, &t_conversions); return name == "Dynamic_Object" || d.get_type_name() == name; } catch (const std::bad_cast &) { return false; @@ -164,11 +164,11 @@ namespace chaiscript } static bool dynamic_object_typename_match(const std::vector &bvs, const std::string &name, - const std::shared_ptr &ti) + const std::shared_ptr &ti, const Dynamic_Cast_Conversions &t_conversions) { 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 { return false; } diff --git a/include/chaiscript/dispatchkit/proxy_functions_detail.hpp b/include/chaiscript/dispatchkit/proxy_functions_detail.hpp index 94d1704..f7ebfdc 100644 --- a/include/chaiscript/dispatchkit/proxy_functions_detail.hpp +++ b/include/chaiscript/dispatchkit/proxy_functions_detail.hpp @@ -116,7 +116,7 @@ namespace chaiscript { template static Ret do_call(const std::function &f, - const std::vector &, const Dynamic_Cast_Conversions &t_conversions, InnerParams &&... innerparams) + const std::vector &, const Dynamic_Cast_Conversions &t_conversions, InnerParams &&... innerparams) { return f(boxed_cast(std::forward(innerparams), &t_conversions)...); }