Pointers.h

Go to the documentation of this file.
00001 #ifndef __POINTERS_H__
00002 #define __POINTERS_H__
00003 
00004 #include "../debug/DebugUtils.h"
00005 
00006 namespace oasys {
00007 
00016 template <typename _Class>
00017 class ScopePtr {
00018 public:
00019     ScopePtr() : ptr_(0) {}
00020     ScopePtr(_Class* obj) : ptr_(obj) {}
00021     ~ScopePtr() { if(ptr_) { delete ptr_; ptr_ = 0; } }
00022 
00023     _Class& operator*()  const { return *ptr_; }
00024     _Class* operator->() const { return ptr_; }
00025 
00030     ScopePtr& operator=(_Class* ptr) {
00031         ASSERT(ptr_ == NULL);
00032         ptr_ = ptr;
00033         return *this;
00034     }
00035     
00041     _Class*& ptr() { return ptr_; }
00042 
00047     ScopePtr& operator=(const ScopePtr&); 
00048     
00049 private:
00050     _Class* ptr_;
00051 };
00052 
00056 class ScopeMalloc {
00057 public:
00058     ScopeMalloc(void* ptr = 0) : ptr_(ptr) {}
00059     
00060     ~ScopeMalloc() {
00061         if (ptr_) {
00062             free(ptr_);
00063             ptr_ = 0;
00064         }
00065     }
00066 
00071     ScopeMalloc& operator=(void* ptr) {
00072         ASSERT(ptr_ == NULL);
00073         ptr_ = ptr;
00074         return *this;
00075     }
00076     
00082     void*& ptr() { return ptr_; }
00083 
00088     ScopeMalloc& operator=(const ScopeMalloc&); 
00089     
00090 private:
00091     void* ptr_;
00092 };
00093 
00094 
00095 } // namespace oasys
00096 
00097 #endif //__POINTERS_H__

Generated on Fri Dec 22 14:48:00 2006 for DTN Reference Implementation by  doxygen 1.5.1