00001 #ifndef AEDFUNCTORNOARGS_H 00002 #define AEDFUNCTORNOARGS_H 00003 00004 #include "aedFunctorBase.h" 00005 00006 template < class T = stub > class DLLEXPORT aedFunctorNoArgs:public 00007 aedFunctorBase 00008 { 00009 public: 00010 aedFunctorNoArgs(T * obj, void (T::*member) (void *, void *)) 00011 { 00012 m_Object = obj; 00013 m_MemberFunctionPointer = member; 00014 m_FunctionPointer = NULL; 00015 } 00016 00017 aedFunctorNoArgs(void (*function) (void *, void *)) 00018 { 00019 m_FunctionPointer = function; 00020 m_Object = NULL; 00021 m_MemberFunctionPointer = NULL; 00022 } 00023 00024 virtual void operator() (void *caller, void *data) 00025 { 00026 this->Call(caller, data); 00027 } 00028 00029 void Call(void *caller, void *data) 00030 { 00031 if(m_Object != NULL) 00032 (*m_Object.*m_MemberFunctionPointer) (caller, data); 00033 else 00034 m_FunctionPointer(caller, data); 00035 } 00036 00037 aedFunctorBase *clone(void) 00038 { 00039 aedFunctorNoArgs < T > *clone; 00040 00041 if(m_Object) 00042 clone = 00043 new aedFunctorNoArgs < T > (m_Object, m_MemberFunctionPointer); 00044 else 00045 clone = new aedFunctorNoArgs < T > (m_FunctionPointer); 00046 00047 return clone; 00048 } 00049 00050 virtual ~ aedFunctorNoArgs() 00051 { 00052 00053 } 00054 00055 private: 00056 T * m_Object; 00057 void (T::*m_MemberFunctionPointer) (void *, void *); 00058 void (*m_FunctionPointer) (void *, void *); 00059 00060 }; 00061 00062 #endif