#include "Integer.hh" #include "Long.hh" #include "LargeInt.hh" #include "Complex.hh" #include "Imaginary.hh" Integer::Integer( ) { value = 0; } Integer::Integer( int val ) { value = val; } Integer::~Integer( ) { } NumberRep* Integer::operator+ ( const NumberRep& n ) const throws NumberException { return n.addInt( *this ); } NumberRep* Integer::operator- ( const NumberRep& n ) const throws NumberException { NumberRep *neg = -n; NumberRep *resp = neg->addInt( *this ); delete neg; return resp; } NumberRep* Integer::operator- ( ) const throws NumberException { return new Integer( -value ); } int Integer::getValue( ) const { return value; } bool Integer::operator ==( Integer& n ) const { return (value == n.value)? true : false; } // protected: NumberRep* Integer::addInt( const Integer& n ) const { // falta redondeo return new Integer( value + n.value ); } NumberRep* Integer::addLong( const Long& n ) const { return n.addInt( *this ); } NumberRep* Integer::addLargeInt( const LargeInt& n ) const { return n.addInt( *this ); } NumberRep* Integer::addComplex( const Complex& n ) const { return n.addInt( *this ); } NumberRep* Integer::addImaginary( const Imaginary& n ) const { return n.addInt( *this ); } NumberRep* Integer::subsInt( const Integer& n ) const { // falta redondeo return new Integer( value - n.value ); } NumberRep* Integer::subsLong( const Long& n ) const { NumberRep *neg = -n; NumberRep *resp = neg->addInt( *this ); delete neg; return resp; } NumberRep* Integer::subsLargeInt( const LargeInt& n ) const { NumberRep *neg = -n; NumberRep *resp = neg->addInt( *this ); delete neg; return resp; } NumberRep* Integer::subsComplex( const Complex& n ) const { NumberRep *neg = -n; NumberRep *resp = neg->addInt( *this ); delete neg; return resp; } NumberRep* Integer::subsImaginary( const Imaginary& n ) const { NumberRep *neg = -n; NumberRep *resp = neg->addInt( *this ); delete neg; return resp; } SimpleNumber* Integer::clone( ) const { return new Integer( value ); }