#pragma once #include "reflection_handler.h" namespace cgv { namespace reflect { template struct method_interface_impl; template struct method_interface_impl : public method_interface { typedef R (X::*M)(); M m; method_interface_impl(M _m) : m(_m) {} void call_void(void* instance, const std::vector& param_value_traits, const std::vector& param_value_ptrs, const std::vector& param_type_names, const abst_reflection_traits* result_traits, void* result_value_ptr, const std::string& result_type_name) { cgv::type::set_variant((((X*)instance)->*m)( ), result_type_name, result_value_ptr); } }; template struct method_interface_impl : public method_interface { typedef R (X::*M)() const; M m; method_interface_impl(M _m) : m(_m) {} void call_void(void* instance, const std::vector& param_value_traits, const std::vector& param_value_ptrs, const std::vector& param_type_names, const abst_reflection_traits* result_traits, void* result_value_ptr, const std::string& result_type_name) { cgv::type::set_variant((((X*)instance)->*m)( ), result_type_name, result_value_ptr); } }; template struct method_interface_impl : public method_interface { typedef void (X::*M)(); M m; method_interface_impl(M _m) : m(_m) {} void call_void(void* instance, const std::vector& param_value_traits, const std::vector& param_value_ptrs, const std::vector& param_type_names, const abst_reflection_traits* result_traits, void* result_value_ptr, const std::string& result_type_name) { (((X*)instance)->*m)( ); } }; template struct method_interface_impl : public method_interface { typedef void (X::*M)() const; M m; method_interface_impl(M _m) : m(_m) {} void call_void(void* instance, const std::vector& param_value_traits, const std::vector& param_value_ptrs, const std::vector& param_type_names, const abst_reflection_traits* result_traits, void* result_value_ptr, const std::string& result_type_name) { (((X*)instance)->*m)( ); } }; template struct method_interface_impl : public method_interface { typedef R (X::*M)(T1); M m; method_interface_impl(M _m) : m(_m) {} void call_void(void* instance, const std::vector& param_value_traits, const std::vector& param_value_ptrs, const std::vector& param_type_names, const abst_reflection_traits* result_traits, void* result_value_ptr, const std::string& result_type_name) { cgv::type::set_variant((((X*)instance)->*m)( cgv::type::variant::get(param_type_names[0],param_value_ptrs[0]) ), result_type_name, result_value_ptr); } }; template struct method_interface_impl : public method_interface { typedef R (X::*M)(T1) const; M m; method_interface_impl(M _m) : m(_m) {} void call_void(void* instance, const std::vector& param_value_traits, const std::vector& param_value_ptrs, const std::vector& param_type_names, const abst_reflection_traits* result_traits, void* result_value_ptr, const std::string& result_type_name) { cgv::type::set_variant((((X*)instance)->*m)( cgv::type::variant::get(param_type_names[0],param_value_ptrs[0]) ), result_type_name, result_value_ptr); } }; template struct method_interface_impl : public method_interface { typedef void (X::*M)(T1); M m; method_interface_impl(M _m) : m(_m) {} void call_void(void* instance, const std::vector& param_value_traits, const std::vector& param_value_ptrs, const std::vector& param_type_names, const abst_reflection_traits* result_traits, void* result_value_ptr, const std::string& result_type_name) { (((X*)instance)->*m)( cgv::type::variant::get(param_type_names[0],param_value_ptrs[0]) ); } }; template struct method_interface_impl : public method_interface { typedef void (X::*M)(T1) const; M m; method_interface_impl(M _m) : m(_m) {} void call_void(void* instance, const std::vector& param_value_traits, const std::vector& param_value_ptrs, const std::vector& param_type_names, const abst_reflection_traits* result_traits, void* result_value_ptr, const std::string& result_type_name) { (((X*)instance)->*m)( cgv::type::variant::get(param_type_names[0],param_value_ptrs[0]) ); } }; template struct method_interface_impl : public method_interface { typedef R (X::*M)(T1,T2); M m; method_interface_impl(M _m) : m(_m) {} void call_void(void* instance, const std::vector& param_value_traits, const std::vector& param_value_ptrs, const std::vector& param_type_names, const abst_reflection_traits* result_traits, void* result_value_ptr, const std::string& result_type_name) { cgv::type::set_variant((((X*)instance)->*m)( cgv::type::variant::get(param_type_names[0],param_value_ptrs[0]), cgv::type::variant::get(param_type_names[1],param_value_ptrs[1]) ), result_type_name, result_value_ptr); } }; template struct method_interface_impl : public method_interface { typedef R (X::*M)(T1,T2) const; M m; method_interface_impl(M _m) : m(_m) {} void call_void(void* instance, const std::vector& param_value_traits, const std::vector& param_value_ptrs, const std::vector& param_type_names, const abst_reflection_traits* result_traits, void* result_value_ptr, const std::string& result_type_name) { cgv::type::set_variant((((X*)instance)->*m)( cgv::type::variant::get(param_type_names[0],param_value_ptrs[0]), cgv::type::variant::get(param_type_names[1],param_value_ptrs[1]) ), result_type_name, result_value_ptr); } }; template struct method_interface_impl : public method_interface { typedef void (X::*M)(T1,T2); M m; method_interface_impl(M _m) : m(_m) {} void call_void(void* instance, const std::vector& param_value_traits, const std::vector& param_value_ptrs, const std::vector& param_type_names, const abst_reflection_traits* result_traits, void* result_value_ptr, const std::string& result_type_name) { (((X*)instance)->*m)( cgv::type::variant::get(param_type_names[0],param_value_ptrs[0]), cgv::type::variant::get(param_type_names[1],param_value_ptrs[1]) ); } }; template struct method_interface_impl : public method_interface { typedef void (X::*M)(T1,T2) const; M m; method_interface_impl(M _m) : m(_m) {} void call_void(void* instance, const std::vector& param_value_traits, const std::vector& param_value_ptrs, const std::vector& param_type_names, const abst_reflection_traits* result_traits, void* result_value_ptr, const std::string& result_type_name) { (((X*)instance)->*m)( cgv::type::variant::get(param_type_names[0],param_value_ptrs[0]), cgv::type::variant::get(param_type_names[1],param_value_ptrs[1]) ); } }; template struct method_interface_impl : public method_interface { typedef R (X::*M)(T1,T2,T3); M m; method_interface_impl(M _m) : m(_m) {} void call_void(void* instance, const std::vector& param_value_traits, const std::vector& param_value_ptrs, const std::vector& param_type_names, const abst_reflection_traits* result_traits, void* result_value_ptr, const std::string& result_type_name) { cgv::type::set_variant((((X*)instance)->*m)( cgv::type::variant::get(param_type_names[0],param_value_ptrs[0]), cgv::type::variant::get(param_type_names[1],param_value_ptrs[1]), cgv::type::variant::get(param_type_names[2],param_value_ptrs[2]) ), result_type_name, result_value_ptr); } }; template struct method_interface_impl : public method_interface { typedef R (X::*M)(T1,T2,T3) const; M m; method_interface_impl(M _m) : m(_m) {} void call_void(void* instance, const std::vector& param_value_traits, const std::vector& param_value_ptrs, const std::vector& param_type_names, const abst_reflection_traits* result_traits, void* result_value_ptr, const std::string& result_type_name) { cgv::type::set_variant((((X*)instance)->*m)( cgv::type::variant::get(param_type_names[0],param_value_ptrs[0]), cgv::type::variant::get(param_type_names[1],param_value_ptrs[1]), cgv::type::variant::get(param_type_names[2],param_value_ptrs[2]) ), result_type_name, result_value_ptr); } }; template struct method_interface_impl : public method_interface { typedef void (X::*M)(T1,T2,T3); M m; method_interface_impl(M _m) : m(_m) {} void call_void(void* instance, const std::vector& param_value_traits, const std::vector& param_value_ptrs, const std::vector& param_type_names, const abst_reflection_traits* result_traits, void* result_value_ptr, const std::string& result_type_name) { (((X*)instance)->*m)( cgv::type::variant::get(param_type_names[0],param_value_ptrs[0]), cgv::type::variant::get(param_type_names[1],param_value_ptrs[1]), cgv::type::variant::get(param_type_names[2],param_value_ptrs[2]) ); } }; template struct method_interface_impl : public method_interface { typedef void (X::*M)(T1,T2,T3) const; M m; method_interface_impl(M _m) : m(_m) {} void call_void(void* instance, const std::vector& param_value_traits, const std::vector& param_value_ptrs, const std::vector& param_type_names, const abst_reflection_traits* result_traits, void* result_value_ptr, const std::string& result_type_name) { (((X*)instance)->*m)( cgv::type::variant::get(param_type_names[0],param_value_ptrs[0]), cgv::type::variant::get(param_type_names[1],param_value_ptrs[1]), cgv::type::variant::get(param_type_names[2],param_value_ptrs[2]) ); } }; template struct method_interface_impl : public method_interface { typedef R (X::*M)(T1,T2,T3,T4); M m; method_interface_impl(M _m) : m(_m) {} void call_void(void* instance, const std::vector& param_value_traits, const std::vector& param_value_ptrs, const std::vector& param_type_names, const abst_reflection_traits* result_traits, void* result_value_ptr, const std::string& result_type_name) { cgv::type::set_variant((((X*)instance)->*m)( cgv::type::variant::get(param_type_names[0],param_value_ptrs[0]), cgv::type::variant::get(param_type_names[1],param_value_ptrs[1]), cgv::type::variant::get(param_type_names[2],param_value_ptrs[2]), cgv::type::variant::get(param_type_names[3],param_value_ptrs[3]) ), result_type_name, result_value_ptr); } }; template struct method_interface_impl : public method_interface { typedef R (X::*M)(T1,T2,T3,T4) const; M m; method_interface_impl(M _m) : m(_m) {} void call_void(void* instance, const std::vector& param_value_traits, const std::vector& param_value_ptrs, const std::vector& param_type_names, const abst_reflection_traits* result_traits, void* result_value_ptr, const std::string& result_type_name) { cgv::type::set_variant((((X*)instance)->*m)( cgv::type::variant::get(param_type_names[0],param_value_ptrs[0]), cgv::type::variant::get(param_type_names[1],param_value_ptrs[1]), cgv::type::variant::get(param_type_names[2],param_value_ptrs[2]), cgv::type::variant::get(param_type_names[3],param_value_ptrs[3]) ), result_type_name, result_value_ptr); } }; template struct method_interface_impl : public method_interface { typedef void (X::*M)(T1,T2,T3,T4); M m; method_interface_impl(M _m) : m(_m) {} void call_void(void* instance, const std::vector& param_value_traits, const std::vector& param_value_ptrs, const std::vector& param_type_names, const abst_reflection_traits* result_traits, void* result_value_ptr, const std::string& result_type_name) { (((X*)instance)->*m)( cgv::type::variant::get(param_type_names[0],param_value_ptrs[0]), cgv::type::variant::get(param_type_names[1],param_value_ptrs[1]), cgv::type::variant::get(param_type_names[2],param_value_ptrs[2]), cgv::type::variant::get(param_type_names[3],param_value_ptrs[3]) ); } }; template struct method_interface_impl : public method_interface { typedef void (X::*M)(T1,T2,T3,T4) const; M m; method_interface_impl(M _m) : m(_m) {} void call_void(void* instance, const std::vector& param_value_traits, const std::vector& param_value_ptrs, const std::vector& param_type_names, const abst_reflection_traits* result_traits, void* result_value_ptr, const std::string& result_type_name) { (((X*)instance)->*m)( cgv::type::variant::get(param_type_names[0],param_value_ptrs[0]), cgv::type::variant::get(param_type_names[1],param_value_ptrs[1]), cgv::type::variant::get(param_type_names[2],param_value_ptrs[2]), cgv::type::variant::get(param_type_names[3],param_value_ptrs[3]) ); } }; template struct method_interface_impl : public method_interface { typedef R (X::*M)(T1,T2,T3,T4,T5); M m; method_interface_impl(M _m) : m(_m) {} void call_void(void* instance, const std::vector& param_value_traits, const std::vector& param_value_ptrs, const std::vector& param_type_names, const abst_reflection_traits* result_traits, void* result_value_ptr, const std::string& result_type_name) { cgv::type::set_variant((((X*)instance)->*m)( cgv::type::variant::get(param_type_names[0],param_value_ptrs[0]), cgv::type::variant::get(param_type_names[1],param_value_ptrs[1]), cgv::type::variant::get(param_type_names[2],param_value_ptrs[2]), cgv::type::variant::get(param_type_names[3],param_value_ptrs[3]), cgv::type::variant::get(param_type_names[4],param_value_ptrs[4]) ), result_type_name, result_value_ptr); } }; template struct method_interface_impl : public method_interface { typedef R (X::*M)(T1,T2,T3,T4,T5) const; M m; method_interface_impl(M _m) : m(_m) {} void call_void(void* instance, const std::vector& param_value_traits, const std::vector& param_value_ptrs, const std::vector& param_type_names, const abst_reflection_traits* result_traits, void* result_value_ptr, const std::string& result_type_name) { cgv::type::set_variant((((X*)instance)->*m)( cgv::type::variant::get(param_type_names[0],param_value_ptrs[0]), cgv::type::variant::get(param_type_names[1],param_value_ptrs[1]), cgv::type::variant::get(param_type_names[2],param_value_ptrs[2]), cgv::type::variant::get(param_type_names[3],param_value_ptrs[3]), cgv::type::variant::get(param_type_names[4],param_value_ptrs[4]) ), result_type_name, result_value_ptr); } }; template struct method_interface_impl : public method_interface { typedef void (X::*M)(T1,T2,T3,T4,T5); M m; method_interface_impl(M _m) : m(_m) {} void call_void(void* instance, const std::vector& param_value_traits, const std::vector& param_value_ptrs, const std::vector& param_type_names, const abst_reflection_traits* result_traits, void* result_value_ptr, const std::string& result_type_name) { (((X*)instance)->*m)( cgv::type::variant::get(param_type_names[0],param_value_ptrs[0]), cgv::type::variant::get(param_type_names[1],param_value_ptrs[1]), cgv::type::variant::get(param_type_names[2],param_value_ptrs[2]), cgv::type::variant::get(param_type_names[3],param_value_ptrs[3]), cgv::type::variant::get(param_type_names[4],param_value_ptrs[4]) ); } }; template struct method_interface_impl : public method_interface { typedef void (X::*M)(T1,T2,T3,T4,T5) const; M m; method_interface_impl(M _m) : m(_m) {} void call_void(void* instance, const std::vector& param_value_traits, const std::vector& param_value_ptrs, const std::vector& param_type_names, const abst_reflection_traits* result_traits, void* result_value_ptr, const std::string& result_type_name) { (((X*)instance)->*m)( cgv::type::variant::get(param_type_names[0],param_value_ptrs[0]), cgv::type::variant::get(param_type_names[1],param_value_ptrs[1]), cgv::type::variant::get(param_type_names[2],param_value_ptrs[2]), cgv::type::variant::get(param_type_names[3],param_value_ptrs[3]), cgv::type::variant::get(param_type_names[4],param_value_ptrs[4]) ); } }; template struct method_interface_impl : public method_interface { typedef R (X::*M)(T1,T2,T3,T4,T5,T6); M m; method_interface_impl(M _m) : m(_m) {} void call_void(void* instance, const std::vector& param_value_traits, const std::vector& param_value_ptrs, const std::vector& param_type_names, const abst_reflection_traits* result_traits, void* result_value_ptr, const std::string& result_type_name) { cgv::type::set_variant((((X*)instance)->*m)( cgv::type::variant::get(param_type_names[0],param_value_ptrs[0]), cgv::type::variant::get(param_type_names[1],param_value_ptrs[1]), cgv::type::variant::get(param_type_names[2],param_value_ptrs[2]), cgv::type::variant::get(param_type_names[3],param_value_ptrs[3]), cgv::type::variant::get(param_type_names[4],param_value_ptrs[4]), cgv::type::variant::get(param_type_names[5],param_value_ptrs[5]) ), result_type_name, result_value_ptr); } }; template struct method_interface_impl : public method_interface { typedef R (X::*M)(T1,T2,T3,T4,T5,T6) const; M m; method_interface_impl(M _m) : m(_m) {} void call_void(void* instance, const std::vector& param_value_traits, const std::vector& param_value_ptrs, const std::vector& param_type_names, const abst_reflection_traits* result_traits, void* result_value_ptr, const std::string& result_type_name) { cgv::type::set_variant((((X*)instance)->*m)( cgv::type::variant::get(param_type_names[0],param_value_ptrs[0]), cgv::type::variant::get(param_type_names[1],param_value_ptrs[1]), cgv::type::variant::get(param_type_names[2],param_value_ptrs[2]), cgv::type::variant::get(param_type_names[3],param_value_ptrs[3]), cgv::type::variant::get(param_type_names[4],param_value_ptrs[4]), cgv::type::variant::get(param_type_names[5],param_value_ptrs[5]) ), result_type_name, result_value_ptr); } }; template struct method_interface_impl : public method_interface { typedef void (X::*M)(T1,T2,T3,T4,T5,T6); M m; method_interface_impl(M _m) : m(_m) {} void call_void(void* instance, const std::vector& param_value_traits, const std::vector& param_value_ptrs, const std::vector& param_type_names, const abst_reflection_traits* result_traits, void* result_value_ptr, const std::string& result_type_name) { (((X*)instance)->*m)( cgv::type::variant::get(param_type_names[0],param_value_ptrs[0]), cgv::type::variant::get(param_type_names[1],param_value_ptrs[1]), cgv::type::variant::get(param_type_names[2],param_value_ptrs[2]), cgv::type::variant::get(param_type_names[3],param_value_ptrs[3]), cgv::type::variant::get(param_type_names[4],param_value_ptrs[4]), cgv::type::variant::get(param_type_names[5],param_value_ptrs[5]) ); } }; template struct method_interface_impl : public method_interface { typedef void (X::*M)(T1,T2,T3,T4,T5,T6) const; M m; method_interface_impl(M _m) : m(_m) {} void call_void(void* instance, const std::vector& param_value_traits, const std::vector& param_value_ptrs, const std::vector& param_type_names, const abst_reflection_traits* result_traits, void* result_value_ptr, const std::string& result_type_name) { (((X*)instance)->*m)( cgv::type::variant::get(param_type_names[0],param_value_ptrs[0]), cgv::type::variant::get(param_type_names[1],param_value_ptrs[1]), cgv::type::variant::get(param_type_names[2],param_value_ptrs[2]), cgv::type::variant::get(param_type_names[3],param_value_ptrs[3]), cgv::type::variant::get(param_type_names[4],param_value_ptrs[4]), cgv::type::variant::get(param_type_names[5],param_value_ptrs[5]) ); } }; template struct method_interface_impl : public method_interface { typedef R (X::*M)(T1,T2,T3,T4,T5,T6,T7); M m; method_interface_impl(M _m) : m(_m) {} void call_void(void* instance, const std::vector& param_value_traits, const std::vector& param_value_ptrs, const std::vector& param_type_names, const abst_reflection_traits* result_traits, void* result_value_ptr, const std::string& result_type_name) { cgv::type::set_variant((((X*)instance)->*m)( cgv::type::variant::get(param_type_names[0],param_value_ptrs[0]), cgv::type::variant::get(param_type_names[1],param_value_ptrs[1]), cgv::type::variant::get(param_type_names[2],param_value_ptrs[2]), cgv::type::variant::get(param_type_names[3],param_value_ptrs[3]), cgv::type::variant::get(param_type_names[4],param_value_ptrs[4]), cgv::type::variant::get(param_type_names[5],param_value_ptrs[5]), cgv::type::variant::get(param_type_names[6],param_value_ptrs[6]) ), result_type_name, result_value_ptr); } }; template struct method_interface_impl : public method_interface { typedef R (X::*M)(T1,T2,T3,T4,T5,T6,T7) const; M m; method_interface_impl(M _m) : m(_m) {} void call_void(void* instance, const std::vector& param_value_traits, const std::vector& param_value_ptrs, const std::vector& param_type_names, const abst_reflection_traits* result_traits, void* result_value_ptr, const std::string& result_type_name) { cgv::type::set_variant((((X*)instance)->*m)( cgv::type::variant::get(param_type_names[0],param_value_ptrs[0]), cgv::type::variant::get(param_type_names[1],param_value_ptrs[1]), cgv::type::variant::get(param_type_names[2],param_value_ptrs[2]), cgv::type::variant::get(param_type_names[3],param_value_ptrs[3]), cgv::type::variant::get(param_type_names[4],param_value_ptrs[4]), cgv::type::variant::get(param_type_names[5],param_value_ptrs[5]), cgv::type::variant::get(param_type_names[6],param_value_ptrs[6]) ), result_type_name, result_value_ptr); } }; template struct method_interface_impl : public method_interface { typedef void (X::*M)(T1,T2,T3,T4,T5,T6,T7); M m; method_interface_impl(M _m) : m(_m) {} void call_void(void* instance, const std::vector& param_value_traits, const std::vector& param_value_ptrs, const std::vector& param_type_names, const abst_reflection_traits* result_traits, void* result_value_ptr, const std::string& result_type_name) { (((X*)instance)->*m)( cgv::type::variant::get(param_type_names[0],param_value_ptrs[0]), cgv::type::variant::get(param_type_names[1],param_value_ptrs[1]), cgv::type::variant::get(param_type_names[2],param_value_ptrs[2]), cgv::type::variant::get(param_type_names[3],param_value_ptrs[3]), cgv::type::variant::get(param_type_names[4],param_value_ptrs[4]), cgv::type::variant::get(param_type_names[5],param_value_ptrs[5]), cgv::type::variant::get(param_type_names[6],param_value_ptrs[6]) ); } }; template struct method_interface_impl : public method_interface { typedef void (X::*M)(T1,T2,T3,T4,T5,T6,T7) const; M m; method_interface_impl(M _m) : m(_m) {} void call_void(void* instance, const std::vector& param_value_traits, const std::vector& param_value_ptrs, const std::vector& param_type_names, const abst_reflection_traits* result_traits, void* result_value_ptr, const std::string& result_type_name) { (((X*)instance)->*m)( cgv::type::variant::get(param_type_names[0],param_value_ptrs[0]), cgv::type::variant::get(param_type_names[1],param_value_ptrs[1]), cgv::type::variant::get(param_type_names[2],param_value_ptrs[2]), cgv::type::variant::get(param_type_names[3],param_value_ptrs[3]), cgv::type::variant::get(param_type_names[4],param_value_ptrs[4]), cgv::type::variant::get(param_type_names[5],param_value_ptrs[5]), cgv::type::variant::get(param_type_names[6],param_value_ptrs[6]) ); } }; template struct method_interface_impl : public method_interface { typedef R (X::*M)(T1,T2,T3,T4,T5,T6,T7,T8); M m; method_interface_impl(M _m) : m(_m) {} void call_void(void* instance, const std::vector& param_value_traits, const std::vector& param_value_ptrs, const std::vector& param_type_names, const abst_reflection_traits* result_traits, void* result_value_ptr, const std::string& result_type_name) { cgv::type::set_variant((((X*)instance)->*m)( cgv::type::variant::get(param_type_names[0],param_value_ptrs[0]), cgv::type::variant::get(param_type_names[1],param_value_ptrs[1]), cgv::type::variant::get(param_type_names[2],param_value_ptrs[2]), cgv::type::variant::get(param_type_names[3],param_value_ptrs[3]), cgv::type::variant::get(param_type_names[4],param_value_ptrs[4]), cgv::type::variant::get(param_type_names[5],param_value_ptrs[5]), cgv::type::variant::get(param_type_names[6],param_value_ptrs[6]), cgv::type::variant::get(param_type_names[7],param_value_ptrs[7]) ), result_type_name, result_value_ptr); } }; template struct method_interface_impl : public method_interface { typedef R (X::*M)(T1,T2,T3,T4,T5,T6,T7,T8) const; M m; method_interface_impl(M _m) : m(_m) {} void call_void(void* instance, const std::vector& param_value_traits, const std::vector& param_value_ptrs, const std::vector& param_type_names, const abst_reflection_traits* result_traits, void* result_value_ptr, const std::string& result_type_name) { cgv::type::set_variant((((X*)instance)->*m)( cgv::type::variant::get(param_type_names[0],param_value_ptrs[0]), cgv::type::variant::get(param_type_names[1],param_value_ptrs[1]), cgv::type::variant::get(param_type_names[2],param_value_ptrs[2]), cgv::type::variant::get(param_type_names[3],param_value_ptrs[3]), cgv::type::variant::get(param_type_names[4],param_value_ptrs[4]), cgv::type::variant::get(param_type_names[5],param_value_ptrs[5]), cgv::type::variant::get(param_type_names[6],param_value_ptrs[6]), cgv::type::variant::get(param_type_names[7],param_value_ptrs[7]) ), result_type_name, result_value_ptr); } }; template struct method_interface_impl : public method_interface { typedef void (X::*M)(T1,T2,T3,T4,T5,T6,T7,T8); M m; method_interface_impl(M _m) : m(_m) {} void call_void(void* instance, const std::vector& param_value_traits, const std::vector& param_value_ptrs, const std::vector& param_type_names, const abst_reflection_traits* result_traits, void* result_value_ptr, const std::string& result_type_name) { (((X*)instance)->*m)( cgv::type::variant::get(param_type_names[0],param_value_ptrs[0]), cgv::type::variant::get(param_type_names[1],param_value_ptrs[1]), cgv::type::variant::get(param_type_names[2],param_value_ptrs[2]), cgv::type::variant::get(param_type_names[3],param_value_ptrs[3]), cgv::type::variant::get(param_type_names[4],param_value_ptrs[4]), cgv::type::variant::get(param_type_names[5],param_value_ptrs[5]), cgv::type::variant::get(param_type_names[6],param_value_ptrs[6]), cgv::type::variant::get(param_type_names[7],param_value_ptrs[7]) ); } }; template struct method_interface_impl : public method_interface { typedef void (X::*M)(T1,T2,T3,T4,T5,T6,T7,T8) const; M m; method_interface_impl(M _m) : m(_m) {} void call_void(void* instance, const std::vector& param_value_traits, const std::vector& param_value_ptrs, const std::vector& param_type_names, const abst_reflection_traits* result_traits, void* result_value_ptr, const std::string& result_type_name) { (((X*)instance)->*m)( cgv::type::variant::get(param_type_names[0],param_value_ptrs[0]), cgv::type::variant::get(param_type_names[1],param_value_ptrs[1]), cgv::type::variant::get(param_type_names[2],param_value_ptrs[2]), cgv::type::variant::get(param_type_names[3],param_value_ptrs[3]), cgv::type::variant::get(param_type_names[4],param_value_ptrs[4]), cgv::type::variant::get(param_type_names[5],param_value_ptrs[5]), cgv::type::variant::get(param_type_names[6],param_value_ptrs[6]), cgv::type::variant::get(param_type_names[7],param_value_ptrs[7]) ); } }; } }