1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34
|
template < class Class, typename ReturnType,typename Parameter1 = void , typename Parameter2 = void, typename Parameter3 = void, typename Parameter4 = void >
class EventHandlerAbstract
{
public:
typedef ReturnType (Class::*Method)(Parameter1, Parameter2, Parameter3, Parameter4);
EventHandlerAbstract(Class* _class_instance, Method _method)
{
class_instance = _class_instance;
method = _method;
};
ReturnType operator()(Parameter1 parameter1, Parameter2 parameter2=0, Parameter3 parameter3=0, Parameter4 parameter4=0)
{
return (class_instance->*method)(parameter1, parameter2, parameter3, parameter4);
};
ReturnType execute(Parameter1 parameter1, Parameter2 parameter2, Parameter3 parameter3, Parameter4 parameter4)
{
return operator()(parameter1, parameter2, parameter3, parameter4);
};
Class *makeInstance(Class *_class_instance,Method _method,ReturnType _returnType,Parameter1 parameter1,Parameter2 parameter2, Parameter3 parameter3, Parameter4 parameter4){
return (new EventHandlerAbstract<&_class,_returnType,parameter1, parameter2, parameter3, parameter4> (&_class_instance,&_method));
};
protected:
static vector <int > functionNamesList;
static vector <int > eventNamesList;
Class* class_instance;
Method method;
};
|