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