#include "position.h" #include #include #include Position::Position() : iDims( 0 ), aiValues( 0 ) { } Position::Position( int iDims ) : iDims( iDims ), aiValues( 0 ) { aiValues = new int[iDims]; memset( aiValues, 0, sizeof(int)*iDims ); } Position::Position( int iDims, int iX, ...) : iDims( iDims ), aiValues( 0 ) { aiValues = new int[iDims]; memset( aiValues, 0, sizeof(int)*iDims ); aiValues[0] = iX; va_list ap; va_start( ap, iX ); for( int j = 1; j < iDims; j++ ) { aiValues[j] = va_arg( ap, int ); } va_end( ap ); } Position::Position( const Position &rhs ) : iDims( rhs.iDims ), aiValues( 0 ) { aiValues = new int[iDims]; memcpy( aiValues, rhs.aiValues, sizeof(int)*iDims ); } Position::~Position() { delete[] aiValues; } int Position::operator[]( int iIdx ) const { if( iIdx < 0 ) throw std::exception(); else if( iIdx >= iDims ) throw std::exception(); return aiValues[iIdx]; } int &Position::operator[]( int iIdx ) { if( iIdx < 0 ) throw std::exception(); else if( iIdx >= iDims ) throw std::exception(); return aiValues[iIdx]; } Position &Position::operator=( const Position &rhs ) { delete[] aiValues; iDims = rhs.iDims; aiValues = new int[iDims]; memcpy( aiValues, rhs.aiValues, sizeof(int)*iDims ); return *this; } int Position::getDims() const { return iDims; }