X-Git-Url: https://mattmccutchen.net/bigint/bigint.git/blobdiff_plain/4a783bbb2e9486761bb9e9928a2184a9b42a6e39..2eeb8e77d77e2f7bd6cce05a96eed7985e5bb937:/BigInteger.cc diff --git a/BigInteger.cc b/BigInteger.cc index 3b23aa1..dac50d9 100644 --- a/BigInteger.cc +++ b/BigInteger.cc @@ -85,23 +85,23 @@ BigInteger::BigInteger(short x) : sign(signOf(x)), mag(magOf -inline X convertBigUnsignedToPrimitiveAccess(const BigUnsigned &a) { - return a.convertToPrimitive(); +inline X convertBigUnsignedToPrimitiveAccess(const BigUnsigned &a, X dummyX) { + return a.convertToPrimitive(dummyX); } template -X BigInteger::convertToUnsignedPrimitive() const { +X BigInteger::convertToUnsignedPrimitive(X dummyX) const { if (sign == negative) throw "BigInteger::to: " "Cannot convert a negative integer to an unsigned type"; else - return convertBigUnsignedToPrimitiveAccess(mag); + return convertBigUnsignedToPrimitiveAccess(mag, dummyX); } /* Similar to BigUnsigned::convertToPrimitive, but split into two cases for * nonnegative and negative numbers. */ template -X BigInteger::convertToSignedPrimitive() const { +X BigInteger::convertToSignedPrimitive(X /*dummyX*/, UX /*dummyUX*/) const { if (sign == zero) return 0; else if (mag.getLength() == 1) { @@ -124,12 +124,12 @@ X BigInteger::convertToSignedPrimitive() const { "Value is too big to fit in the requested type"; } -unsigned long BigInteger::toUnsignedLong () const { return convertToUnsignedPrimitive (); } -unsigned int BigInteger::toUnsignedInt () const { return convertToUnsignedPrimitive (); } -unsigned short BigInteger::toUnsignedShort() const { return convertToUnsignedPrimitive (); } -long BigInteger::toLong () const { return convertToSignedPrimitive (); } -int BigInteger::toInt () const { return convertToSignedPrimitive (); } -short BigInteger::toShort () const { return convertToSignedPrimitive (); } +unsigned long BigInteger::toUnsignedLong () const { return convertToUnsignedPrimitive((unsigned long )0) ; } +unsigned int BigInteger::toUnsignedInt () const { return convertToUnsignedPrimitive((unsigned int )0) ; } +unsigned short BigInteger::toUnsignedShort() const { return convertToUnsignedPrimitive((unsigned short)0) ; } +long BigInteger::toLong () const { return convertToSignedPrimitive ((long )0, (unsigned long )0); } +int BigInteger::toInt () const { return convertToSignedPrimitive ((int )0, (unsigned int )0); } +short BigInteger::toShort () const { return convertToSignedPrimitive ((short)0, (unsigned short)0); } // COMPARISON BigInteger::CmpRes BigInteger::compareTo(const BigInteger &x) const {