00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028 #ifndef _LOG4TANGO_THREADING_DUMMY_THREADS_H
00029 #define _LOG4TANGO_THREADING_DUMMY_THREADS_H
00030
00031 #include <log4tango/Portability.hh>
00032 #include <stdio.h>
00033 #include <string>
00034
00035 namespace log4tango {
00036
00037 namespace threading {
00038
00039 std::string get_thread_id (void);
00040
00041 typedef int Mutex;
00042
00043 typedef int ScopedLock;
00044
00045 #ifdef LOG4TANGO_HAS_NDC
00046 template<typename T> class ThreadLocalDataHolder
00047 {
00048 public:
00049 typedef T data_type;
00050
00051 inline ThreadLocalDataHolder ()
00052 : _data(0)
00053 {
00054
00055 };
00056
00057 inline ~ThreadLocalDataHolder () {
00058 if (_data) {
00059 delete _data;
00060 }
00061 };
00062
00063 inline T* get (void) const {
00064 return _data;
00065 };
00066
00067 inline T* operator->() const {
00068 return get();
00069 };
00070
00071 inline T& operator*() const {
00072 return *get();
00073 };
00074
00075 inline T* release() {
00076 T* result = _data;
00077 _data = 0;
00078 return result;
00079 };
00080
00081 inline void reset (T* p = 0) {
00082 if (_data) {
00083 delete _data;
00084 }
00085 _data = p;
00086 };
00087
00088 private:
00089 T* _data;
00090 };
00091 #endif // #ifdef LOG4TANGO_HAS_NDC
00092
00093 }
00094
00095 }
00096
00097 #endif // _LOG4TANGO_THREADING_DUMMY_THREADS_H