// // ******************************************************************** // * DISCLAIMER * // * * // * The following disclaimer summarizes all the specific disclaimers * // * of contributors to this software. The specific disclaimers,which * // * govern, are listed with their locations in: * // * http://cern.ch/geant4/license * // * * // * Neither the authors of this software system, nor their employing * // * institutes,nor the agencies providing financial support for this * // * work make any representation or warranty, express or implied, * // * regarding this software system or assume any liability for its * // * use. * // * * // * This code implementation is the intellectual property of the * // * GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // // $Id: tvordvec.icc,v 1.6.4.1 2001/06/28 19:09:59 gunter Exp $ // GEANT4 tag $Name: $ // // //--------------------------------------------------------------- // GEANT 4 class header file // // G4RWTValOrderedVector //--------------------------------------------------------------- template G4RWTValOrderedVector::G4RWTValOrderedVector(size_t capacity) : std_vector(capacity, T()),rwsize(0){} // Here Rogue-Wave would leave // members T uninitialised and // would create an EMPTY vector! template G4RWTValOrderedVector::G4RWTValOrderedVector(const G4RWTValOrderedVector& v) : std_vector(v),rwsize(v.rwsize){} template G4RWTValOrderedVector::~G4RWTValOrderedVector(){} template G4RWTValOrderedVector& G4RWTValOrderedVector::operator=(const G4RWTValOrderedVector& v) { std_vector::operator=(v); rwsize=v.rwsize; return *this; } template T& G4RWTValOrderedVector::operator()(size_t i) { // temporarly commented; to allow use as left-value rwsize is increased // #ifdef G4DEBUG // if(i>=rwsize) // G4RWTHROW(G4RWBoundsErr("G4RWTValOrderedVector ()",rwsize,i)); // #endif if(rwsize<=i && i const T& G4RWTValOrderedVector::operator()(size_t i) const { #ifdef G4DEBUG if(i>=rwsize) G4RWTHROW(G4RWBoundsErr("G4RWTValOrderedVector const()",rwsize,i)); #endif return std_vector::operator[](i); } template T& G4RWTValOrderedVector::operator[](size_t i) { if(i>=rwsize) G4RWTHROW(G4RWBoundsErr("G4RWTValOrderedVector []",rwsize,i)); return std_vector::operator[](i); } template const T& G4RWTValOrderedVector::operator[](size_t i) const { if(i>=rwsize) G4RWTHROW(G4RWBoundsErr("G4RWTValOrderedVector const []",rwsize,i)); return std_vector::operator[](i); } template T& G4RWTValOrderedVector::at(size_t n) { if(n>=rwsize) G4RWTHROW(G4RWBoundsErr("G4RWTValOrderedVector at",rwsize,n)); return std_vector::operator[](n); } template T G4RWTValOrderedVector::at(size_t n ) const { if(n>=rwsize) G4RWTHROW(G4RWBoundsErr("G4RWTValOrderedVector const at",rwsize,n)); return std_vector::operator[](n); } template void G4RWTValOrderedVector::clear( void ) { //std_vector::erase(std_vector::begin(), std_vector::end()); for(size_t i=0;i size_t G4RWTValOrderedVector::length() const { return rwsize; } template size_t G4RWTValOrderedVector::entries () const { return rwsize; } template void G4RWTValOrderedVector::append ( const T& a ) { insert ( a ); } template T G4RWTValOrderedVector::first() const { if(!rwsize) G4RWTHROW(G4RWBoundsErr("G4RWTValOrderedVector first",rwsize,0)); return std_vector::front(); } template T G4RWTValOrderedVector::last() const { if(!rwsize) G4RWTHROW(G4RWBoundsErr("G4RWTValOrderedVector last",rwsize,0)); return std_vector::operator[](rwsize-1); } template size_t G4RWTValOrderedVector::index( const T& a ) { iterator i; size_t ptn = 0; for (i = std_vector::begin();ptn size_t G4RWTValOrderedVector::occurrencesOf( const T& a ) const { const_iterator i; size_t ptn = 0; size_t sz=0; for (i = std_vector::begin(); sz G4bool G4RWTValOrderedVector::remove( const T& a ) { iterator i; size_t sz=0; size_t rwsz=rwsize; for (i = std_vector::begin(); sz size_t G4RWTValOrderedVector::removeAll( const T& a ) { iterator i; size_t ptn = 0; size_t sz=0; size_t rwsz=rwsize; for (i = std_vector::begin();sz T G4RWTValOrderedVector::removeAt( size_t i ) { if(i>=rwsize) G4RWTHROW(G4RWBoundsErr("G4RWTValOrderedVector removeAt",rwsize,i)); T tmp = std_vector::operator[](i); iterator it=std_vector::begin(); for(size_t j=0;j void G4RWTValOrderedVector::resize(size_t N) { if(N>std_vector::size()) { size_t e=N-std_vector::size(); for(size_t i=0;irwsize ) { iterator it=std_vector::begin(); for(size_t i=0;i G4bool G4RWTValOrderedVector::contains( const T a ) const { const_iterator i; size_t sz=0; for (i = std_vector::begin();sz G4bool G4RWTValOrderedVector::insert ( const T& a ) { if(rwsizestd_vector::operator[](rwsize)=a; rwsize++; } else { std_vector::push_back(a); rwsize=std_vector::size(); } return true; } // insertAt throws an exception of type G4RWBoundsErr if you try // to insert out of range // template void G4RWTValOrderedVector::insertAt ( size_t i, const T& a ) { if(i>rwsize) G4RWTHROW(G4RWBoundsErr("G4RWTValOrderedVector insertAt",rwsize,i)); if(rwsizei;j--) std_vector::operator[](j)=this->std_vector::operator[](j-1); std_vector::operator[](i)=a; rwsize++; } else { iterator it=std_vector::begin(); for(size_t j=0;j