virtual Boxed_Value operator()(const std::vector<Boxed_Value> ¶ms) const { if (dynamic_object_typename_match(params, m_type_name, m_ti)) { return (*m_func)(params); } else { throw guard_error(); } }
virtual bool call_match(const std::vector<Boxed_Value> &vals) const { if (dynamic_object_typename_match(vals, m_type_name, m_ti)) { return m_func->call_match(vals); } else { return false; } }
bool dynamic_object_typename_match(const std::vector<Boxed_Value> &bvs, const std::string &name, const std::unique_ptr<Type_Info> &ti, const Type_Conversions &t_conversions) const { if (bvs.size() > 0) { return dynamic_object_typename_match(bvs[0], name, ti, t_conversions); } else { return false; } }
static bool dynamic_object_typename_match(const std::vector<Boxed_Value> &bvs, const std::string &name, const boost::optional<Type_Info> &ti) { if (bvs.size() > 0) { return dynamic_object_typename_match(bvs[0], name, ti); } else { return false; } }
virtual bool compare_first_type(const Boxed_Value &bv) const { return dynamic_object_typename_match(bv, m_type_name, m_ti); }