00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023 #ifndef _threadstartdelegate_h
00024 #define _threadstartdelegate_h
00025
00026 #include <spl/Memory.h>
00027 #include <spl/threading/Thread.h>
00028
00057 template<class T> class ThreadStartDelegate : public Thread
00058 {
00059 private:
00060 T* m_object;
00061 void (T::*m_func)();
00062
00063 public:
00064
00072 inline ThreadStartDelegate(T *object, void (T::* func)())
00073 : m_object(object), m_func(func)
00074 {
00075 }
00076
00077 inline ThreadStartDelegate()
00078 : m_object(NULL), m_func(NULL)
00079 {
00080 }
00081
00082 virtual ~ThreadStartDelegate()
00083 {
00084 }
00085
00086 inline void Set(T *object, void (T::* func)())
00087 {
00088 m_object = object;
00089 m_func = func;
00090 }
00091
00092 #if defined(DEBUG)
00093 void CheckMem() const
00094 {
00095 }
00096
00097 void ValidateMem() const
00098 {
00099 }
00100 #endif
00101
00102 private:
00103 virtual void Run()
00104 {
00105 (m_object->*m_func)();
00106 }
00107 };
00108
00109 #endif