/* This file is autogenerated using ***generate_domsuspendcallback_inc.py*** script */

template<class ObjectType>
class OpMemberFunctionObject0 : public OpFunctionObjectBase
{
public:
	typedef void(ObjectType::*MethodType)();
	OpMemberFunctionObject0(ObjectType* object, MethodType method) : m_object(object), m_method(method) {}
	virtual void Call() { (m_object->*m_method)(); }
private:
	ObjectType* m_object;
	MethodType m_method;
};


template<class ObjectType, typename arg1type>
class OpMemberFunctionObject1 : public OpFunctionObjectBase
{
public:
	typedef void(ObjectType::*MethodType)(arg1type arg1);
	OpMemberFunctionObject1(ObjectType* object, MethodType method, arg1type arg1) : m_object(object), m_method(method), m_arg1(arg1) {}
	virtual void Call() { (m_object->*m_method)(m_arg1); }
private:
	ObjectType* m_object;
	MethodType m_method;
	arg1type m_arg1;
};


template<class ObjectType, typename arg1type, typename arg2type>
class OpMemberFunctionObject2 : public OpFunctionObjectBase
{
public:
	typedef void(ObjectType::*MethodType)(arg1type arg1, arg2type arg2);
	OpMemberFunctionObject2(ObjectType* object, MethodType method, arg1type arg1, arg2type arg2) : m_object(object), m_method(method), m_arg1(arg1), m_arg2(arg2) {}
	virtual void Call() { (m_object->*m_method)(m_arg1, m_arg2); }
private:
	ObjectType* m_object;
	MethodType m_method;
	arg1type m_arg1;
	arg2type m_arg2;
};


template<class ObjectType, typename arg1type, typename arg2type, typename arg3type>
class OpMemberFunctionObject3 : public OpFunctionObjectBase
{
public:
	typedef void(ObjectType::*MethodType)(arg1type arg1, arg2type arg2, arg3type arg3);
	OpMemberFunctionObject3(ObjectType* object, MethodType method, arg1type arg1, arg2type arg2, arg3type arg3) : m_object(object), m_method(method), m_arg1(arg1), m_arg2(arg2), m_arg3(arg3) {}
	virtual void Call() { (m_object->*m_method)(m_arg1, m_arg2, m_arg3); }
private:
	ObjectType* m_object;
	MethodType m_method;
	arg1type m_arg1;
	arg2type m_arg2;
	arg3type m_arg3;
};


template<class ObjectType, typename arg1type, typename arg2type, typename arg3type, typename arg4type>
class OpMemberFunctionObject4 : public OpFunctionObjectBase
{
public:
	typedef void(ObjectType::*MethodType)(arg1type arg1, arg2type arg2, arg3type arg3, arg4type arg4);
	OpMemberFunctionObject4(ObjectType* object, MethodType method, arg1type arg1, arg2type arg2, arg3type arg3, arg4type arg4) : m_object(object), m_method(method), m_arg1(arg1), m_arg2(arg2), m_arg3(arg3), m_arg4(arg4) {}
	virtual void Call() { (m_object->*m_method)(m_arg1, m_arg2, m_arg3, m_arg4); }
private:
	ObjectType* m_object;
	MethodType m_method;
	arg1type m_arg1;
	arg2type m_arg2;
	arg3type m_arg3;
	arg4type m_arg4;
};


template<class ObjectType, typename arg1type, typename arg2type, typename arg3type, typename arg4type, typename arg5type>
class OpMemberFunctionObject5 : public OpFunctionObjectBase
{
public:
	typedef void(ObjectType::*MethodType)(arg1type arg1, arg2type arg2, arg3type arg3, arg4type arg4, arg5type arg5);
	OpMemberFunctionObject5(ObjectType* object, MethodType method, arg1type arg1, arg2type arg2, arg3type arg3, arg4type arg4, arg5type arg5) : m_object(object), m_method(method), m_arg1(arg1), m_arg2(arg2), m_arg3(arg3), m_arg4(arg4), m_arg5(arg5) {}
	virtual void Call() { (m_object->*m_method)(m_arg1, m_arg2, m_arg3, m_arg4, m_arg5); }
private:
	ObjectType* m_object;
	MethodType m_method;
	arg1type m_arg1;
	arg2type m_arg2;
	arg3type m_arg3;
	arg4type m_arg4;
	arg5type m_arg5;
};

