diff options
Diffstat (limited to 'ace/Array_Base.h')
-rw-r--r-- | ace/Array_Base.h | 207 |
1 files changed, 0 insertions, 207 deletions
diff --git a/ace/Array_Base.h b/ace/Array_Base.h deleted file mode 100644 index 042e6061fad..00000000000 --- a/ace/Array_Base.h +++ /dev/null @@ -1,207 +0,0 @@ -/* -*- C++ -*- */ - -//============================================================================= -/** - * @file Array_Base.h - * - * $Id$ - * - * @author Doug Schmidt - */ -//============================================================================= - - -#ifndef ACE_ARRAY_BASE_H -#define ACE_ARRAY_BASE_H -#include "ace/pre.h" - -#include "ace/config-all.h" - -#if !defined (ACE_LACKS_PRAGMA_ONCE) -# pragma once -#endif /* ACE_LACKS_PRAGMA_ONCE */ - -class ACE_Allocator; - -// Forward declaration. -template <class T> class ACE_Array_Iterator; - -/** - * @class ACE_Array_Base - * - * @brief 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. - */ -template<class T> -class ACE_Array_Base -{ -public: - - // Define a "trait" - typedef T TYPE; - typedef ACE_Array_Iterator<T> ITERATOR; - - // = Initialization and termination methods. - - /// Dynamically create an uninitialized array. - ACE_Array_Base (size_t size = 0, - ACE_Allocator *alloc = 0); - - /// Dynamically initialize the entire array to the <default_value>. - ACE_Array_Base (size_t size, - const T &default_value, - ACE_Allocator *alloc = 0); - - /** - * The copy constructor performs initialization by making an exact - * copy of the contents of parameter <s>, i.e., *this == s will - * return true. - */ - ACE_Array_Base (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 <array_> is >= than - * <s.max_size_> we can copy it without reallocating. However, if - * <max_size_> is < <s.max_size_> we must delete the <array_>, - * reallocate a new <array_>, and then copy the contents of <s>. - */ - void operator= (const ACE_Array_Base<T> &s); - - /// Clean up the array (e.g., delete dynamically allocated memory). - ~ACE_Array_Base (void); - - // = Set/get methods. - - /// Set item in the array at location <slot>. Doesn't - /// perform range checking. - T &operator [] (size_t slot); - - /// Get item in the array at location <slot>. Doesn't - /// perform range checking. - const T &operator [] (size_t slot) const; - - /// Set an item in the array at location <slot>. Returns - /// -1 if <slot> is not in range, else returns 0. - int set (const T &new_item, size_t slot); - - /** - * 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. - */ - int get (T &item, size_t slot) const; - - /// Returns the <cur_size_> of the array. - size_t size (void) const; - - /** - * Changes the size of the array to match <new_size>. - * It copies the old contents into the new array. - * Return -1 on failure. - */ - int size (size_t new_size); - - /// Returns the <max_size_> of the array. - size_t max_size (void) const; - - /** - * 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 - */ - int max_size (size_t new_size); - -private: - /// Returns 1 if <slot> is within range, i.e., 0 >= <slot> < - /// <cur_size_>, else returns 0. - int in_range (size_t slot) const; - - /// Maximum size of the array, i.e., the total number of <T> elements - /// in <array_>. - size_t max_size_; - - /** - * 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. - */ - size_t cur_size_; - - /// Pointer to the array's storage buffer. - T *array_; - - /// Allocation strategy of the ACE_Array_Base. - ACE_Allocator *allocator_; - - friend class ACE_Array_Iterator<T>; -}; - -// **************************************************************** - -/** - * @class ACE_Array_Iterator - * - * @brief Implement an iterator over an ACE_Array. - * - * This iterator is safe in the face of array element deletions. - * But it is NOT safe if the array is resized (via the ACE_Array - * assignment operator) during iteration. That would be very - * odd, and dangerous. - */ -template <class T> -class ACE_Array_Iterator -{ -public: - // = Initialization method. - ACE_Array_Iterator (ACE_Array_Base<T> &); - - // = Iteration methods. - - /// Pass back the <next_item> that hasn't been seen in the Array. - /// Returns 0 when all items have been seen, else 1. - int next (T *&next_item); - - /// Move forward by one element in the Array. Returns 0 when all the - /// items in the Array have been seen, else 1. - int advance (void); - - /// Returns 1 when all items have been seen, else 0. - int done (void) const; - - /// Dump the state of an object. - void dump (void) const; - - /// Declare the dynamic allocation hooks. - ACE_ALLOC_HOOK_DECLARE; - -private: - /// Pointer to the current item in the iteration. - u_int current_; - - /// Pointer to the Array we're iterating over. - ACE_Array_Base<T> &array_; -}; - -#if defined (__ACE_INLINE__) -#include "ace/Array_Base.inl" -#endif /* __ACE_INLINE__ */ - -#if defined (ACE_TEMPLATES_REQUIRE_SOURCE) -#include "ace/Array_Base.cpp" -#endif /* ACE_TEMPLATES_REQUIRE_SOURCE */ - -#if defined (ACE_TEMPLATES_REQUIRE_PRAGMA) -#pragma implementation ("Array_Base.cpp") -#endif /* ACE_TEMPLATES_REQUIRE_PRAGMA */ - -#include "ace/post.h" -#endif /* ACE_ARRAY_BASE_H */ |