summaryrefslogtreecommitdiff
path: root/ace/Containers_T.cpp
diff options
context:
space:
mode:
authorcoryan <coryan@ae88bc3d-4319-0410-8dbf-d08b4c9d3795>1999-01-01 18:23:56 +0000
committercoryan <coryan@ae88bc3d-4319-0410-8dbf-d08b4c9d3795>1999-01-01 18:23:56 +0000
commite482c9c365405224e815f80a90195a27412d9c39 (patch)
tree3e46d65e35ccf2cb72f18f31ea5e18e084367133 /ace/Containers_T.cpp
parent727bcdff72653b049969b12c441956a2df3bec46 (diff)
downloadATCD-e482c9c365405224e815f80a90195a27412d9c39.tar.gz
ChangeLogTag:Fri Jan 1 12:22:14 1999 Carlos O'Ryan <coryan@cs.wustl.edu>
Diffstat (limited to 'ace/Containers_T.cpp')
-rw-r--r--ace/Containers_T.cpp46
1 files changed, 31 insertions, 15 deletions
diff --git a/ace/Containers_T.cpp b/ace/Containers_T.cpp
index 0b801da9429..794c5009fc5 100644
--- a/ace/Containers_T.cpp
+++ b/ace/Containers_T.cpp
@@ -2229,11 +2229,12 @@ ACE_DLList<T>::delete_tail (void)
return temp2;
}
+// ****************************************************************
// Dynamically initialize an array.
template <class T>
-ACE_Array<T>::ACE_Array (size_t size)
+ACE_Array_Base<T>::ACE_Array_Base (size_t size)
: max_size_ (size),
cur_size_ (size)
{
@@ -2244,8 +2245,8 @@ ACE_Array<T>::ACE_Array (size_t size)
}
template <class T>
-ACE_Array<T>::ACE_Array (size_t size,
- const T &default_value)
+ACE_Array_Base<T>::ACE_Array_Base (size_t size,
+ const T &default_value)
: max_size_ (size),
cur_size_ (size)
{
@@ -2258,7 +2259,7 @@ ACE_Array<T>::ACE_Array (size_t size,
// The copy constructor (performs initialization).
template <class T>
-ACE_Array<T>::ACE_Array (const ACE_Array<T> &s)
+ACE_Array_Base<T>::ACE_Array_Base (const ACE_Array_Base<T> &s)
: max_size_ (s.size ()),
cur_size_ (s.size ())
{
@@ -2270,18 +2271,18 @@ ACE_Array<T>::ACE_Array (const ACE_Array<T> &s)
// Assignment operator (performs assignment).
-template <class T> void
-ACE_Array<T>::operator= (const ACE_Array<T> &s)
+template <class T> ACE_Array_Base<T>&
+ACE_Array_Base<T>::operator= (const ACE_Array_Base<T> &s)
{
// Check for "self-assignment".
if (this == &s)
- return;
+ return *this;
else if (this->max_size_ < s.size ())
{
delete [] this->array_;
- ACE_NEW (this->array_, T[s.size ()]);
+ ACE_NEW_RETURN (this->array_, T[s.size ()], *this);
this->max_size_ = s.size ();
}
@@ -2290,12 +2291,14 @@ ACE_Array<T>::operator= (const ACE_Array<T> &s)
for (size_t i = 0; i < this->size (); i++)
this->array_[i] = s.array_[i];
+
+ return *this;
}
// Set an item in the array at location index.
template <class T> int
-ACE_Array<T>::set (const T &new_item, size_t index)
+ACE_Array_Base<T>::set (const T &new_item, size_t index)
{
if (this->in_range (index))
{
@@ -2309,7 +2312,7 @@ ACE_Array<T>::set (const T &new_item, size_t index)
// Get an item in the array at location index.
template <class T> int
-ACE_Array<T>::get (T &item, size_t index) const
+ACE_Array_Base<T>::get (T &item, size_t index) const
{
if (this->in_range (index))
{
@@ -2324,7 +2327,7 @@ ACE_Array<T>::get (T &item, size_t index) const
}
template<class T> int
-ACE_Array<T>::size (size_t new_size)
+ACE_Array_Base<T>::max_size (size_t new_size)
{
if (new_size >= this->max_size_)
{
@@ -2338,11 +2341,21 @@ ACE_Array<T>::size (size_t new_size)
this->array_ = tmp;
this->max_size_ = new_size;
}
- this->cur_size_ = new_size;
+ return 0;
+}
+template<class T> int
+ACE_Array_Base<T>::size (size_t new_size)
+{
+ int r = this->max_size (new_size);
+ if (r != 0)
+ return r;
+ this->cur_size_ = new_size;
return 0;
}
+// ****************************************************************
+
// Compare this array with <s> for equality.
template <class T> int
@@ -2350,16 +2363,19 @@ ACE_Array<T>::operator== (const ACE_Array<T> &s) const
{
if (this == &s)
return 1;
- else if (this->cur_size_ != s.cur_size_)
+ else if (this->size () != s.size ())
return 0;
- for (size_t index = 0; index < s.cur_size_; index++)
- if (this->array_[index] != s.array_[index])
+ for (size_t index = 0; index < s.size (); index++)
+ if ((*this)[index] != s[index])
return 0;
return 1;
}
+// ****************************************************************
+
+
template <class T> int
ACE_Array_Iterator<T>::next (T *&item)
{