/* emacs edit mode for this file is -*- C++ -*- */ /* $Id$ */ #include template Array::Array() : data(0), _min(0), _max(-1), _size(0) { } template Array::Array( const Array & a ) { if ( a._size > 0 ) { _min = a._min; _max = a._max; _size = a._size; data = new T[_size]; for ( int i = 0; i < _size; i++ ) data[i] = a.data[i]; } else { data = 0; _min = _size = 0; _max = -1; } } template Array::Array( int i ) { _min = 0; _max = i-1; _size = i; if ( i == 0 ) data = 0; else data = new T[_size]; } template Array::Array( int min, int max ) { if ( max < min ) { _min = _size = 0; _max = -1; data = 0; } else { _min = min; _max = max; _size = _max - _min + 1; data = new T[_size]; } } template Array::~Array() { delete [] data; } template Array& Array::operator= ( const Array & a ) { if ( this != &a ) { delete [] data; _min = a._min; _max = a._max; _size = a._size; if ( a._size > 0 ) { _size = a._size; data = new T[_size]; for ( int i = 0; i < _size; i++ ) data[i] = a.data[i]; } else { data = 0; _size = 0; } } return *this; } template T& Array::operator[] ( int i ) const { ASSERT( i >= _min && i <= _max, "warning: array size mismatch." ); return data[i-_min]; } template int Array::size() const { return _size; } template int Array::min() const { return _min; } template int Array::max() const { return _max; } /* template Array& Array::operator*= ( const T & t ) { for ( int i = 0; i < _size; i++ ) data[i] *= t; return *this; } template Array& Array::operator+= ( const T & t ) { for ( int i = 0; i < _size; i++ ) data[i] += t; return *this; } template Array& Array::operator+= ( const Array & a ) { ASSERT ( _size == a._size, "warning: array size mismatch." ); for ( int i = 0; i < _size; i++ ) data[i] += a.data[i]; return *this; } */ #ifndef NOSTREAMIO template void Array::print ( OSTREAM & os ) const { if ( _size == 0 ) os << "( )"; else { os << "( " << data[0]; for ( int i = 1; i < _size; i++ ) os << ", " << data[i]; os << " )"; } } template OSTREAM& operator<< ( OSTREAM & os, const Array & a ) { a.print( os ); return os; } #endif /* NOSTREAMIO */