28 #ifndef __RTTR_METHOD_CONTAINER_H__
29 #define __RTTR_METHOD_CONTAINER_H__
49 template<
typename F,
typename Policy>
50 class method_container :
public method_container_base
53 method_container(
const std::string& name,
const type declaring_type, F func_acc)
54 : method_container_base(name, declaring_type),
58 bool is_static()
const {
return method_accessor<F, Policy>::is_static(); }
59 type get_return_type()
const {
return method_accessor<F, Policy>::get_return_type(); }
60 std::vector<bool> get_is_reference()
const {
return method_accessor<F, Policy>::get_is_reference(); }
61 std::vector<bool> get_is_const()
const {
return method_accessor<F, Policy>::get_is_const(); }
62 std::vector<type> get_parameter_types()
const {
return method_accessor<F, Policy>::get_parameter_types(); }
64 variant invoke(detail::instance&
object)
const
66 return method_accessor<F, Policy>::invoke(_func_acc,
object);
69 variant invoke(detail::instance&
object, detail::argument& arg1)
const
71 return method_accessor<F, Policy>::invoke(_func_acc,
object, arg1);
73 variant invoke(detail::instance&
object, detail::argument& arg1, detail::argument& arg2)
const
75 return method_accessor<F, Policy>::invoke(_func_acc,
object, arg1, arg2);
77 variant invoke(detail::instance&
object, detail::argument& arg1, detail::argument& arg2, detail::argument& arg3)
const
79 return method_accessor<F, Policy>::invoke(_func_acc,
object, arg1, arg2, arg3);
81 variant invoke(detail::instance&
object, detail::argument& arg1, detail::argument& arg2, detail::argument& arg3, detail::argument& arg4)
const
83 return method_accessor<F, Policy>::invoke(_func_acc,
object, arg1, arg2, arg3, arg4);
85 variant invoke(detail::instance&
object, detail::argument& arg1, detail::argument& arg2, detail::argument& arg3, detail::argument& arg4, detail::argument& arg5)
const
87 return method_accessor<F, Policy>::invoke(_func_acc,
object, arg1, arg2, arg3, arg4, arg5);
89 variant invoke(detail::instance&
object, detail::argument& arg1, detail::argument& arg2, detail::argument& arg3, detail::argument& arg4, detail::argument& arg5, detail::argument& arg6)
const
91 return method_accessor<F, Policy>::invoke(_func_acc,
object, arg1, arg2, arg3, arg4, arg5, arg6);
94 variant invoke_variadic(detail::instance&
object, std::vector<detail::argument>& args)
const
96 return method_accessor<F, Policy>::invoke(_func_acc,
object, args);
106 #endif // __RTTR_METHOD_CONTAINER_H__