Correct feature names
[ACE_TAO.git] / ACE / ace / Auto_Ptr.inl
blob1cc93536e4224f0006de8b5369770ee2e77f8c08
1 // -*- C++ -*-
2 #include "ace/Global_Macros.h"
4 #if defined (ACE_HAS_ALLOC_HOOKS)
5 # include "ace/Malloc_Base.h"
6 #endif /* ACE_HAS_ALLOC_HOOKS */
8 ACE_BEGIN_VERSIONED_NAMESPACE_DECL
10 template<class X> ACE_INLINE void
11 ACE_Auto_Basic_Ptr<X>::dump (void) const
13 #if defined (ACE_HAS_DUMP)
14   ACE_TRACE ("ACE_Auto_Basic_Ptr<X>::dump");
15 #endif /* ACE_HAS_DUMP */
18 template<class X> ACE_INLINE void
19 ACE_Auto_Basic_Array_Ptr<X>::dump (void) const
21 #if defined (ACE_HAS_DUMP)
22   ACE_TRACE ("ACE_Auto_Basic_Array_Ptr<X>::dump");
23 #endif /* ACE_HAS_DUMP */
26 template<class X> ACE_INLINE
27 ACE_Auto_Basic_Ptr<X>::ACE_Auto_Basic_Ptr (ACE_Auto_Basic_Ptr<X> &rhs)
28   : p_ (rhs.release ())
30   ACE_TRACE ("ACE_Auto_Basic_Ptr<X>::ACE_Auto_Basic_Ptr");
33 template<class X> ACE_INLINE X *
34 ACE_Auto_Basic_Ptr<X>::get (void) const
36   ACE_TRACE ("ACE_Auto_Basic_Ptr<X>::get");
37   return this->p_;
40 template<class X> ACE_INLINE X *
41 ACE_Auto_Basic_Ptr<X>::release (void)
43   ACE_TRACE ("ACE_Auto_Basic_Ptr<X>::release");
44   X *old = this->p_;
45   this->p_ = 0;
46   return old;
49 template<class X> ACE_INLINE void
50 ACE_Auto_Basic_Ptr<X>::reset (X *p)
52   ACE_TRACE ("ACE_Auto_Basic_Ptr<X>::reset");
53   if (this->get () != p)
54     delete this->get ();
55   this->p_ = p;
58 template<class X> ACE_INLINE ACE_Auto_Basic_Ptr<X> &
59 ACE_Auto_Basic_Ptr<X>::operator= (ACE_Auto_Basic_Ptr<X> &rhs)
61   ACE_TRACE ("ACE_Auto_Basic_Ptr<X>::operator=");
62   if (this != &rhs)
63     {
64       this->reset (rhs.release ());
65     }
66   return *this;
69 template<class X> ACE_INLINE
70 ACE_Auto_Basic_Ptr<X>::~ACE_Auto_Basic_Ptr (void)
72   ACE_TRACE ("ACE_Auto_Basic_Ptr<X>::~ACE_Auto_Basic_Ptr");
73   delete this->get ();
76 template<class X> ACE_INLINE X &
77 ACE_Auto_Basic_Ptr<X>::operator *() const
79   ACE_TRACE ("ACE_Auto_Basic_Ptr<X>::operator *()");
80   return *this->get ();
83 #if defined (ACE_LACKS_AUTO_PTR) || \
84     !defined (ACE_HAS_STANDARD_CPP_LIBRARY) || \
85              (ACE_HAS_STANDARD_CPP_LIBRARY == 0)
87 template<class X> ACE_INLINE X *
88 auto_ptr<X>::operator-> () const
90   ACE_TRACE ("auto_ptr<X>::operator->");
91   return this->get ();
94 #endif /* ACE_HAS_STANDARD_CPP_LIBRARY */
96 template<class X> ACE_INLINE X *
97 ACE_Auto_Ptr<X>::operator-> () const
99   ACE_TRACE ("ACE_Auto_Ptr<X>::operator->");
100   return this->get ();
103 template<class X> ACE_INLINE X *
104 ACE_Auto_Basic_Array_Ptr<X>::get (void) const
106   ACE_TRACE ("ACE_Auto_Basic_Array_Ptr<X>::get");
107   return this->p_;
110 template<class X> ACE_INLINE X *
111 ACE_Auto_Basic_Array_Ptr<X>::release (void)
113   ACE_TRACE ("ACE_Auto_Basic_Array_Ptr<X>::release");
114   X *old = this->p_;
115   this->p_ = 0;
116   return old;
119 template<class X> ACE_INLINE void
120 ACE_Auto_Basic_Array_Ptr<X>::reset (X *p)
122   ACE_TRACE ("ACE_Auto_Basic_Array_Ptr<X>::reset");
123   if (this->get () != p)
124 #if defined (ACE_HAS_ALLOC_HOOKS)
125     ACE_Allocator::instance()->free(this->get ());
126 #else
127     delete [] this->get ();
128 #endif /* ACE_HAS_ALLOC_HOOKS */
130   this->p_ = p;
133 template<class X> ACE_INLINE
134 ACE_Auto_Basic_Array_Ptr<X>::ACE_Auto_Basic_Array_Ptr (ACE_Auto_Basic_Array_Ptr<X> &rhs)
135   : p_ (rhs.release ())
137   ACE_TRACE ("ACE_Auto_Basic_Array_Ptr<X>::ACE_Auto_Basic_Array_Ptr");
140 template<class X> ACE_INLINE ACE_Auto_Basic_Array_Ptr<X> &
141 ACE_Auto_Basic_Array_Ptr<X>::operator= (ACE_Auto_Basic_Array_Ptr<X> &rhs)
143   ACE_TRACE ("ACE_Auto_Basic_Array_Ptr<X>::operator=");
144   if (this != &rhs)
145     {
146       this->reset (rhs.release ());
147     }
148   return *this;
151 template<class X> ACE_INLINE
152 ACE_Auto_Basic_Array_Ptr<X>::~ACE_Auto_Basic_Array_Ptr (void)
154   ACE_TRACE ("ACE_Auto_Basic_Array_Ptr<X>::~ACE_Auto_Basic_Array_Ptr");
155 #if defined (ACE_HAS_ALLOC_HOOKS)
156   ACE_Allocator::instance()->free(this->get ());
157 #else
158   delete [] this->get ();
159 #endif /* ACE_HAS_ALLOC_HOOKS */
162 template<class X> ACE_INLINE X &
163 ACE_Auto_Basic_Array_Ptr<X>::operator *() const
165   return *this->get ();
168 template<class X> ACE_INLINE X &
169 ACE_Auto_Basic_Array_Ptr<X>::operator[](int i) const
171   X *array = this->get ();
172   return array[i];
175 template<class X> ACE_INLINE X *
176 ACE_Auto_Array_Ptr<X>::operator->() const
178   return this->get ();
181 ACE_END_VERSIONED_NAMESPACE_DECL