(file) Return to ArrayImpl.h CVS log (file) (dir) Up to [Pegasus] / pegasus / src / Pegasus / Common

Diff for /pegasus/src/Pegasus/Common/ArrayImpl.h between version 1.17 and 1.22

version 1.17, 2002/07/19 21:18:23 version 1.22, 2002/08/27 23:38:44
Line 39 
Line 39 
 #include <Pegasus/Common/ArrayRep.h> #include <Pegasus/Common/ArrayRep.h>
 #include <Pegasus/Common/Exception.h> #include <Pegasus/Common/Exception.h>
  
 #ifdef PEGASUS_HAS_EBCDIC  
 #include <unistd.h>  
 #endif  
   
 PEGASUS_NAMESPACE_BEGIN PEGASUS_NAMESPACE_BEGIN
  
 #ifndef PEGASUS_ARRAY_T #ifndef PEGASUS_ARRAY_T
Line 127 
Line 123 
 #ifndef PEGASUS_ARRAY_T #ifndef PEGASUS_ARRAY_T
 template<class PEGASUS_ARRAY_T> template<class PEGASUS_ARRAY_T>
 #endif #endif
 void Array<PEGASUS_ARRAY_T>::reserve(Uint32 capacity)  void Array<PEGASUS_ARRAY_T>::reserveCapacity(Uint32 capacity)
 { {
     if (capacity > static_cast<ArrayRep<PEGASUS_ARRAY_T>*>(_rep)->capacity)     if (capacity > static_cast<ArrayRep<PEGASUS_ARRAY_T>*>(_rep)->capacity)
     {     {
Line 146 
Line 142 
 void Array<PEGASUS_ARRAY_T>::grow(Uint32 size, const PEGASUS_ARRAY_T& x) void Array<PEGASUS_ARRAY_T>::grow(Uint32 size, const PEGASUS_ARRAY_T& x)
 { {
     Uint32 oldSize = static_cast<ArrayRep<PEGASUS_ARRAY_T>*>(_rep)->size;     Uint32 oldSize = static_cast<ArrayRep<PEGASUS_ARRAY_T>*>(_rep)->size;
     reserve(oldSize + size);      reserveCapacity(oldSize + size);
  
     PEGASUS_ARRAY_T* p = static_cast<ArrayRep<PEGASUS_ARRAY_T>*>(_rep)->data() + oldSize;     PEGASUS_ARRAY_T* p = static_cast<ArrayRep<PEGASUS_ARRAY_T>*>(_rep)->data() + oldSize;
     Uint32 n = size;     Uint32 n = size;
Line 194 
Line 190 
 #ifndef PEGASUS_ARRAY_T #ifndef PEGASUS_ARRAY_T
 template<class PEGASUS_ARRAY_T> template<class PEGASUS_ARRAY_T>
 #endif #endif
 PEGASUS_ARRAY_T& Array<PEGASUS_ARRAY_T>::operator[](Uint32 pos)  PEGASUS_ARRAY_T& Array<PEGASUS_ARRAY_T>::operator[](Uint32 index)
 { {
     if (pos >= size())      if (index >= size())
         throw OutOfBounds();          throw IndexOutOfBoundsException();
  
     return static_cast<ArrayRep<PEGASUS_ARRAY_T>*>(_rep)->data()[pos];      return static_cast<ArrayRep<PEGASUS_ARRAY_T>*>(_rep)->data()[index];
 } }
  
 #ifndef PEGASUS_ARRAY_T #ifndef PEGASUS_ARRAY_T
 template<class PEGASUS_ARRAY_T> template<class PEGASUS_ARRAY_T>
 #endif #endif
 const PEGASUS_ARRAY_T& Array<PEGASUS_ARRAY_T>::operator[](Uint32 pos) const  const PEGASUS_ARRAY_T& Array<PEGASUS_ARRAY_T>::operator[](Uint32 index) const
 { {
     if (pos >= size())      if (index >= size())
         throw OutOfBounds();          throw IndexOutOfBoundsException();
  
     return static_cast<ArrayRep<PEGASUS_ARRAY_T>*>(_rep)->data()[pos];      return static_cast<ArrayRep<PEGASUS_ARRAY_T>*>(_rep)->data()[index];
 } }
  
 #ifndef PEGASUS_ARRAY_T #ifndef PEGASUS_ARRAY_T
Line 218 
Line 214 
 #endif #endif
 void Array<PEGASUS_ARRAY_T>::append(const PEGASUS_ARRAY_T& x) void Array<PEGASUS_ARRAY_T>::append(const PEGASUS_ARRAY_T& x)
 { {
     reserve(size() + 1);      reserveCapacity(size() + 1);
     new (_data() + size()) PEGASUS_ARRAY_T(x);     new (_data() + size()) PEGASUS_ARRAY_T(x);
     static_cast<ArrayRep<PEGASUS_ARRAY_T>*>(_rep)->size++;     static_cast<ArrayRep<PEGASUS_ARRAY_T>*>(_rep)->size++;
 } }
Line 228 
Line 224 
 #endif #endif
 void Array<PEGASUS_ARRAY_T>::append(const PEGASUS_ARRAY_T* x, Uint32 size) void Array<PEGASUS_ARRAY_T>::append(const PEGASUS_ARRAY_T* x, Uint32 size)
 { {
     reserve(this->size() + size);      reserveCapacity(this->size() + size);
     CopyToRaw(_data() + this->size(), x, size);     CopyToRaw(_data() + this->size(), x, size);
     static_cast<ArrayRep<PEGASUS_ARRAY_T>*>(_rep)->size += size;     static_cast<ArrayRep<PEGASUS_ARRAY_T>*>(_rep)->size += size;
 } }
Line 254 
Line 250 
 #endif #endif
 void Array<PEGASUS_ARRAY_T>::prepend(const PEGASUS_ARRAY_T* x, Uint32 size) void Array<PEGASUS_ARRAY_T>::prepend(const PEGASUS_ARRAY_T* x, Uint32 size)
 { {
     reserve(this->size() + size);      reserveCapacity(this->size() + size);
     memmove(_data() + size, _data(), sizeof(PEGASUS_ARRAY_T) * this->size());     memmove(_data() + size, _data(), sizeof(PEGASUS_ARRAY_T) * this->size());
     CopyToRaw(_data(), x, size);     CopyToRaw(_data(), x, size);
     static_cast<ArrayRep<PEGASUS_ARRAY_T>*>(_rep)->size += size;     static_cast<ArrayRep<PEGASUS_ARRAY_T>*>(_rep)->size += size;
Line 263 
Line 259 
 #ifndef PEGASUS_ARRAY_T #ifndef PEGASUS_ARRAY_T
 template<class PEGASUS_ARRAY_T> template<class PEGASUS_ARRAY_T>
 #endif #endif
 void Array<PEGASUS_ARRAY_T>::insert(Uint32 pos, const PEGASUS_ARRAY_T& x)  void Array<PEGASUS_ARRAY_T>::insert(Uint32 index, const PEGASUS_ARRAY_T& x)
 { {
     insert(pos, &x, 1);      insert(index, &x, 1);
 } }
  
 #ifndef PEGASUS_ARRAY_T #ifndef PEGASUS_ARRAY_T
 template<class PEGASUS_ARRAY_T> template<class PEGASUS_ARRAY_T>
 #endif #endif
 void Array<PEGASUS_ARRAY_T>::insert(Uint32 pos, const PEGASUS_ARRAY_T* x, Uint32 size)  void Array<PEGASUS_ARRAY_T>::insert(Uint32 index, const PEGASUS_ARRAY_T* x, Uint32 size)
 { {
     if (pos > this->size())      if (index > this->size())
         throw OutOfBounds();          throw IndexOutOfBoundsException();
  
     reserve(this->size() + size);      reserveCapacity(this->size() + size);
  
     Uint32 n = this->size() - pos;      Uint32 n = this->size() - index;
  
     if (n)     if (n)
         memmove(          memmove(_data() + index + size,
             _data() + pos + size, _data() + pos, sizeof(PEGASUS_ARRAY_T) * n);                  _data() + index,
                   sizeof(PEGASUS_ARRAY_T) * n);
  
     CopyToRaw(_data() + pos, x, size);      CopyToRaw(_data() + index, x, size);
     static_cast<ArrayRep<PEGASUS_ARRAY_T>*>(_rep)->size += size;     static_cast<ArrayRep<PEGASUS_ARRAY_T>*>(_rep)->size += size;
 } }
  
 #ifndef PEGASUS_ARRAY_T #ifndef PEGASUS_ARRAY_T
 template<class PEGASUS_ARRAY_T> template<class PEGASUS_ARRAY_T>
 #endif #endif
 void Array<PEGASUS_ARRAY_T>::remove(Uint32 pos)  void Array<PEGASUS_ARRAY_T>::remove(Uint32 index)
 { {
     remove(pos, 1);      remove(index, 1);
 } }
  
 #ifndef PEGASUS_ARRAY_T #ifndef PEGASUS_ARRAY_T
 template<class PEGASUS_ARRAY_T> template<class PEGASUS_ARRAY_T>
 #endif #endif
 void Array<PEGASUS_ARRAY_T>::remove(Uint32 pos, Uint32 size)  void Array<PEGASUS_ARRAY_T>::remove(Uint32 index, Uint32 size)
 { {
     if (pos + size - 1 > this->size())      if (index + size - 1 > this->size())
         throw OutOfBounds();          throw IndexOutOfBoundsException();
  
     Destroy(_data() + pos, size);      Destroy(_data() + index, size);
  
     Uint32 rem = this->size() - (pos + size);      Uint32 rem = this->size() - (index + size);
  
     if (rem)     if (rem)
         memmove(          memmove(_data() + index,
             _data() + pos, _data() + pos + size, sizeof(PEGASUS_ARRAY_T) * rem);                  _data() + index + size,
                   sizeof(PEGASUS_ARRAY_T) * rem);
  
     static_cast<ArrayRep<PEGASUS_ARRAY_T>*>(_rep)->size -= size;     static_cast<ArrayRep<PEGASUS_ARRAY_T>*>(_rep)->size -= size;
 } }
  
 #ifdef PEGASUS_HAS_EBCDIC  
   
 #ifndef PEGASUS_ARRAY_T  
 template<class PEGASUS_ARRAY_T>  
 #endif  
 void Array<PEGASUS_ARRAY_T>::etoa()  
 {  
 #if PEGASUS_ARRAY_T == Sint8  
     __etoa_l((char *)_data(),static_cast<ArrayRep<PEGASUS_ARRAY_T>*>(_rep)->size);  
 #endif  
 }  
   
 #ifndef PEGASUS_ARRAY_T  
 template<class PEGASUS_ARRAY_T>  
 #endif  
 void Array<PEGASUS_ARRAY_T>::atoe()  
 {  
 #if PEGASUS_ARRAY_T == Sint8  
     __atoe_l((char *)_data(),static_cast<ArrayRep<PEGASUS_ARRAY_T>*>(_rep)->size);  
 #endif  
 }  
   
 #endif  
   
 #ifndef PEGASUS_ARRAY_T  
 template<class PEGASUS_ARRAY_T>  
 #endif  
 PEGASUS_ARRAY_T* Array<PEGASUS_ARRAY_T>::begin()  
 {  
     return static_cast<ArrayRep<PEGASUS_ARRAY_T>*>(_rep)->data();  
 }  
   
 #ifndef PEGASUS_ARRAY_T  
 template<class PEGASUS_ARRAY_T>  
 #endif  
 PEGASUS_ARRAY_T* Array<PEGASUS_ARRAY_T>::end()  
 {  
     return static_cast<ArrayRep<PEGASUS_ARRAY_T>*>(_rep)->data() + size();  
 }  
   
 #ifndef PEGASUS_ARRAY_T  
 template<class PEGASUS_ARRAY_T>  
 #endif  
 const PEGASUS_ARRAY_T* Array<PEGASUS_ARRAY_T>::begin() const  
 {  
     return getData();  
 }  
   
 #ifndef PEGASUS_ARRAY_T  
 template<class PEGASUS_ARRAY_T>  
 #endif  
 const PEGASUS_ARRAY_T* Array<PEGASUS_ARRAY_T>::end() const  
 {  
     return getData() + size();  
 }  
   
 #ifndef PEGASUS_ARRAY_T #ifndef PEGASUS_ARRAY_T
 template<class PEGASUS_ARRAY_T> template<class PEGASUS_ARRAY_T>
 #endif #endif


Legend:
Removed from v.1.17  
changed lines
  Added in v.1.22

No CVS admin address has been configured
Powered by
ViewCVS 0.9.2