Main Page   Class Hierarchy   Alphabetical List   Compound List   File List   Compound Members   File Members   Related Pages  

ACE_Array_Base Class Template Reference

Implement a simple dynamic array. More...

#include <Array_Base.h>

Inheritance diagram for ACE_Array_Base

Inheritance graph
[legend]
Collaboration diagram for ACE_Array_Base:

Collaboration graph
[legend]
List of all members.

Public Types

typedef T TYPE
typedef ACE_Array_Iterator<T> ITERATOR

Public Methods

 ACE_Array_Base (size_t size = 0, ACE_Allocator *alloc = 0)
 Dynamically create an uninitialized array.

 ACE_Array_Base (size_t size, const T &default_value, ACE_Allocator *alloc = 0)
 Dynamically initialize the entire array to the <default_value>.

 ACE_Array_Base (const ACE_Array_Base<T> &s)
void operator= (const ACE_Array_Base<T> &s)
 ~ACE_Array_Base (void)
 Clean up the array (e.g., delete dynamically allocated memory).

T& operator[] (size_t slot)
 Set item in the array at location <slot>. Doesn't perform range checking.

const T& operator[] (size_t slot) const
 Get item in the array at location <slot>. Doesn't perform range checking.

int set (const T &new_item, size_t slot)
 Set an item in the array at location <slot>. Returns -1 if <slot> is not in range, else returns 0.

int get (T &item, size_t slot) const
size_t size (void) const
 Returns the <cur_size_> of the array.

int size (size_t new_size)
size_t max_size (void) const
 Returns the <max_size_> of the array.

int max_size (size_t new_size)

Private Methods

int in_range (size_t slot) const
 Returns 1 if <slot> is within range, i.e., 0 >= <slot> < <cur_size_>, else returns 0.


Private Attributes

size_t max_size_
 Maximum size of the array, i.e., the total number of <T> elements in .

size_t cur_size_
T* array_
 Pointer to the array's storage buffer.

ACE_Allocatorallocator_
 Allocation strategy of the ACE_Array_Base.


Friends

class  ACE_Array_Iterator< T >

Detailed Description

template<class T> template class ACE_Array_Base

Implement a simple dynamic array.

This parametric class implements a simple dynamic array; resizing must be controlled by the user. No comparison or find operations are implemented.


Member Typedef Documentation

template<classT>
typedef ACE_Array_Iterator<T> ACE_Array_Base<T>::ITERATOR
 

Reimplemented in ACE_Array.

template<classT>
typedef T ACE_Array_Base<T>::TYPE
 

Reimplemented in ACE_Array.


Constructor & Destructor Documentation

template<classT>
ACE_Array_Base<T>::ACE_Array_Base<T> ( size_t size = 0,
ACE_Allocator * alloc = 0 ) [inline]
 

Dynamically create an uninitialized array.

template<classT>
ACE_Array_Base<T>::ACE_Array_Base<T> ( size_t size,
const T & default_value,
ACE_Allocator * alloc = 0 )
 

Dynamically initialize the entire array to the <default_value>.

template<classT>
ACE_Array_Base<T>::ACE_Array_Base<T> ( const ACE_Array_Base< T >& s )
 

The copy constructor performs initialization by making an exact copy of the contents of parameter <s>, i.e., *this == s will return true.

template<classT>
ACE_INLINE ACE_Array_Base< T >::~ACE_Array_Base<T> ( void )
 

Clean up the array (e.g., delete dynamically allocated memory).


Member Function Documentation

template<classT>
int ACE_Array_Base<T>::get ( T & item,
size_t slot ) const
 

Get an item in the array at location <slot>. Returns -1 if <slot> is not in range, else returns 0. Note that this function copies the item. If you want to avoid the copy, you can use the const operator [], but then you'll be responsible for range checking.

template<classT>
ACE_INLINE int ACE_Array_Base< T >::in_range ( size_t index ) const [private]
 

Returns 1 if <slot> is within range, i.e., 0 >= <slot> < <cur_size_>, else returns 0.

template<classT>
int ACE_Array_Base<T>::max_size ( size_t new_size )
 

Changes the size of the array to match <new_size>. It copies the old contents into the new array. Return -1 on failure. It does not affect new_size

template<classT>
ACE_INLINE size_t ACE_Array_Base< T >::max_size ( void ) const
 

Returns the <max_size_> of the array.

template<classT>
void ACE_Array_Base<T>::operator= ( const ACE_Array_Base< T >& s )
 

Assignment operator performs an assignment by making an exact copy of the contents of parameter <s>, i.e., *this == s will return true. Note that if the <max_size_> of is >= than <s.max_size_> we can copy it without reallocating. However, if <max_size_> is < <s.max_size_> we must delete the , reallocate a new , and then copy the contents of <s>.

template<classT>
ACE_INLINE const T & ACE_Array_Base< T >::operator[] ( size_t index ) const
 

Get item in the array at location <slot>. Doesn't perform range checking.

template<classT>
ACE_INLINE T & ACE_Array_Base< T >::operator[] ( size_t index )
 

Set item in the array at location <slot>. Doesn't perform range checking.

template<classT>
int ACE_Array_Base<T>::set ( const T & new_item,
size_t slot )
 

Set an item in the array at location <slot>. Returns -1 if <slot> is not in range, else returns 0.

template<classT>
int ACE_Array_Base<T>::size ( size_t new_size )
 

Changes the size of the array to match <new_size>. It copies the old contents into the new array. Return -1 on failure.

template<classT>
ACE_INLINE size_t ACE_Array_Base< T >::size ( void ) const
 

Returns the <cur_size_> of the array.


Friends And Related Function Documentation

template<classT>
class ACE_Array_Iterator [friend]
 


Member Data Documentation

template<classT>
ACE_Allocator * ACE_Array_Base<T>::allocator_ [private]
 

Allocation strategy of the ACE_Array_Base.

template<classT>
T * ACE_Array_Base<T>::array_ [private]
 

Pointer to the array's storage buffer.

template<classT>
size_t ACE_Array_Base<T>::cur_size_ [private]
 

Current size of the array. This starts out being == to <max_size_>. However, if we are assigned a smaller array, then <cur_size_> will become less than <max_size_>. The purpose of keeping track of both sizes is to avoid reallocating memory if we don't have to.

template<classT>
size_t ACE_Array_Base<T>::max_size_ [private]
 

Maximum size of the array, i.e., the total number of <T> elements in .


The documentation for this class was generated from the following files:
Generated at Wed Nov 21 10:29:20 2001 for ACE by doxygen1.2.3 written by Dimitri van Heesch, © 1997-2000