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