Main Page | Class Hierarchy | Class List | File List | Class Members

aedFunctorNoArgs.h

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

Generated on Mon Mar 1 19:56:18 2004 for aedGUI by doxygen 1.3.6