ACE_Auto_Basic_Array_Ptr< X > Class Template Reference

Implements an extension to the draft C++ standard auto_ptr abstraction. This class allows one to work on non-object (basic) types that must be treated as an array, e.g., deallocated via "delete [] foo". More...

#include <Auto_Ptr.h>

Inheritance diagram for ACE_Auto_Basic_Array_Ptr< X >:

Inheritance graph
[legend]
Collaboration diagram for ACE_Auto_Basic_Array_Ptr< X >:

Collaboration graph
[legend]
List of all members.

Public Types

typedef X element_type

Public Member Functions

 ACE_Auto_Basic_Array_Ptr (X *p=0)
 ACE_Auto_Basic_Array_Ptr (ACE_Auto_Basic_Array_Ptr< X > &ap)
ACE_Auto_Basic_Array_Ptr<
X > & 
operator= (ACE_Auto_Basic_Array_Ptr< X > &rhs)
 ~ACE_Auto_Basic_Array_Ptr (void)
X & operator * () const
X & operator[] (int i) const
X * get (void) const
X * release (void)
void reset (X *p=0)
void dump (void) const
 Dump the state of an object.

Public Attributes

 ACE_ALLOC_HOOK_DECLARE
 Declare the dynamic allocation hooks.

Protected Attributes

X * p_

Detailed Description

template<typename X>
class ACE_Auto_Basic_Array_Ptr< X >

Implements an extension to the draft C++ standard auto_ptr abstraction. This class allows one to work on non-object (basic) types that must be treated as an array, e.g., deallocated via "delete [] foo".

Definition at line 134 of file Auto_Ptr.h.


Member Typedef Documentation

template<typename X>
typedef X ACE_Auto_Basic_Array_Ptr< X >::element_type

Reimplemented in ACE_Auto_Array_Ptr< X >.

Definition at line 137 of file Auto_Ptr.h.


Constructor & Destructor Documentation

template<typename X>
ACE_Auto_Basic_Array_Ptr< X >::ACE_Auto_Basic_Array_Ptr ( X *  p = 0  )  [inline, explicit]

Definition at line 140 of file Auto_Ptr.h.

00140 : p_ (p) {}

template<class X>
ACE_INLINE ACE_Auto_Basic_Array_Ptr< X >::ACE_Auto_Basic_Array_Ptr ( ACE_Auto_Basic_Array_Ptr< X > &  ap  ) 

Definition at line 128 of file Auto_Ptr.inl.

References ACE_TRACE.

00129   : p_ (rhs.release ())
00130 {
00131   ACE_TRACE ("ACE_Auto_Basic_Array_Ptr<X>::ACE_Auto_Basic_Array_Ptr");
00132 }

template<class X>
ACE_INLINE ACE_Auto_Basic_Array_Ptr< X >::~ACE_Auto_Basic_Array_Ptr ( void   ) 

Definition at line 146 of file Auto_Ptr.inl.

References ACE_TRACE, and ACE_Auto_Basic_Array_Ptr< X >::get().

00147 {
00148   ACE_TRACE ("ACE_Auto_Basic_Array_Ptr<X>::~ACE_Auto_Basic_Array_Ptr");
00149   delete [] this->get ();
00150 }


Member Function Documentation

template<class X>
ACE_INLINE void ACE_Auto_Basic_Array_Ptr< X >::dump ( void   )  const

Dump the state of an object.

Definition at line 18 of file Auto_Ptr.inl.

References ACE_TRACE.

00019 {
00020 #if defined (ACE_HAS_DUMP)
00021   ACE_TRACE ("ACE_Auto_Basic_Array_Ptr<X>::dump");
00022 #endif /* ACE_HAS_DUMP */
00023 }

template<class X>
ACE_INLINE X * ACE_Auto_Basic_Array_Ptr< X >::get ( void   )  const

Definition at line 103 of file Auto_Ptr.inl.

References ACE_TRACE, and ACE_Auto_Basic_Array_Ptr< X >::p_.

Referenced by ACE_Local_Memory_Pool::acquire(), ACE_Remote_Name_Space::bind(), ACE::get_ip_interfaces(), ACE_SOCK_SEQPACK_Association::get_local_addrs(), ACE_SOCK_SEQPACK_Association::get_remote_addrs(), ACE_Auto_Basic_Array_Ptr< X >::operator *(), ACE_Auto_Array_Ptr< X >::operator->(), ACE_Auto_Basic_Array_Ptr< X >::operator[](), ACE_Remote_Name_Space::rebind(), ACE_Process_Options::setenv(), ACE_DLL_Handle::symbol(), and ACE_Auto_Basic_Array_Ptr< X >::~ACE_Auto_Basic_Array_Ptr().

00104 {
00105   ACE_TRACE ("ACE_Auto_Basic_Array_Ptr<X>::get");
00106   return this->p_;
00107 }

template<class X>
ACE_INLINE X & ACE_Auto_Basic_Array_Ptr< X >::operator * (  )  const

Definition at line 153 of file Auto_Ptr.inl.

References ACE_Auto_Basic_Array_Ptr< X >::get().

00154 {
00155   return *this->get ();
00156 }

template<class X>
ACE_INLINE ACE_Auto_Basic_Array_Ptr< X > & ACE_Auto_Basic_Array_Ptr< X >::operator= ( ACE_Auto_Basic_Array_Ptr< X > &  rhs  ) 

Definition at line 135 of file Auto_Ptr.inl.

References ACE_TRACE, ACE_Auto_Basic_Array_Ptr< X >::release(), and ACE_Auto_Basic_Array_Ptr< X >::reset().

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 }

template<class X>
ACE_INLINE X & ACE_Auto_Basic_Array_Ptr< X >::operator[] ( int  i  )  const

Definition at line 159 of file Auto_Ptr.inl.

References ACE_Auto_Basic_Array_Ptr< X >::get().

00160 {
00161   X *array = this->get ();
00162   return array[i];
00163 }

template<class X>
ACE_INLINE X * ACE_Auto_Basic_Array_Ptr< X >::release ( void   ) 

Definition at line 110 of file Auto_Ptr.inl.

References ACE_TRACE, and ACE_Auto_Basic_Array_Ptr< X >::p_.

Referenced by ACE_Local_Memory_Pool::acquire(), ACE_Auto_Basic_Array_Ptr< X >::operator=(), ACE_InputCDR::read_string(), and ACE_InputCDR::read_wstring().

00111 {
00112   ACE_TRACE ("ACE_Auto_Basic_Array_Ptr<X>::release");
00113   X *old = this->p_;
00114   this->p_ = 0;
00115   return old;
00116 }

template<class X>
ACE_INLINE void ACE_Auto_Basic_Array_Ptr< X >::reset ( X *  p = 0  ) 

Definition at line 119 of file Auto_Ptr.inl.

References ACE_TRACE, and ACE_Auto_Basic_Array_Ptr< X >::p_.

Referenced by ACE_SOCK_SEQPACK_Association::get_local_addrs(), ACE_SOCK_SEQPACK_Association::get_remote_addrs(), ACE_Auto_Basic_Array_Ptr< X >::operator=(), and ACE_Process_Options::setenv().

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 }


Member Data Documentation

template<typename X>
ACE_Auto_Basic_Array_Ptr< X >::ACE_ALLOC_HOOK_DECLARE

Declare the dynamic allocation hooks.

Definition at line 157 of file Auto_Ptr.h.

template<typename X>
X* ACE_Auto_Basic_Array_Ptr< X >::p_ [protected]

Definition at line 160 of file Auto_Ptr.h.

Referenced by ACE_Auto_Basic_Array_Ptr< X >::get(), ACE_Auto_Basic_Array_Ptr< X >::release(), and ACE_Auto_Basic_Array_Ptr< X >::reset().


The documentation for this class was generated from the following files:
Generated on Tue Feb 2 17:34:55 2010 for ACE by  doxygen 1.4.7