Vector_T.cpp

Go to the documentation of this file.
00001 // Vector_T.cpp,v 4.11 2005/10/28 23:55:10 ossama Exp
00002 
00003 #ifndef ACE_VECTOR_T_CPP
00004 #define ACE_VECTOR_T_CPP
00005 
00006 #if !defined (ACE_LACKS_PRAGMA_ONCE)
00007 # pragma once
00008 #endif /* ACE_LACKS_PRAGMA_ONCE */
00009 
00010 #include "ace/Vector_T.h"
00011 
00012 #if !defined (__ACE_INLINE__)
00013 #include "ace/Vector_T.inl"
00014 #endif /* __ACE_INLINE__ */
00015 
00016 ACE_BEGIN_VERSIONED_NAMESPACE_DECL
00017 
00018 ACE_ALLOC_HOOK_DEFINE(ACE_Vector)
00019 
00020 template <class T, size_t DEFAULT_SIZE>
00021 void ACE_Vector<T, DEFAULT_SIZE>::resize (const size_t new_size,
00022                                           const T& t)
00023 {
00024   ACE_Array<T>::size (new_size);
00025   if (new_size > length_)
00026     for (size_t i = length_; i < new_size; ++i)
00027       (*this)[i]=t;
00028 
00029   curr_max_size_ = this->max_size ();
00030   length_ = new_size;
00031 }
00032 
00033 template <class T, size_t DEFAULT_SIZE>
00034 void ACE_Vector<T, DEFAULT_SIZE>::push_back (const T& elem)
00035 {
00036   if (length_ == curr_max_size_)
00037     {
00038       ACE_Array<T>::size (curr_max_size_ * 2);
00039       curr_max_size_ = this->max_size ();
00040     }
00041   ++length_;
00042   (*this)[length_-1] = elem;
00043 }
00044 
00045 template <class T, size_t DEFAULT_SIZE>
00046 void ACE_Vector<T, DEFAULT_SIZE>::dump (void) const
00047 {
00048 #if defined (ACE_HAS_DUMP)
00049 #if 0
00050   // Can't do this unless the vector is an object with a dump
00051   // function.
00052   for (size_t i = 0; i < this->size (); ++i)
00053     (*this)[i].dump ();
00054 #endif /* 0 */
00055 #endif /* ACE_HAS_DUMP */
00056 }
00057 
00058 // Compare this vector with <s> for equality.
00059 template <class T, size_t DEFAULT_SIZE> bool
00060 ACE_Vector<T, DEFAULT_SIZE>::operator== (const ACE_Vector<T, DEFAULT_SIZE> &s) const
00061 {
00062   if (this == &s)
00063     return true;
00064   else if (this->size () != s.size ())
00065     return false;
00066 
00067   const size_t len = s.size ();
00068   for (size_t slot = 0; slot < len; ++slot)
00069     if ((*this)[slot] != s[slot])
00070       return false;
00071 
00072   return true;
00073 }
00074 
00075 #if 0
00076 template<class T>
00077 int compare(const ACE_Vector<T>& v1,
00078             const ACE_Vector<T>& v2,
00079             const size_t from_ndx,
00080             const size_t to_ndx)
00081 {
00082   size_t last1 = v1.size () - 1;
00083   size_t last2 = v2.size () - 1;
00084   if (last1 < from_ndx || last1 < to_ndx)
00085     {
00086       return false;
00087     }
00088   if (last2 < from_ndx || last2 < to_ndx)
00089     {
00090       return false;
00091     }
00092   if (last1 != last2)
00093     {
00094       return false;
00095     }
00096 
00097   //  cout<<"compare() <================="<<endl;
00098   for (size_t i = from_ndx; i <= to_ndx; ++i)
00099     {
00100       //     cout<<"V1["<<i<<"]="<<v1[i];
00101       //     cout<<", V2["<<i<<"]="<<v2[i];
00102       //     cout<<": NOT EQUAL == "<<(v1[i]!=v2[i])<<endl;
00103       if (v1[i] != v2[i])
00104         {
00105           return false;
00106         }
00107     }
00108   //  cout<<"compare() ====================>"<<endl;
00109   return true;
00110 }
00111 
00112 template<class T>
00113 int partial_compare(const ACE_Vector<T>& v1,
00114                     const ACE_Vector<T>& v2,
00115                     const size_t from_ndx,
00116                     const size_t to_ndx)
00117 {
00118   size_t last1 = v1.size () - 1;
00119   size_t last2 = v2.size () - 1;
00120   if (last1 < from_ndx || last1 < to_ndx)
00121     {
00122       return false;
00123     }
00124   if (last2 < from_ndx || last2 < to_ndx)
00125     {
00126       return false;
00127     }
00128   //  cout<<"partial_compare() <================="<<endl;
00129   for (size_t i = from_ndx; i <= to_ndx; ++i)
00130     {
00131       //     cout<<"V1["<<i<<"]="<<v1[i];
00132       //     cout<<", V2["<<i<<"]="<<v2[i];
00133       //     cout<<": NOT EQUAL == "<<(v1[i]!=v2[i])<<endl;
00134       if (v1[i] != v2[i])
00135         {
00136           return false;
00137         }
00138     }
00139   //  cout<<"partial_compare() ====================>"<<endl;
00140   return true;
00141 }
00142 #endif
00143 
00144 // ****************************************************************
00145 
00146 template <class T, size_t DEFAULT_SIZE> int
00147 ACE_Vector_Iterator<T, DEFAULT_SIZE>::next (T *&item)
00148 {
00149   // ACE_TRACE ("ACE_Vector_Iterator<T>::next");
00150 
00151   if (this->done ())
00152     {
00153       item = 0;
00154       return 0;
00155     }
00156   else
00157     {
00158       item = &vector_[current_];
00159       return 1;
00160     }
00161 }
00162 
00163 ACE_END_VERSIONED_NAMESPACE_DECL
00164 
00165 #endif /* ACE_VECTOR_T_CPP */

Generated on Thu Nov 9 09:42:09 2006 for ACE by doxygen 1.3.6