00001
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029 #ifndef __GizmodThread_h
00030 #define __GizmodThread_h
00031
00032 #if HAVE_CONFIG_H
00033 #include "config.h"
00034 #endif
00035
00036 #include <boost/python.hpp>
00037
00039
00041
00042 namespace Gizmod {
00043
00045
00047
00049
00051
00059 class GizmodThread {
00060 public:
00061
00062 void create();
00063
00064
00065 GizmodThread(boost::python::object ThreadFunction);
00066 virtual ~GizmodThread();
00067
00068 private:
00069
00070 void threadProc();
00071
00072
00073 boost::python::object mThreadFunction;
00074
00078 struct GizmodThreadThreadProc {
00079 GizmodThreadThreadProc(GizmodThread * pGizmodThread) : mpGizmodThread(pGizmodThread) {
00080 mpGizmodThread->mThreading = false;
00081 };
00082
00084 void operator()() {
00085 mpGizmodThread->mThreading = true;
00086 mpGizmodThread->threadProc();
00087 mpGizmodThread->mThreading = false;
00088 }
00089
00090 GizmodThread * mpGizmodThread;
00091 };
00092 bool mThreading;
00093 GizmodThreadThreadProc mThreadProc;
00094 };
00095
00097
00098 }
00099
00100 #endif // __GizmodThread_h