cloudy trunk
Loading...
Searching...
No Matches
auto_vec< T > Class Template Reference

#include <cddefines.h>

Collaboration diagram for auto_vec< T >:

Data Structures

struct  auto_vec_ref

Public Types

typedef T element_type

Public Member Functions

 auto_vec (element_type *p=NULL) throw ()
 auto_vec (auto_vec &p) throw ()
auto_vecoperator= (auto_vec &p) throw ()
 ~auto_vec () throw ()
element_typeoperator[] (ptrdiff_t n) const throw ()
element_typeget () const throw ()
element_typedata () const throw ()
element_typerelease () throw ()
void reset (element_type *p=NULL) throw ()
 auto_vec (auto_vec_ref< element_type > r) throw ()
auto_vecoperator= (auto_vec_ref< element_type > r) throw ()
 operator auto_vec_ref< element_type > () throw ()

Private Attributes

T * ptr

Detailed Description

template<class T>
class auto_vec< T >

auto_vec: a smart pointer to allocated arrays which maintains strict ownership. the implementation here largely follows the ISO/ANSI C++98 standard for auto_ptr

NB1 - the operator[] and data() methods were added and are not part of the standard

NB2 - operator* and operator-> have been omitted as they are not useful for vectors

NB3 - the class has been altered to disallow assigning pointers of a different type, i.e., auto_vec<BaseClass> p( new DerivedClass[10] ) is NOT allowed. This is done because BaseClass and DerivedClass often have different sizes, and hence using them like this in vectors is error-prone.

NB4 - operator auto_vec<T>() has been omitted because it is only needed to convert an auto_vec<DerivedClass> to auto_vec<BaseClass>.

This is written in the standards draft (with auto_ptr replaced by auto_vec):

1 Template auto_vec holds a pointer to an array object obtained via new and deletes that object when it itself is destroyed (such as when leaving block scope 6.7).

2 Template auto_vec_ref holds a reference to an auto_vec. It is used by the auto_vec conversions to allow auto_vec objects to be passed to and returned from functions.

Definition at line 1126 of file cddefines.h.

Member Typedef Documentation

◆ element_type

template<class T>
typedef T auto_vec< T >::element_type

Definition at line 1142 of file cddefines.h.

Constructor & Destructor Documentation

◆ auto_vec() [1/3]

template<class T>
auto_vec< T >::auto_vec ( element_type * p = NULL)
throw ( )
inlineexplicit

Definition at line 1146 of file cddefines.h.

References ptr.

Referenced by auto_vec(), operator=(), and operator=().

◆ auto_vec() [2/3]

template<class T>
auto_vec< T >::auto_vec ( auto_vec< T > & p)
throw ( )
inline

Definition at line 1150 of file cddefines.h.

References auto_vec(), and ptr.

Here is the call graph for this function:

◆ ~auto_vec()

template<class T>
auto_vec< T >::~auto_vec ( )
throw ( )
inline

Definition at line 1159 of file cddefines.h.

References ptr.

◆ auto_vec() [3/3]

template<class T>
auto_vec< T >::auto_vec ( auto_vec_ref< element_type > r)
throw ( )
inline

Definition at line 1196 of file cddefines.h.

References ptr.

Member Function Documentation

◆ data()

template<class T>
element_type * auto_vec< T >::data ( ) const
throw ( )
inline

Definition at line 1175 of file cddefines.h.

References ptr.

Referenced by newelement(), and newspecies().

◆ get()

template<class T>
element_type * auto_vec< T >::get ( ) const
throw ( )
inline

Definition at line 1170 of file cddefines.h.

References ptr.

◆ operator auto_vec_ref< element_type >()

template<class T>
auto_vec< T >::operator auto_vec_ref< element_type > ( )
throw ( )
inline

Definition at line 1209 of file cddefines.h.

References release().

Here is the call graph for this function:

◆ operator=() [1/2]

template<class T>
auto_vec & auto_vec< T >::operator= ( auto_vec< T > & p)
throw ( )
inline

Definition at line 1154 of file cddefines.h.

References auto_vec(), and reset().

Here is the call graph for this function:

◆ operator=() [2/2]

template<class T>
auto_vec & auto_vec< T >::operator= ( auto_vec_ref< element_type > r)
throw ( )
inline

Definition at line 1200 of file cddefines.h.

References auto_vec(), and ptr.

Here is the call graph for this function:

◆ operator[]()

template<class T>
element_type & auto_vec< T >::operator[] ( ptrdiff_t n) const
throw ( )
inline

Definition at line 1166 of file cddefines.h.

References ptr.

◆ release()

template<class T>
element_type * auto_vec< T >::release ( )
throw ( )
inline

Definition at line 1179 of file cddefines.h.

References ptr.

Referenced by operator auto_vec_ref< element_type >().

◆ reset()

template<class T>
void auto_vec< T >::reset ( element_type * p = NULL)
throw ( )
inline

Definition at line 1185 of file cddefines.h.

References ptr.

Referenced by operator=().

Field Documentation

◆ ptr

template<class T>
T* auto_vec< T >::ptr
private

The documentation for this class was generated from the following file: