Crypto++  5.6.3
Free C++ class library of cryptographic schemes
Classes | Public Member Functions | List of all members
Integer Class Reference

Multiple precision integer with arithmetic operations. More...

+ Inheritance diagram for Integer:

Classes

class  DivideByZero
 Exception thrown when division by 0 is encountered. More...
 
class  OpenPGPDecodeErr
 Exception thrown when an error is encountered decoding an OpenPGP integer. More...
 
class  RandomNumberNotFound
 Exception thrown when a random number cannot be found that satisfies the condition. More...
 

Public Member Functions

virtual void BEREncode (BufferedTransformation &bt) const
 Encode this object into a BufferedTransformation. More...
 

ENUMS, EXCEPTIONS, and TYPEDEFS

enum  Sign { POSITIVE =0, NEGATIVE =1 }
 Used internally to represent the integer. More...
 
enum  Signedness { UNSIGNED, SIGNED }
 Used when importing and exporting integers. More...
 
enum  RandomNumberType { ANY, PRIME }
 Properties of a random integer. More...
 

CREATORS

 Integer ()
 Creates the zero integer.
 
 Integer (const Integer &t)
 copy constructor
 
 Integer (signed long value)
 Convert from signed long.
 
 Integer (Sign sign, lword value)
 Convert from lword. More...
 
 Integer (Sign sign, word highWord, word lowWord)
 Convert from two words. More...
 
 Integer (const char *str)
 Convert from a C-string. More...
 
 Integer (const wchar_t *str)
 Convert from a wide C-string. More...
 
 Integer (const byte *encodedInteger, size_t byteCount, Signedness sign=UNSIGNED)
 Convert from a big-endian byte array. More...
 
 Integer (BufferedTransformation &bt, size_t byteCount, Signedness sign=UNSIGNED)
 Convert from a big-endian array. More...
 
 Integer (BufferedTransformation &bt)
 Convert from a BER encoded byte array. More...
 
 Integer (RandomNumberGenerator &rng, size_t bitCount)
 Create a random integer. More...
 
 Integer (RandomNumberGenerator &rng, const Integer &min, const Integer &max, RandomNumberType rnType=ANY, const Integer &equiv=Zero(), const Integer &mod=One())
 Create a random integer of special form. More...
 
static const IntegerZero ()
 Integer representing 0. More...
 
static const IntegerOne ()
 Integer representing 1. More...
 
static const IntegerTwo ()
 Integer representing 2. More...
 
static Integer Power2 (size_t e)
 Exponentiates to a power of 2. More...
 

ENCODE/DECODE

size_t MinEncodedSize (Signedness sign=UNSIGNED) const
 The minimum number of bytes to encode this integer. More...
 
void Encode (byte *output, size_t outputLen, Signedness sign=UNSIGNED) const
 Encode in big-endian format. More...
 
void Encode (BufferedTransformation &bt, size_t outputLen, Signedness sign=UNSIGNED) const
 Encode in big-endian format. More...
 
void DEREncode (BufferedTransformation &bt) const
 Encode in DER format. More...
 
void DEREncodeAsOctetString (BufferedTransformation &bt, size_t length) const
 encode absolute value as big-endian octet string More...
 
size_t OpenPGPEncode (byte *output, size_t bufferSize) const
 Encode absolute value in OpenPGP format. More...
 
size_t OpenPGPEncode (BufferedTransformation &bt) const
 Encode absolute value in OpenPGP format. More...
 
void Decode (const byte *input, size_t inputLen, Signedness sign=UNSIGNED)
 Decode from big-endian byte array. More...
 
void Decode (BufferedTransformation &bt, size_t inputLen, Signedness sign=UNSIGNED)
 Decode nonnegative value from big-endian byte array. More...
 
void BERDecode (const byte *input, size_t inputLen)
 Decode from BER format. More...
 
void BERDecode (BufferedTransformation &bt)
 Decode from BER format. More...
 
void BERDecodeAsOctetString (BufferedTransformation &bt, size_t length)
 Decode nonnegative value from big-endian octet string. More...
 
void OpenPGPDecode (const byte *input, size_t inputLen)
 Decode from OpenPGP format. More...
 
void OpenPGPDecode (BufferedTransformation &bt)
 Decode from OpenPGP format. More...
 

ACCESSORS

bool IsConvertableToLong () const
 return true if *this can be represented as a signed long
 
signed long ConvertToLong () const
 return equivalent signed long if possible, otherwise undefined
 
unsigned int BitCount () const
 number of significant bits = floor(log2(abs(*this))) + 1
 
unsigned int ByteCount () const
 number of significant bytes = ceiling(BitCount()/8)
 
unsigned int WordCount () const
 number of significant words = ceiling(ByteCount()/sizeof(word))
 
bool GetBit (size_t i) const
 return the i-th bit, i=0 being the least significant bit
 
byte GetByte (size_t i) const
 return the i-th byte
 
lword GetBits (size_t i, size_t n) const
 return n lowest bits of *this >> i
 
bool IsZero () const
 
bool NotZero () const
 
bool IsNegative () const
 
bool NotNegative () const
 
bool IsPositive () const
 
bool NotPositive () const
 
bool IsEven () const
 
bool IsOdd () const
 

MANIPULATORS

Integeroperator= (const Integer &t)
 
Integeroperator+= (const Integer &t)
 
Integeroperator-= (const Integer &t)
 
Integeroperator*= (const Integer &t)
 
Integeroperator/= (const Integer &t)
 
Integeroperator%= (const Integer &t)
 
Integeroperator/= (word t)
 
Integeroperator%= (word t)
 
Integeroperator<<= (size_t)
 
Integeroperator>>= (size_t)
 
void Randomize (RandomNumberGenerator &rng, size_t bitCount)
 Set this Integer to random integer. More...
 
void Randomize (RandomNumberGenerator &rng, const Integer &min, const Integer &max)
 Set this Integer to random integer. More...
 
bool Randomize (RandomNumberGenerator &rng, const Integer &min, const Integer &max, RandomNumberType rnType, const Integer &equiv=Zero(), const Integer &mod=One())
 Set this Integer to random integer of special form. More...
 
bool GenerateRandomNoThrow (RandomNumberGenerator &rng, const NameValuePairs &params=g_nullNameValuePairs)
 
void GenerateRandom (RandomNumberGenerator &rng, const NameValuePairs &params=g_nullNameValuePairs)
 
void SetBit (size_t n, bool value=1)
 Set the n-th bit to value. More...
 
void SetByte (size_t n, byte value)
 Set the n-th byte to value. More...
 
void Negate ()
 Reverse the Sign of the Integer.
 
void SetPositive ()
 Sets the Integer to positive.
 
void SetNegative ()
 Sets the Integer to negative.
 
void swap (Integer &a)
 Swaps this Integer with another Integer.
 

UNARY OPERATORS

bool operator! () const
 
Integer operator+ () const
 
Integer operator- () const
 
Integeroperator++ ()
 
Integeroperator-- ()
 
Integer operator++ (int)
 
Integer operator-- (int)
 

BINARY OPERATORS

int Compare (const Integer &a) const
 Perform signed comparison. More...
 
Integer Plus (const Integer &b) const
 
Integer Minus (const Integer &b) const
 
Integer Times (const Integer &b) const
 
Integer DividedBy (const Integer &b) const
 
Integer Modulo (const Integer &b) const
 
Integer DividedBy (word b) const
 
word Modulo (word b) const
 
Integer operator>> (size_t n) const
 
Integer operator<< (size_t n) const
 

OTHER ARITHMETIC FUNCTIONS

Integer AbsoluteValue () const
 
Integer Doubled () const
 
Integer Squared () const
 
Integer SquareRoot () const
 extract square root, if negative return 0, else return floor of square root
 
bool IsSquare () const
 return whether this integer is a perfect square
 
bool IsUnit () const
 is 1 or -1
 
Integer MultiplicativeInverse () const
 return inverse if 1 or -1, otherwise return 0
 
Integer InverseMod (const Integer &n) const
 calculate multiplicative inverse of *this mod n More...
 
word InverseMod (word n) const
 
static void Divide (Integer &r, Integer &q, const Integer &a, const Integer &d)
 calculate r and q such that (a == d*q + r) && (0 <= r < abs(d))
 
static void Divide (word &r, Integer &q, const Integer &a, word d)
 use a faster division algorithm when divisor is short
 
static void DivideByPowerOf2 (Integer &r, Integer &q, const Integer &a, unsigned int n)
 returns same result as Divide(r, q, a, Power2(n)), but faster
 
static Integer Gcd (const Integer &a, const Integer &n)
 greatest common divisor
 

INPUT/OUTPUT

std::istream & operator>> (std::istream &in, Integer &a)
 Extraction operator. More...
 
std::ostream & operator<< (std::ostream &out, const Integer &a)
 Insertion operator. More...
 

Detailed Description

Multiple precision integer with arithmetic operations.

The Integer class can represent positive and negative integers with absolute value less than (256**sizeof(word))(256**sizeof(int)).

Internally, the library uses a sign magnitude representation, and the class has two data members. The first is a IntegerSecBlock (a SecBlock<word>) and it i used to hold the representation. The second is a Sign, and its is used to track the sign of the Integer.

Definition at line 31 of file integer.h.

Member Enumeration Documentation

Used internally to represent the integer.

Sign is used internally to represent the integer. It is also used in a few API functions.

See also
Signedness
Enumerator
POSITIVE 

the value is positive or 0

NEGATIVE 

the value is negative

Definition at line 55 of file integer.h.

Used when importing and exporting integers.

Signedness is usually used in API functions.

See also
Sign
Enumerator
UNSIGNED 

an unsigned value

SIGNED 

a signed value

Definition at line 65 of file integer.h.

Properties of a random integer.

Enumerator
ANY 

a number with no special properties

PRIME 

a number which is probabilistically prime

Definition at line 73 of file integer.h.

Constructor & Destructor Documentation

Integer::Integer ( Sign  sign,
lword  value 
)

Convert from lword.

Parameters
signenumeration indicating Sign
valuethe long word

Definition at line 2833 of file integer.cpp.

Integer::Integer ( Sign  sign,
word  highWord,
word  lowWord 
)

Convert from two words.

Parameters
signenumeration indicating Sign
highWordthe high word
lowWordthe low word

Definition at line 2854 of file integer.cpp.

Integer::Integer ( const char *  str)
explicit

Convert from a C-string.

Parameters
strC-string value

str can be in base 2, 8, 10, or 16. Base is determined by a case insensitive suffix of 'h', 'o', or 'b'. No suffix means base 10.

Definition at line 3092 of file integer.cpp.

Integer::Integer ( const wchar_t *  str)
explicit

Convert from a wide C-string.

Parameters
strwide C-string value

str can be in base 2, 8, 10, or 16. Base is determined by a case insensitive suffix of 'h', 'o', or 'b'. No suffix means base 10.

Definition at line 3098 of file integer.cpp.

Integer::Integer ( const byte *  encodedInteger,
size_t  byteCount,
Signedness  sign = UNSIGNED 
)

Convert from a big-endian byte array.

Parameters
encodedIntegerbig-endian byte array
byteCountlength of the byte array
signenumeration indicating Signedness

Definition at line 2889 of file integer.cpp.

References Decode().

Integer::Integer ( BufferedTransformation bt,
size_t  byteCount,
Signedness  sign = UNSIGNED 
)

Convert from a big-endian array.

Parameters
btBufferedTransformation object with big-endian byte array
byteCountlength of the byte array
signenumeration indicating Signedness

Definition at line 2884 of file integer.cpp.

References Decode().

Integer::Integer ( BufferedTransformation bt)
explicit

Convert from a BER encoded byte array.

Parameters
btBufferedTransformation object with BER encoded byte array

Definition at line 2894 of file integer.cpp.

References BERDecode().

Integer::Integer ( RandomNumberGenerator rng,
size_t  bitCount 
)

Create a random integer.

Parameters
rngRandomNumberGenerator used to generate material
bitCountthe number of bits in the resulting integer

The random integer created is uniformly distributed over [0, 2bitCount].

Definition at line 2899 of file integer.cpp.

References Randomize().

Integer::Integer ( RandomNumberGenerator rng,
const Integer min,
const Integer max,
RandomNumberType  rnType = ANY,
const Integer equiv = Zero(),
const Integer mod = One() 
)

Create a random integer of special form.

Parameters
rngRandomNumberGenerator used to generate material
minthe minimum value
maxthe maximum value
rnTypeRandomNumberType to specify the type
equivthe equivalence class based on the parameter mod
modthe modulus used to reduce the equivalence class
Exceptions
RandomNumberNotFoundif the set is empty.

Ideally, the random integer created should be uniformly distributed over {x | min <= x <= max and x is of rnType and x % mod == equiv}. However the actual distribution may not be uniform because sequential search is used to find an appropriate number from a random starting point.

May return (with very small probability) a pseudoprime when a prime is requested and max > lastSmallPrime*lastSmallPrime. lastSmallPrime is declared in nbtheory.h.

Definition at line 2904 of file integer.cpp.

References Randomize().

Member Function Documentation

const Integer & Integer::Zero ( )
static
const Integer & Integer::One ( )
static
const Integer & Integer::Two ( )
static

Integer representing 2.

Returns
an Integer representing 2

Two() avoids calling constructors for frequently used integers

Definition at line 2936 of file integer.cpp.

References SecBlock< T, A >::size(), and WordCount().

Referenced by MaurerProvablePrime().

Integer Integer::Power2 ( size_t  e)
static
size_t Integer::MinEncodedSize ( Signedness  sign = UNSIGNED) const

The minimum number of bytes to encode this integer.

Parameters
signenumeration indicating Signedness
Note
The MinEncodedSize() of 0 is 1.

Definition at line 3167 of file integer.cpp.

References ByteCount(), GetByte(), Power2(), STDMAX(), and UNSIGNED.

Referenced by DEREncode(), and TestDataNameValuePairs::GetVoidValue().

void Integer::Encode ( byte *  output,
size_t  outputLen,
Signedness  sign = UNSIGNED 
) const

Encode in big-endian format.

Parameters
outputbig-endian byte array
outputLenlength of the byte array
signenumeration indicating Signedness

Unsigned means encode absolute value, signed means encode two's complement if negative.

outputLen can be used to ensure an Integer is encoded to an exact size (rather than a minimum size). An exact size is useful, for example, when encoding to a field element size.

Definition at line 3179 of file integer.cpp.

Referenced by TF_DecryptorBase::Decrypt(), DEREncode(), DEREncodeAsOctetString(), DSAConvertSignatureFormat(), Encode(), XTR_DH::GeneratePrivateKey(), DL_SimpleKeyAgreementDomainBase< GROUP_PARAMETERS::Element >::GeneratePrivateKey(), DL_GroupParameters_IntegerBased::GenerateRandom(), MQV_Domain< GROUP_PARAMETERS, COFACTOR_OPTION >::GenerateStaticPrivateKey(), TestDataNameValuePairs::GetVoidValue(), TF_VerifierBase::InputSignature(), OpenPGPEncode(), DL_VerifierBase< SCHEME_OPTIONS::Element >::RecoverAndRestart(), and DL_GroupParameters_DSA::ValidateGroup().

void Integer::Encode ( BufferedTransformation bt,
size_t  outputLen,
Signedness  sign = UNSIGNED 
) const

Encode in big-endian format.

Parameters
btBufferedTransformation object
outputLenlength of the encoding
signenumeration indicating Signedness

Unsigned means encode absolute value, signed means encode two's complement if negative.

outputLen can be used to ensure an Integer is encoded to an exact size (rather than a minimum size). An exact size is useful, for example, when encoding to a field element size.

Definition at line 3186 of file integer.cpp.

References ByteCount(), Encode(), GetByte(), Power2(), BufferedTransformation::Put(), STDMAX(), and UNSIGNED.

void Integer::DEREncode ( BufferedTransformation bt) const
virtual
void Integer::DEREncodeAsOctetString ( BufferedTransformation bt,
size_t  length 
) const

encode absolute value as big-endian octet string

Parameters
btBufferedTransformation object
lengththe number of mytes to decode

Definition at line 3223 of file integer.cpp.

References Encode().

size_t Integer::OpenPGPEncode ( byte *  output,
size_t  bufferSize 
) const

Encode absolute value in OpenPGP format.

Parameters
outputbig-endian byte array
bufferSizelength of the byte array
Returns
length of the output

OpenPGPEncode places result into a BufferedTransformation object and returns the number of bytes used for the encoding

Definition at line 3239 of file integer.cpp.

Referenced by DSAConvertSignatureFormat().

size_t Integer::OpenPGPEncode ( BufferedTransformation bt) const

Encode absolute value in OpenPGP format.

Parameters
btBufferedTransformation object
Returns
length of the output

OpenPGPEncode places result into a BufferedTransformation object and returns the number of bytes used for the encoding

Definition at line 3245 of file integer.cpp.

References BitCount(), BitsToBytes(), Encode(), and BufferedTransformation::PutWord16().

void Integer::Decode ( const byte *  input,
size_t  inputLen,
Signedness  sign = UNSIGNED 
)

Decode from big-endian byte array.

Parameters
inputbig-endian byte array
inputLenlength of the byte array
signenumeration indicating Signedness

Definition at line 3127 of file integer.cpp.

Referenced by BERDecode(), BERDecodeAsOctetString(), DL_PrivateKey_EC< EC >::BERDecodePrivateKey(), DSAConvertSignatureFormat(), DL_VerifierBase< SCHEME_OPTIONS::Element >::InputSignature(), Integer(), OpenPGPDecode(), and Randomize().

void Integer::Decode ( BufferedTransformation bt,
size_t  inputLen,
Signedness  sign = UNSIGNED 
)

Decode nonnegative value from big-endian byte array.

Parameters
btBufferedTransformation object
inputLenlength of the byte array
signenumeration indicating Signedness
Note
bt.MaxRetrievable() >= inputLen.

Definition at line 3133 of file integer.cpp.

References BytesToWords(), SecBlock< T, A >::CleanNew(), BufferedTransformation::Get(), BufferedTransformation::MaxRetrievable(), NEGATIVE, BufferedTransformation::Peek(), POSITIVE, SIGNED, SecBlock< T, A >::size(), SecBlock< T, A >::SizeInBytes(), and BufferedTransformation::Skip().

void Integer::BERDecode ( const byte *  input,
size_t  inputLen 
)
void Integer::BERDecode ( BufferedTransformation bt)
virtual

Decode from BER format.

Parameters
btBufferedTransformation object

Implements ASN1Object.

Definition at line 3214 of file integer.cpp.

References Decode(), BufferedTransformation::MaxRetrievable(), and SIGNED.

void Integer::BERDecodeAsOctetString ( BufferedTransformation bt,
size_t  length 
)

Decode nonnegative value from big-endian octet string.

Parameters
btBufferedTransformation object
lengthlength of the byte array

Definition at line 3230 of file integer.cpp.

References Decode().

void Integer::OpenPGPDecode ( const byte *  input,
size_t  inputLen 
)

Decode from OpenPGP format.

Parameters
inputbig-endian byte array
inputLenlength of the byte array

Definition at line 3254 of file integer.cpp.

Referenced by DSAConvertSignatureFormat().

void Integer::OpenPGPDecode ( BufferedTransformation bt)

Decode from OpenPGP format.

Parameters
btBufferedTransformation object

Definition at line 3260 of file integer.cpp.

References BitsToBytes(), Decode(), BufferedTransformation::GetWord16(), and BufferedTransformation::MaxRetrievable().

Integer& Integer::operator*= ( const Integer t)
inline
See also
a_times_b_mod_c() and a_exp_b_mod_c()

Definition at line 317 of file integer.h.

Integer& Integer::operator%= ( const Integer t)
inline
See also
a_times_b_mod_c() and a_exp_b_mod_c()

Definition at line 322 of file integer.h.

Integer& Integer::operator%= ( word  t)
inline
See also
a_times_b_mod_c() and a_exp_b_mod_c()

Definition at line 327 of file integer.h.

References g_nullNameValuePairs.

void Integer::Randomize ( RandomNumberGenerator rng,
size_t  bitCount 
)

Set this Integer to random integer.

Parameters
rngRandomNumberGenerator used to generate material
bitCountthe number of bits in the resulting integer

The random integer created is uniformly distributed over [0, 2bitCount].

Definition at line 3268 of file integer.cpp.

References Crop(), Decode(), RandomNumberGenerator::GenerateBlock(), and UNSIGNED.

Referenced by InvertibleESIGNFunction::CalculateRandomizedInverse(), InvertibleRSAFunction::DEREncodePrivateKey(), KDF2_RNG::GenerateBlock(), InvertibleRWFunction::GenerateRandom(), Integer(), MaurerProvablePrime(), MihailescuProvablePrime(), Randomize(), and TrialDivision().

void Integer::Randomize ( RandomNumberGenerator rng,
const Integer min,
const Integer max 
)

Set this Integer to random integer.

Parameters
rngRandomNumberGenerator used to generate material
minthe minimum value
maxthe maximum value

The random integer created is uniformly distributed over [min, max].

Definition at line 3278 of file integer.cpp.

References BitCount(), and Randomize().

bool Integer::Randomize ( RandomNumberGenerator rng,
const Integer min,
const Integer max,
RandomNumberType  rnType,
const Integer equiv = Zero(),
const Integer mod = One() 
)

Set this Integer to random integer of special form.

Parameters
rngRandomNumberGenerator used to generate material
minthe minimum value
maxthe maximum value
rnTypeRandomNumberType to specify the type
equivthe equivalence class based on the parameter mod
modthe modulus used to reduce the equivalence class
Exceptions
RandomNumberNotFoundif the set is empty.

Ideally, the random integer created should be uniformly distributed over {x | min <= x <= max and x is of rnType and x % mod == equiv}. However the actual distribution may not be uniform because sequential search is used to find an appropriate number from a random starting point.

May return (with very small probability) a pseudoprime when a prime is requested and max > lastSmallPrime*lastSmallPrime. lastSmallPrime is declared in nbtheory.h.

Definition at line 3295 of file integer.cpp.

References MakeParameters().

void Integer::SetBit ( size_t  n,
bool  value = 1 
)

Set the n-th bit to value.

0-based numbering.

Definition at line 2966 of file integer.cpp.

References BitsToWords().

Referenced by Power2().

void Integer::SetByte ( size_t  n,
byte  value 
)

Set the n-th byte to value.

0-based numbering.

Definition at line 2988 of file integer.cpp.

References BytesToWords().

int Integer::Compare ( const Integer a) const

Perform signed comparison.

Parameters
athe Integer to comapre
Return values
-1if *this < a
0if *this = a
1if *this > a

Definition at line 3961 of file integer.cpp.

Referenced by InverseMod().

Integer Integer::Times ( const Integer b) const
See also
a_times_b_mod_c() and a_exp_b_mod_c()

Definition at line 3747 of file integer.cpp.

References SecBlock< T, A >::CleanNew(), Divide(), POSITIVE, WordCount(), and Zero().

Integer Integer::Modulo ( const Integer b) const
See also
a_times_b_mod_c() and a_exp_b_mod_c()

Definition at line 3858 of file integer.cpp.

References Divide().

Referenced by InverseMod().

word Integer::Modulo ( word  b) const
See also
a_times_b_mod_c() and a_exp_b_mod_c()

Definition at line 3909 of file integer.cpp.

References WordCount().

Integer Integer::Squared ( ) const
inline
See also
a_times_b_mod_c() and a_exp_b_mod_c()

Definition at line 452 of file integer.h.

References operator<(), operator<=(), operator>(), and operator>=().

Referenced by RabinFunction::ApplyFunction(), RWFunction::ApplyFunction(), IsSquare(), MaurerProvablePrime(), TrialDivision(), and XTR_DH::Validate().

Integer Integer::InverseMod ( const Integer n) const

calculate multiplicative inverse of *this mod n

See also
a_times_b_mod_c() and a_exp_b_mod_c()

Definition at line 4029 of file integer.cpp.

References InverseMod(), Modulo(), One(), SecBlock< T, A >::size(), and Zero().

Referenced by InvertibleRabinFunction::GenerateRandom(), InvertibleRWFunction::GenerateRandom(), InvertibleRSAFunction::Initialize(), and InverseMod().

word Integer::InverseMod ( word  n) const
See also
a_times_b_mod_c() and a_exp_b_mod_c()

Definition at line 4054 of file integer.cpp.

References Compare(), and SecBlock< T, A >::size().

virtual void ASN1Object::BEREncode ( BufferedTransformation bt) const
inlinevirtualinherited

Encode this object into a BufferedTransformation.

Parameters
btBufferedTransformation object

Uses Basic Encoding Rules (BER).

This may be useful if DEREncode() would be too inefficient.

Definition at line 2647 of file cryptlib.h.

Friends And Related Function Documentation

std::istream& operator>> ( std::istream &  in,
Integer a 
)
friend

Extraction operator.

Parameters
ina reference to a std::istream
aa reference to an Integer
Returns
a reference to a std::istream reference

Definition at line 3414 of file integer.cpp.

std::ostream& operator<< ( std::ostream &  out,
const Integer a 
)
friend

Insertion operator.

Parameters
outa reference to a std::ostream
aa constant reference to an Integer
Returns
a reference to a std::ostream reference

The output integer responds to std::hex, std::oct, std::hex, std::upper and std::lower. The output includes the suffix h (for hex), . (dot, for dec) and o (for octal). There is currently no way to supress the suffix.

If you want to print an Integer without the suffix or using an arbitrary base, then use IntToString<Integer>().

See also
IntToString<Integer>

Definition at line 3439 of file integer.cpp.


The documentation for this class was generated from the following files: