Changeset 9893
- Timestamp:
- 03/10/09 18:51:05 (4 years ago)
- Files:
-
- 1 modified
-
OpenSceneGraph/trunk/src/osg/Referenced.cpp (modified) (4 diffs)
Legend:
- Unmodified
- Added
- Removed
-
OpenSceneGraph/trunk/src/osg/Referenced.cpp
r9549 r9893 34 34 35 35 // specialized smart pointer, used to get round auto_ptr<>'s lack of the destructor reseting itself to 0. 36 struct DeleteHandlerPointer 37 { 38 DeleteHandlerPointer(): 36 template<typename T> 37 struct ResetPointer 38 { 39 ResetPointer(): 39 40 _ptr(0) {} 40 41 41 DeleteHandlerPointer(DeleteHandler* ptr):42 ResetPointer(T* ptr): 42 43 _ptr(ptr) {} 43 44 44 ~ DeleteHandlerPointer()45 ~ResetPointer() 45 46 { 46 47 delete _ptr; … … 48 49 } 49 50 50 inline DeleteHandlerPointer& operator = (DeleteHandler* ptr)51 inline ResetPointer& operator = (T* ptr) 51 52 { 52 53 if (_ptr==ptr) return *this; … … 56 57 } 57 58 58 void reset( DeleteHandler* ptr)59 void reset(T* ptr) 59 60 { 60 61 if (_ptr==ptr) return; … … 63 64 } 64 65 65 inline DeleteHandler& operator*() { return *_ptr; }66 67 inline const DeleteHandler& operator*() const { return *_ptr; }68 69 inline DeleteHandler* operator->() { return _ptr; }70 71 inline const DeleteHandler* operator->() const { return _ptr; }72 73 DeleteHandler* get() { return _ptr; }74 75 const DeleteHandler* get() const { return _ptr; }76 77 DeleteHandler* _ptr;66 inline T& operator*() { return *_ptr; } 67 68 inline const T& operator*() const { return *_ptr; } 69 70 inline T* operator->() { return _ptr; } 71 72 inline const T* operator->() const { return _ptr; } 73 74 T* get() { return _ptr; } 75 76 const T* get() const { return _ptr; } 77 78 T* _ptr; 78 79 }; 79 80 81 typedef ResetPointer<DeleteHandler> DeleteHandlerPointer; 82 typedef ResetPointer<OpenThreads::Mutex> GlobalMutexPointer; 83 80 84 OpenThreads::Mutex* Referenced::getGlobalReferencedMutex() 81 85 { 82 static OpenThreads::Mutex s_ReferencedGlobalMutext;83 return &s_ReferencedGlobalMutext;86 static GlobalMutexPointer s_ReferencedGlobalMutext = new OpenThreads::Mutex; 87 return s_ReferencedGlobalMutext.get(); 84 88 } 85 89
