Public Member Functions | Static Public Member Functions | Static Public Attributes | Private Types | Private Member Functions | Private Attributes | Static Private Attributes | List of all members
FIX::double_conversion::Bignum Class Reference

Public Member Functions

 Bignum ()
 
void AssignUInt16 (uint16_t value)
 
void AssignUInt64 (uint64_t value)
 
void AssignBignum (const Bignum &other)
 
void AssignDecimalString (Vector< const char > value)
 
void AssignHexString (Vector< const char > value)
 
void AssignPowerUInt16 (uint16_t base, int exponent)
 
void AddUInt64 (uint64_t operand)
 
void AddBignum (const Bignum &other)
 
void SubtractBignum (const Bignum &other)
 
void Square ()
 
void ShiftLeft (int shift_amount)
 
void MultiplyByUInt32 (uint32_t factor)
 
void MultiplyByUInt64 (uint64_t factor)
 
void MultiplyByPowerOfTen (int exponent)
 
void Times10 ()
 
uint16_t DivideModuloIntBignum (const Bignum &other)
 
bool ToHexString (char *buffer, int buffer_size) const
 

Static Public Member Functions

static int Compare (const Bignum &a, const Bignum &b)
 
static bool Equal (const Bignum &a, const Bignum &b)
 
static bool LessEqual (const Bignum &a, const Bignum &b)
 
static bool Less (const Bignum &a, const Bignum &b)
 
static int PlusCompare (const Bignum &a, const Bignum &b, const Bignum &c)
 
static bool PlusEqual (const Bignum &a, const Bignum &b, const Bignum &c)
 
static bool PlusLessEqual (const Bignum &a, const Bignum &b, const Bignum &c)
 
static bool PlusLess (const Bignum &a, const Bignum &b, const Bignum &c)
 

Static Public Attributes

static const int kMaxSignificantBits = 3584
 

Private Types

typedef uint32_t Chunk
 
typedef uint64_t DoubleChunk
 

Private Member Functions

void EnsureCapacity (int size)
 
void Align (const Bignum &other)
 
void Clamp ()
 
bool IsClamped () const
 
void Zero ()
 
void BigitsShiftLeft (int shift_amount)
 
int BigitLength () const
 
Chunk BigitAt (int index) const
 
void SubtractTimes (const Bignum &other, int factor)
 
 DISALLOW_COPY_AND_ASSIGN (Bignum)
 

Private Attributes

Chunk bigits_buffer_ [kBigitCapacity]
 
Vector< Chunkbigits_
 
int used_digits_
 
int exponent_
 

Static Private Attributes

static const int kChunkSize = sizeof(Chunk) * 8
 
static const int kDoubleChunkSize = sizeof(DoubleChunk) * 8
 
static const int kBigitSize = 28
 
static const Chunk kBigitMask = (1 << kBigitSize) - 1
 
static const int kBigitCapacity = kMaxSignificantBits / kBigitSize
 

Detailed Description

Definition at line 36 of file FieldConvertors.cpp.

Member Typedef Documentation

◆ Chunk

Definition at line 101 of file FieldConvertors.cpp.

◆ DoubleChunk

Definition at line 102 of file FieldConvertors.cpp.

Constructor & Destructor Documentation

◆ Bignum()

FIX::double_conversion::Bignum::Bignum ( )

Definition at line 34 of file FieldConvertors.cpp.

Member Function Documentation

◆ AddBignum()

void FIX::double_conversion::Bignum::AddBignum ( const Bignum other)

Definition at line 170 of file FieldConvertors.cpp.

◆ AddUInt64()

void FIX::double_conversion::Bignum::AddUInt64 ( uint64_t  operand)

Definition at line 162 of file FieldConvertors.cpp.

◆ Align()

void FIX::double_conversion::Bignum::Align ( const Bignum other)
private

Definition at line 699 of file FieldConvertors.cpp.

◆ AssignBignum()

void FIX::double_conversion::Bignum::AssignBignum ( const Bignum other)

Definition at line 77 of file FieldConvertors.cpp.

82  {
83  double_conversion::StringBuilder builder( buffer, size );
84  if( !g_dtoa_converter.ToFixed( value, DoubleConvertor::SIGNIFICANT_DIGITS, &builder ) )
85  {
86  builder.Reset();
87  return 0;
static const int SIGNIFICANT_DIGITS
static double_conversion::DoubleToStringConverter g_dtoa_converter(double_conversion::DoubleToStringConverter::NO_FLAGS, "INF", "NAN", 'e', -DoubleConvertor::SIGNIFICANT_DIGITS, DoubleConvertor::SIGNIFICANT_DIGITS, DoubleConvertor::SIGNIFICANT_DIGITS - 1, 0)

◆ AssignDecimalString()

void FIX::double_conversion::Bignum::AssignDecimalString ( Vector< const char >  value)

Definition at line 103 of file FieldConvertors.cpp.

◆ AssignHexString()

void FIX::double_conversion::Bignum::AssignHexString ( Vector< const char >  value)

Definition at line 132 of file FieldConvertors.cpp.

◆ AssignPowerUInt16()

void FIX::double_conversion::Bignum::AssignPowerUInt16 ( uint16_t  base,
int  exponent 
)

Definition at line 413 of file FieldConvertors.cpp.

◆ AssignUInt16()

void FIX::double_conversion::Bignum::AssignUInt16 ( uint16_t  value)

Definition at line 49 of file FieldConvertors.cpp.

◆ AssignUInt64()

void FIX::double_conversion::Bignum::AssignUInt64 ( uint64_t  value)

Definition at line 60 of file FieldConvertors.cpp.

64  {
65  return g_atod_converter.StringToDouble( buffer, size, processed_chars );
66  }
67 
68  int DoubleConvertor::fast_dtoa( char * buffer, int size, double value )
69  {
70  double_conversion::StringBuilder builder( buffer, size );
71  if( !g_dtoa_converter.ToPrecision( value, DoubleConvertor::SIGNIFICANT_DIGITS, &builder ) )
72  {
73  builder.Reset();
74  return 0;
static double_conversion::StringToDoubleConverter g_atod_converter(double_conversion::StringToDoubleConverter::NO_FLAGS, std::numeric_limits< double >::quiet_NaN(), std::numeric_limits< double >::quiet_NaN(), "INF", "NAN")
static const int SIGNIFICANT_DIGITS
static double_conversion::DoubleToStringConverter g_dtoa_converter(double_conversion::DoubleToStringConverter::NO_FLAGS, "INF", "NAN", 'e', -DoubleConvertor::SIGNIFICANT_DIGITS, DoubleConvertor::SIGNIFICANT_DIGITS, DoubleConvertor::SIGNIFICANT_DIGITS - 1, 0)
static int fast_dtoa(char *buffer, int size, double value)

◆ BigitAt()

Bignum::Chunk FIX::double_conversion::Bignum::BigitAt ( int  index) const
private

Definition at line 612 of file FieldConvertors.cpp.

◆ BigitLength()

int FIX::double_conversion::Bignum::BigitLength ( ) const
inlineprivate

Definition at line 128 of file FieldConvertors.cpp.

◆ BigitsShiftLeft()

void FIX::double_conversion::Bignum::BigitsShiftLeft ( int  shift_amount)
private

Definition at line 723 of file FieldConvertors.cpp.

◆ Clamp()

void FIX::double_conversion::Bignum::Clamp ( )
private

Definition at line 674 of file FieldConvertors.cpp.

◆ Compare()

int FIX::double_conversion::Bignum::Compare ( const Bignum a,
const Bignum b 
)
static

Definition at line 619 of file FieldConvertors.cpp.

◆ DISALLOW_COPY_AND_ASSIGN()

FIX::double_conversion::Bignum::DISALLOW_COPY_AND_ASSIGN ( Bignum  )
private

◆ DivideModuloIntBignum()

uint16_t FIX::double_conversion::Bignum::DivideModuloIntBignum ( const Bignum other)

Definition at line 487 of file FieldConvertors.cpp.

◆ EnsureCapacity()

void FIX::double_conversion::Bignum::EnsureCapacity ( int  size)
inlineprivate

Definition at line 114 of file FieldConvertors.cpp.

◆ Equal()

static bool FIX::double_conversion::Bignum::Equal ( const Bignum a,
const Bignum b 
)
inlinestatic

Definition at line 77 of file FieldConvertors.cpp.

◆ IsClamped()

bool FIX::double_conversion::Bignum::IsClamped ( ) const
private

Definition at line 685 of file FieldConvertors.cpp.

◆ Less()

static bool FIX::double_conversion::Bignum::Less ( const Bignum a,
const Bignum b 
)
inlinestatic

Definition at line 83 of file FieldConvertors.cpp.

85  {

◆ LessEqual()

static bool FIX::double_conversion::Bignum::LessEqual ( const Bignum a,
const Bignum b 
)
inlinestatic

Definition at line 80 of file FieldConvertors.cpp.

82  {

◆ MultiplyByPowerOfTen()

void FIX::double_conversion::Bignum::MultiplyByPowerOfTen ( int  exponent)

Definition at line 301 of file FieldConvertors.cpp.

◆ MultiplyByUInt32()

void FIX::double_conversion::Bignum::MultiplyByUInt32 ( uint32_t  factor)

Definition at line 248 of file FieldConvertors.cpp.

◆ MultiplyByUInt64()

void FIX::double_conversion::Bignum::MultiplyByUInt64 ( uint64_t  factor)

Definition at line 274 of file FieldConvertors.cpp.

◆ PlusCompare()

int FIX::double_conversion::Bignum::PlusCompare ( const Bignum a,
const Bignum b,
const Bignum c 
)
static

Definition at line 637 of file FieldConvertors.cpp.

◆ PlusEqual()

static bool FIX::double_conversion::Bignum::PlusEqual ( const Bignum a,
const Bignum b,
const Bignum c 
)
inlinestatic

Definition at line 89 of file FieldConvertors.cpp.

◆ PlusLess()

static bool FIX::double_conversion::Bignum::PlusLess ( const Bignum a,
const Bignum b,
const Bignum c 
)
inlinestatic

Definition at line 97 of file FieldConvertors.cpp.

◆ PlusLessEqual()

static bool FIX::double_conversion::Bignum::PlusLessEqual ( const Bignum a,
const Bignum b,
const Bignum c 
)
inlinestatic

Definition at line 93 of file FieldConvertors.cpp.

◆ ShiftLeft()

void FIX::double_conversion::Bignum::ShiftLeft ( int  shift_amount)

Definition at line 239 of file FieldConvertors.cpp.

◆ Square()

void FIX::double_conversion::Bignum::Square ( )

Definition at line 341 of file FieldConvertors.cpp.

◆ SubtractBignum()

void FIX::double_conversion::Bignum::SubtractBignum ( const Bignum other)

Definition at line 212 of file FieldConvertors.cpp.

◆ SubtractTimes()

void FIX::double_conversion::Bignum::SubtractTimes ( const Bignum other,
int  factor 
)
private

Definition at line 739 of file FieldConvertors.cpp.

◆ Times10()

void FIX::double_conversion::Bignum::Times10 ( )
inline

Definition at line 63 of file FieldConvertors.cpp.

References FIX::g_atod_converter().

64 {

◆ ToHexString()

bool FIX::double_conversion::Bignum::ToHexString ( char *  buffer,
int  buffer_size 
) const

Definition at line 572 of file FieldConvertors.cpp.

◆ Zero()

void FIX::double_conversion::Bignum::Zero ( )
private

Definition at line 690 of file FieldConvertors.cpp.

Member Data Documentation

◆ bigits_

Vector<Chunk> FIX::double_conversion::Bignum::bigits_
private

Definition at line 135 of file FieldConvertors.cpp.

◆ bigits_buffer_

Chunk FIX::double_conversion::Bignum::bigits_buffer_[kBigitCapacity]
private

Definition at line 132 of file FieldConvertors.cpp.

◆ exponent_

int FIX::double_conversion::Bignum::exponent_
private

Definition at line 138 of file FieldConvertors.cpp.

◆ kBigitCapacity

const int FIX::double_conversion::Bignum::kBigitCapacity = kMaxSignificantBits / kBigitSize
staticprivate

Definition at line 112 of file FieldConvertors.cpp.

◆ kBigitMask

const Chunk FIX::double_conversion::Bignum::kBigitMask = (1 << kBigitSize) - 1
staticprivate

Definition at line 109 of file FieldConvertors.cpp.

◆ kBigitSize

const int FIX::double_conversion::Bignum::kBigitSize = 28
staticprivate

Definition at line 108 of file FieldConvertors.cpp.

◆ kChunkSize

const int FIX::double_conversion::Bignum::kChunkSize = sizeof(Chunk) * 8
staticprivate

Definition at line 104 of file FieldConvertors.cpp.

◆ kDoubleChunkSize

const int FIX::double_conversion::Bignum::kDoubleChunkSize = sizeof(DoubleChunk) * 8
staticprivate

Definition at line 105 of file FieldConvertors.cpp.

◆ kMaxSignificantBits

const int FIX::double_conversion::Bignum::kMaxSignificantBits = 3584
static

Definition at line 41 of file FieldConvertors.cpp.

◆ used_digits_

int FIX::double_conversion::Bignum::used_digits_
private

Definition at line 136 of file FieldConvertors.cpp.


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

Generated on Wed Aug 28 2019 14:13:46 for QuickFIX by doxygen 1.8.13 written by Dimitri van Heesch, © 1997-2001