00001 // -*- C++ -*- 00002 // 00003 // $Id: Array_Base.inl 74958 2006-10-23 23:31:00Z ossama $ 00004 00005 ACE_BEGIN_VERSIONED_NAMESPACE_DECL 00006 00007 // Clean up the array (e.g., delete dynamically allocated memory). 00008 template <class T> ACE_INLINE 00009 ACE_Array_Base<T>::~ACE_Array_Base (void) 00010 { 00011 ACE_DES_ARRAY_FREE (this->array_, 00012 this->max_size_, 00013 this->allocator_->free, 00014 T); 00015 } 00016 00017 template <class T> 00018 ACE_INLINE typename ACE_Array_Base<T>::iterator 00019 ACE_Array_Base<T>::begin (void) 00020 { 00021 return this->array_; 00022 } 00023 00024 template <class T> 00025 ACE_INLINE typename ACE_Array_Base<T>::iterator 00026 ACE_Array_Base<T>::end (void) 00027 { 00028 return this->array_ + this->cur_size_; 00029 } 00030 00031 template <class T> 00032 ACE_INLINE typename ACE_Array_Base<T>::const_iterator 00033 ACE_Array_Base<T>::begin (void) const 00034 { 00035 return this->array_; 00036 } 00037 00038 template <class T> 00039 ACE_INLINE typename ACE_Array_Base<T>::const_iterator 00040 ACE_Array_Base<T>::end (void) const 00041 { 00042 return this->array_ + this->cur_size_; 00043 } 00044 00045 template <class T> 00046 ACE_INLINE typename ACE_Array_Base<T>::reverse_iterator 00047 ACE_Array_Base<T>::rbegin (void) 00048 { 00049 return reverse_iterator (this->end ()); 00050 } 00051 00052 template <class T> 00053 ACE_INLINE typename ACE_Array_Base<T>::reverse_iterator 00054 ACE_Array_Base<T>::rend (void) 00055 { 00056 return reverse_iterator (this->begin ()); 00057 } 00058 00059 template <class T> 00060 ACE_INLINE typename ACE_Array_Base<T>::const_reverse_iterator 00061 ACE_Array_Base<T>::rbegin (void) const 00062 { 00063 return const_reverse_iterator (this->end ()); 00064 } 00065 00066 template <class T> 00067 ACE_INLINE typename ACE_Array_Base<T>::const_reverse_iterator 00068 ACE_Array_Base<T>::rend (void) const 00069 { 00070 return const_reverse_iterator (this->begin ()); 00071 } 00072 00073 template <class T> ACE_INLINE typename ACE_Array_Base<T>::size_type 00074 ACE_Array_Base<T>::size (void) const 00075 { 00076 return this->cur_size_; 00077 } 00078 00079 template <class T> ACE_INLINE typename ACE_Array_Base<T>::size_type 00080 ACE_Array_Base<T>::max_size (void) const 00081 { 00082 return this->max_size_; 00083 } 00084 00085 template <class T> ACE_INLINE bool 00086 ACE_Array_Base<T>::in_range (typename ACE_Array_Base<T>::size_type index) const 00087 { 00088 return index < this->cur_size_; 00089 } 00090 00091 template <class T> ACE_INLINE T & 00092 ACE_Array_Base<T>::operator[] (typename ACE_Array_Base<T>::size_type index) 00093 { 00094 return this->array_[index]; 00095 } 00096 00097 template <class T> ACE_INLINE const T & 00098 ACE_Array_Base<T>::operator[] (typename ACE_Array_Base<T>::size_type index) const 00099 { 00100 return this->array_[index]; 00101 } 00102 00103 // **************************************************************** 00104 00105 template <class T> ACE_INLINE void 00106 ACE_Array_Iterator<T>::dump (void) const 00107 { 00108 #if defined (ACE_HAS_DUMP) 00109 // ACE_TRACE ("ACE_Array_Iterator<T>::dump"); 00110 #endif /* ACE_HAS_DUMP */ 00111 } 00112 00113 template <class T> ACE_INLINE 00114 ACE_Array_Iterator<T>::ACE_Array_Iterator (ACE_Array_Base<T> &a) 00115 : current_ (0), 00116 array_ (a) 00117 { 00118 // ACE_TRACE ("ACE_Array_Iterator<T>::ACE_Array_Iterator"); 00119 } 00120 00121 template <class T> ACE_INLINE int 00122 ACE_Array_Iterator<T>::advance (void) 00123 { 00124 // ACE_TRACE ("ACE_Array_Iterator<T>::advance"); 00125 00126 if (this->current_ < array_.size ()) 00127 { 00128 ++this->current_; 00129 return 1; 00130 } 00131 else 00132 { 00133 // Already finished iterating. 00134 return 0; 00135 } 00136 } 00137 00138 template <class T> ACE_INLINE int 00139 ACE_Array_Iterator<T>::done (void) const 00140 { 00141 ACE_TRACE ("ACE_Array_Iterator<T>::done"); 00142 00143 return this->current_ >= array_.size (); 00144 } 00145 00146 ACE_END_VERSIONED_NAMESPACE_DECL