Auto_Ptr.inl

Go to the documentation of this file.
00001 // -*- C++ -*-
00002 //
00003 // Auto_Ptr.inl,v 4.3 2005/10/28 16:14:51 ossama Exp
00004 
00005 #include "ace/Global_Macros.h"
00006 
00007 ACE_BEGIN_VERSIONED_NAMESPACE_DECL
00008 
00009 template<class X> ACE_INLINE void
00010 ACE_Auto_Basic_Ptr<X>::dump (void) const
00011 {
00012 #if defined (ACE_HAS_DUMP)
00013   ACE_TRACE ("ACE_Auto_Basic_Ptr<X>::dump");
00014 #endif /* ACE_HAS_DUMP */
00015 }
00016 
00017 template<class X> ACE_INLINE void
00018 ACE_Auto_Basic_Array_Ptr<X>::dump (void) const
00019 {
00020 #if defined (ACE_HAS_DUMP)
00021   ACE_TRACE ("ACE_Auto_Basic_Array_Ptr<X>::dump");
00022 #endif /* ACE_HAS_DUMP */
00023 }
00024 
00025 template<class X> ACE_INLINE
00026 ACE_Auto_Basic_Ptr<X>::ACE_Auto_Basic_Ptr (ACE_Auto_Basic_Ptr<X> &rhs)
00027   : p_ (rhs.release ())
00028 {
00029   ACE_TRACE ("ACE_Auto_Basic_Ptr<X>::ACE_Auto_Basic_Ptr");
00030 }
00031 
00032 template<class X> ACE_INLINE X *
00033 ACE_Auto_Basic_Ptr<X>::get (void) const
00034 {
00035   ACE_TRACE ("ACE_Auto_Basic_Ptr<X>::get");
00036   return this->p_;
00037 }
00038 
00039 template<class X> ACE_INLINE X *
00040 ACE_Auto_Basic_Ptr<X>::release (void)
00041 {
00042   ACE_TRACE ("ACE_Auto_Basic_Ptr<X>::release");
00043   X *old = this->p_;
00044   this->p_ = 0;
00045   return old;
00046 }
00047 
00048 template<class X> ACE_INLINE void
00049 ACE_Auto_Basic_Ptr<X>::reset (X *p)
00050 {
00051   ACE_TRACE ("ACE_Auto_Basic_Ptr<X>::reset");
00052   if (this->get () != p)
00053     delete this->get ();
00054   this->p_ = p;
00055 }
00056 
00057 template<class X> ACE_INLINE ACE_Auto_Basic_Ptr<X> &
00058 ACE_Auto_Basic_Ptr<X>::operator= (ACE_Auto_Basic_Ptr<X> &rhs)
00059 {
00060   ACE_TRACE ("ACE_Auto_Basic_Ptr<X>::operator=");
00061   if (this != &rhs)
00062     {
00063       this->reset (rhs.release ());
00064     }
00065   return *this;
00066 }
00067 
00068 template<class X> ACE_INLINE
00069 ACE_Auto_Basic_Ptr<X>::~ACE_Auto_Basic_Ptr (void)
00070 {
00071   ACE_TRACE ("ACE_Auto_Basic_Ptr<X>::~ACE_Auto_Basic_Ptr");
00072   delete this->get ();
00073 }
00074 
00075 template<class X> ACE_INLINE X &
00076 ACE_Auto_Basic_Ptr<X>::operator *() const
00077 {
00078   ACE_TRACE ("ACE_Auto_Basic_Ptr<X>::operator *()");
00079   return *this->get ();
00080 }
00081 
00082 #if defined (ACE_LACKS_AUTO_PTR) || \
00083     !defined (ACE_HAS_STANDARD_CPP_LIBRARY) || \
00084              (ACE_HAS_STANDARD_CPP_LIBRARY == 0)
00085 
00086 template<class X> ACE_INLINE X *
00087 auto_ptr<X>::operator-> () const
00088 {
00089   ACE_TRACE ("auto_ptr<X>::operator->");
00090   return this->get ();
00091 }
00092 
00093 #endif /* ACE_HAS_STANDARD_CPP_LIBRARY */
00094 
00095 template<class X> ACE_INLINE X *
00096 ACE_Auto_Ptr<X>::operator-> () const
00097 {
00098   ACE_TRACE ("ACE_Auto_Ptr<X>::operator->");
00099   return this->get ();
00100 }
00101 
00102 template<class X> ACE_INLINE X *
00103 ACE_Auto_Basic_Array_Ptr<X>::get (void) const
00104 {
00105   ACE_TRACE ("ACE_Auto_Basic_Array_Ptr<X>::get");
00106   return this->p_;
00107 }
00108 
00109 template<class X> ACE_INLINE X *
00110 ACE_Auto_Basic_Array_Ptr<X>::release (void)
00111 {
00112   ACE_TRACE ("ACE_Auto_Basic_Array_Ptr<X>::release");
00113   X *old = this->p_;
00114   this->p_ = 0;
00115   return old;
00116 }
00117 
00118 template<class X> ACE_INLINE void
00119 ACE_Auto_Basic_Array_Ptr<X>::reset (X *p)
00120 {
00121   ACE_TRACE ("ACE_Auto_Basic_Array_Ptr<X>::reset");
00122   if (this->get () != p)
00123     delete [] this->get ();
00124   this->p_ = p;
00125 }
00126 
00127 template<class X> ACE_INLINE
00128 ACE_Auto_Basic_Array_Ptr<X>::ACE_Auto_Basic_Array_Ptr (ACE_Auto_Basic_Array_Ptr<X> &rhs)
00129   : p_ (rhs.release ())
00130 {
00131   ACE_TRACE ("ACE_Auto_Basic_Array_Ptr<X>::ACE_Auto_Basic_Array_Ptr");
00132 }
00133 
00134 template<class X> ACE_INLINE ACE_Auto_Basic_Array_Ptr<X> &
00135 ACE_Auto_Basic_Array_Ptr<X>::operator= (ACE_Auto_Basic_Array_Ptr<X> &rhs)
00136 {
00137   ACE_TRACE ("ACE_Auto_Basic_Array_Ptr<X>::operator=");
00138   if (this != &rhs)
00139     {
00140       this->reset (rhs.release ());
00141     }
00142   return *this;
00143 }
00144 
00145 template<class X> ACE_INLINE
00146 ACE_Auto_Basic_Array_Ptr<X>::~ACE_Auto_Basic_Array_Ptr (void)
00147 {
00148   ACE_TRACE ("ACE_Auto_Basic_Array_Ptr<X>::~ACE_Auto_Basic_Array_Ptr");
00149   delete [] this->get ();
00150 }
00151 
00152 template<class X> ACE_INLINE X &
00153 ACE_Auto_Basic_Array_Ptr<X>::operator *() const
00154 {
00155   return *this->get ();
00156 }
00157 
00158 template<class X> ACE_INLINE X &
00159 ACE_Auto_Basic_Array_Ptr<X>::operator[](int i) const
00160 {
00161   X *array = this->get ();
00162   return array[i];
00163 }
00164 
00165 template<class X> ACE_INLINE X *
00166 ACE_Auto_Array_Ptr<X>::operator->() const
00167 {
00168   return this->get ();
00169 }
00170 
00171 ACE_END_VERSIONED_NAMESPACE_DECL

Generated on Thu Nov 9 09:41:46 2006 for ACE by doxygen 1.3.6