FIX::double_conversion::Single Class Reference

Public Member Functions

 Single ()
 Single (float f)
 Single (uint32_t d32)
DiyFp AsDiyFp () const
uint32_t AsUint32 () const
int Exponent () const
uint32_t Significand () const
bool IsDenormal () const
bool IsSpecial () const
bool IsNan () const
bool IsInfinite () const
int Sign () const
void NormalizedBoundaries (DiyFp *out_m_minus, DiyFp *out_m_plus) const
DiyFp UpperBoundary () const
bool LowerBoundaryIsCloser () const
float value () const

Static Public Member Functions

static float Infinity ()
static float NaN ()

Static Public Attributes

static const uint32_t kSignMask = 0x80000000
static const uint32_t kExponentMask = 0x7F800000
static const uint32_t kSignificandMask = 0x007FFFFF
static const uint32_t kHiddenBit = 0x00800000
static const int kPhysicalSignificandSize = 23
static const int kSignificandSize = 24

Private Member Functions

 DISALLOW_COPY_AND_ASSIGN (Single)

Private Attributes

const uint32_t d32_

Static Private Attributes

static const int kExponentBias = 0x7F + kPhysicalSignificandSize
static const int kDenormalExponent = -kExponentBias + 1
static const int kMaxExponent = 0xFF - kExponentBias
static const uint32_t kInfinity = 0x7F800000
static const uint32_t kNaN = 0x7FC00000

Detailed Description

Definition at line 263 of file FieldConvertors.cpp.

Constructor & Destructor Documentation

◆ Single() [1/3]

FIX::double_conversion::Single::Single ( )
inline

Definition at line 272 of file FieldConvertors.cpp.

302{
303
304// we include "double-conversion" project in FIX namespace
305// to avoid linking errors if quickfix is linked statically
306// and "double-conversion" is already used by target project
307
308#include "double-conversion/diy-fp.cc"
309#include "double-conversion/fixed-dtoa.cc"
310#include "double-conversion/bignum.cc"
311#include "double-conversion/bignum-dtoa.cc"
312#include "double-conversion/cached-powers.cc"
313#include "double-conversion/fast-dtoa.cc"
314#include "double-conversion/strtod.cc"
315#include "double-conversion/double-conversion.cc"
316
317 static double_conversion::DoubleToStringConverter g_dtoa_converter(
318 double_conversion::DoubleToStringConverter::NO_FLAGS,
319 "INF",
320 "NAN",
321 'e',
325 0);
326
327 static double_conversion::StringToDoubleConverter g_atod_converter(
328 double_conversion::StringToDoubleConverter::NO_FLAGS,
329 std::numeric_limits<double>::quiet_NaN(),
330 std::numeric_limits<double>::quiet_NaN(),
331 "INF",
332 "NAN");
333
334 double DoubleConvertor::fast_strtod( const char * buffer, int size, int * processed_chars )
335 {
336 return g_atod_converter.StringToDouble( buffer, size, processed_chars );
337 }
338
339 int DoubleConvertor::fast_dtoa( char * buffer, int size, double value )
340 {
341 double_conversion::StringBuilder builder( buffer, size );
342 if( !g_dtoa_converter.ToPrecision( value, DoubleConvertor::SIGNIFICANT_DIGITS, &builder ) )
343 {
344 builder.Reset();
345 return 0;
346 }
347
348 builder.TrimTrailingZeros();
349 return builder.position();
350 }
351
352 int DoubleConvertor::fast_fixed_dtoa( char * buffer, int size, double value )
353 {
354 double_conversion::StringBuilder builder( buffer, size );
356 {
357 builder.Reset();
358 return 0;
359 }
360
361 return builder.position();
362 }
363
364}
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 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_fixed_dtoa(char *buffer, int size, double value)
static double fast_strtod(const char *buffer, int size, int *processed_chars)
static int fast_dtoa(char *buffer, int size, double value)
static const int SIGNIFICANT_DIGITS

◆ Single() [2/3]

FIX::double_conversion::Single::Single ( float f)
inlineexplicit

Definition at line 273 of file FieldConvertors.cpp.

303{
304
305// we include "double-conversion" project in FIX namespace
306// to avoid linking errors if quickfix is linked statically
307// and "double-conversion" is already used by target project
308
309#include "double-conversion/diy-fp.cc"
310#include "double-conversion/fixed-dtoa.cc"
311#include "double-conversion/bignum.cc"
312#include "double-conversion/bignum-dtoa.cc"
313#include "double-conversion/cached-powers.cc"
314#include "double-conversion/fast-dtoa.cc"
315#include "double-conversion/strtod.cc"
316#include "double-conversion/double-conversion.cc"
317
318 static double_conversion::DoubleToStringConverter g_dtoa_converter(
319 double_conversion::DoubleToStringConverter::NO_FLAGS,
320 "INF",
321 "NAN",
322 'e',
326 0);
327
328 static double_conversion::StringToDoubleConverter g_atod_converter(
329 double_conversion::StringToDoubleConverter::NO_FLAGS,
330 std::numeric_limits<double>::quiet_NaN(),
331 std::numeric_limits<double>::quiet_NaN(),
332 "INF",
333 "NAN");
334
335 double DoubleConvertor::fast_strtod( const char * buffer, int size, int * processed_chars )
336 {
337 return g_atod_converter.StringToDouble( buffer, size, processed_chars );
338 }
339
340 int DoubleConvertor::fast_dtoa( char * buffer, int size, double value )
341 {
342 double_conversion::StringBuilder builder( buffer, size );
343 if( !g_dtoa_converter.ToPrecision( value, DoubleConvertor::SIGNIFICANT_DIGITS, &builder ) )
344 {
345 builder.Reset();
346 return 0;
347 }
348
349 builder.TrimTrailingZeros();
350 return builder.position();
351 }
352
353 int DoubleConvertor::fast_fixed_dtoa( char * buffer, int size, double value )
354 {
355 double_conversion::StringBuilder builder( buffer, size );
357 {
358 builder.Reset();
359 return 0;
360 }
361
362 return builder.position();
363 }
364
365}

◆ Single() [3/3]

FIX::double_conversion::Single::Single ( uint32_t d32)
inlineexplicit

Definition at line 274 of file FieldConvertors.cpp.

304{
305
306// we include "double-conversion" project in FIX namespace
307// to avoid linking errors if quickfix is linked statically
308// and "double-conversion" is already used by target project
309
310#include "double-conversion/diy-fp.cc"
311#include "double-conversion/fixed-dtoa.cc"
312#include "double-conversion/bignum.cc"
313#include "double-conversion/bignum-dtoa.cc"
314#include "double-conversion/cached-powers.cc"
315#include "double-conversion/fast-dtoa.cc"
316#include "double-conversion/strtod.cc"
317#include "double-conversion/double-conversion.cc"
318
319 static double_conversion::DoubleToStringConverter g_dtoa_converter(
320 double_conversion::DoubleToStringConverter::NO_FLAGS,
321 "INF",
322 "NAN",
323 'e',
327 0);
328
329 static double_conversion::StringToDoubleConverter g_atod_converter(
330 double_conversion::StringToDoubleConverter::NO_FLAGS,
331 std::numeric_limits<double>::quiet_NaN(),
332 std::numeric_limits<double>::quiet_NaN(),
333 "INF",
334 "NAN");
335
336 double DoubleConvertor::fast_strtod( const char * buffer, int size, int * processed_chars )
337 {
338 return g_atod_converter.StringToDouble( buffer, size, processed_chars );
339 }
340
341 int DoubleConvertor::fast_dtoa( char * buffer, int size, double value )
342 {
343 double_conversion::StringBuilder builder( buffer, size );
344 if( !g_dtoa_converter.ToPrecision( value, DoubleConvertor::SIGNIFICANT_DIGITS, &builder ) )
345 {
346 builder.Reset();
347 return 0;
348 }
349
350 builder.TrimTrailingZeros();
351 return builder.position();
352 }
353
354 int DoubleConvertor::fast_fixed_dtoa( char * buffer, int size, double value )
355 {
356 double_conversion::StringBuilder builder( buffer, size );
358 {
359 builder.Reset();
360 return 0;
361 }
362
363 return builder.position();
364 }
365
366}

Member Function Documentation

◆ AsDiyFp()

DiyFp FIX::double_conversion::Single::AsDiyFp ( ) const
inline

Definition at line 278 of file FieldConvertors.cpp.

308{
309
310// we include "double-conversion" project in FIX namespace
311// to avoid linking errors if quickfix is linked statically
312// and "double-conversion" is already used by target project
313
314#include "double-conversion/diy-fp.cc"
315#include "double-conversion/fixed-dtoa.cc"
316#include "double-conversion/bignum.cc"
317#include "double-conversion/bignum-dtoa.cc"
318#include "double-conversion/cached-powers.cc"
319#include "double-conversion/fast-dtoa.cc"
320#include "double-conversion/strtod.cc"
321#include "double-conversion/double-conversion.cc"
322
323 static double_conversion::DoubleToStringConverter g_dtoa_converter(
324 double_conversion::DoubleToStringConverter::NO_FLAGS,
325 "INF",
326 "NAN",
327 'e',
331 0);
332
333 static double_conversion::StringToDoubleConverter g_atod_converter(
334 double_conversion::StringToDoubleConverter::NO_FLAGS,
335 std::numeric_limits<double>::quiet_NaN(),
336 std::numeric_limits<double>::quiet_NaN(),
337 "INF",
338 "NAN");
339
340 double DoubleConvertor::fast_strtod( const char * buffer, int size, int * processed_chars )
341 {
342 return g_atod_converter.StringToDouble( buffer, size, processed_chars );
343 }
344
345 int DoubleConvertor::fast_dtoa( char * buffer, int size, double value )
346 {
347 double_conversion::StringBuilder builder( buffer, size );
348 if( !g_dtoa_converter.ToPrecision( value, DoubleConvertor::SIGNIFICANT_DIGITS, &builder ) )
349 {
350 builder.Reset();
351 return 0;
352 }
353
354 builder.TrimTrailingZeros();
355 return builder.position();
356 }
357
358 int DoubleConvertor::fast_fixed_dtoa( char * buffer, int size, double value )
359 {
360 double_conversion::StringBuilder builder( buffer, size );
362 {
363 builder.Reset();
364 return 0;
365 }
366
367 return builder.position();
368 }
369
370}

◆ AsUint32()

uint32_t FIX::double_conversion::Single::AsUint32 ( ) const
inline

Definition at line 285 of file FieldConvertors.cpp.

315{
316
317// we include "double-conversion" project in FIX namespace
318// to avoid linking errors if quickfix is linked statically
319// and "double-conversion" is already used by target project
320
321#include "double-conversion/diy-fp.cc"
322#include "double-conversion/fixed-dtoa.cc"
323#include "double-conversion/bignum.cc"
324#include "double-conversion/bignum-dtoa.cc"
325#include "double-conversion/cached-powers.cc"
326#include "double-conversion/fast-dtoa.cc"
327#include "double-conversion/strtod.cc"
328#include "double-conversion/double-conversion.cc"
329
330 static double_conversion::DoubleToStringConverter g_dtoa_converter(
331 double_conversion::DoubleToStringConverter::NO_FLAGS,
332 "INF",
333 "NAN",
334 'e',
338 0);
339
340 static double_conversion::StringToDoubleConverter g_atod_converter(
341 double_conversion::StringToDoubleConverter::NO_FLAGS,
342 std::numeric_limits<double>::quiet_NaN(),
343 std::numeric_limits<double>::quiet_NaN(),
344 "INF",
345 "NAN");
346
347 double DoubleConvertor::fast_strtod( const char * buffer, int size, int * processed_chars )
348 {
349 return g_atod_converter.StringToDouble( buffer, size, processed_chars );
350 }
351
352 int DoubleConvertor::fast_dtoa( char * buffer, int size, double value )
353 {
354 double_conversion::StringBuilder builder( buffer, size );
355 if( !g_dtoa_converter.ToPrecision( value, DoubleConvertor::SIGNIFICANT_DIGITS, &builder ) )
356 {
357 builder.Reset();
358 return 0;
359 }
360
361 builder.TrimTrailingZeros();
362 return builder.position();
363 }
364
365 int DoubleConvertor::fast_fixed_dtoa( char * buffer, int size, double value )
366 {
367 double_conversion::StringBuilder builder( buffer, size );
369 {
370 builder.Reset();
371 return 0;
372 }
373
374 return builder.position();
375 }
376
377}

◆ DISALLOW_COPY_AND_ASSIGN()

FIX::double_conversion::Single::DISALLOW_COPY_AND_ASSIGN ( Single )
private

◆ Exponent()

int FIX::double_conversion::Single::Exponent ( ) const
inline

Definition at line 289 of file FieldConvertors.cpp.

319{
320
321// we include "double-conversion" project in FIX namespace
322// to avoid linking errors if quickfix is linked statically
323// and "double-conversion" is already used by target project
324
325#include "double-conversion/diy-fp.cc"
326#include "double-conversion/fixed-dtoa.cc"
327#include "double-conversion/bignum.cc"
328#include "double-conversion/bignum-dtoa.cc"
329#include "double-conversion/cached-powers.cc"
330#include "double-conversion/fast-dtoa.cc"
331#include "double-conversion/strtod.cc"
332#include "double-conversion/double-conversion.cc"
333
334 static double_conversion::DoubleToStringConverter g_dtoa_converter(
335 double_conversion::DoubleToStringConverter::NO_FLAGS,
336 "INF",
337 "NAN",
338 'e',
342 0);
343
344 static double_conversion::StringToDoubleConverter g_atod_converter(
345 double_conversion::StringToDoubleConverter::NO_FLAGS,
346 std::numeric_limits<double>::quiet_NaN(),
347 std::numeric_limits<double>::quiet_NaN(),
348 "INF",
349 "NAN");
350
351 double DoubleConvertor::fast_strtod( const char * buffer, int size, int * processed_chars )
352 {
353 return g_atod_converter.StringToDouble( buffer, size, processed_chars );
354 }
355
356 int DoubleConvertor::fast_dtoa( char * buffer, int size, double value )
357 {
358 double_conversion::StringBuilder builder( buffer, size );
359 if( !g_dtoa_converter.ToPrecision( value, DoubleConvertor::SIGNIFICANT_DIGITS, &builder ) )
360 {
361 builder.Reset();
362 return 0;
363 }
364
365 builder.TrimTrailingZeros();
366 return builder.position();
367 }
368
369 int DoubleConvertor::fast_fixed_dtoa( char * buffer, int size, double value )
370 {
371 double_conversion::StringBuilder builder( buffer, size );
373 {
374 builder.Reset();
375 return 0;
376 }
377
378 return builder.position();
379 }
380
381}

◆ Infinity()

float FIX::double_conversion::Single::Infinity ( )
inlinestatic

Definition at line 380 of file FieldConvertors.cpp.

410{
411
412// we include "double-conversion" project in FIX namespace
413// to avoid linking errors if quickfix is linked statically
414// and "double-conversion" is already used by target project
415
416#include "double-conversion/diy-fp.cc"
417#include "double-conversion/fixed-dtoa.cc"
418#include "double-conversion/bignum.cc"
419#include "double-conversion/bignum-dtoa.cc"
420#include "double-conversion/cached-powers.cc"
421#include "double-conversion/fast-dtoa.cc"
422#include "double-conversion/strtod.cc"
423#include "double-conversion/double-conversion.cc"
424
425 static double_conversion::DoubleToStringConverter g_dtoa_converter(
426 double_conversion::DoubleToStringConverter::NO_FLAGS,
427 "INF",
428 "NAN",
429 'e',
433 0);
434
435 static double_conversion::StringToDoubleConverter g_atod_converter(
436 double_conversion::StringToDoubleConverter::NO_FLAGS,
437 std::numeric_limits<double>::quiet_NaN(),
438 std::numeric_limits<double>::quiet_NaN(),
439 "INF",
440 "NAN");
441
442 double DoubleConvertor::fast_strtod( const char * buffer, int size, int * processed_chars )
443 {
444 return g_atod_converter.StringToDouble( buffer, size, processed_chars );
445 }
446
447 int DoubleConvertor::fast_dtoa( char * buffer, int size, double value )
448 {
449 double_conversion::StringBuilder builder( buffer, size );
450 if( !g_dtoa_converter.ToPrecision( value, DoubleConvertor::SIGNIFICANT_DIGITS, &builder ) )
451 {
452 builder.Reset();
453 return 0;
454 }
455
456 builder.TrimTrailingZeros();
457 return builder.position();
458 }
459
460 int DoubleConvertor::fast_fixed_dtoa( char * buffer, int size, double value )
461 {
462 double_conversion::StringBuilder builder( buffer, size );
464 {
465 builder.Reset();
466 return 0;
467 }
468
469 return builder.position();
470 }
471
472}

◆ IsDenormal()

bool FIX::double_conversion::Single::IsDenormal ( ) const
inline

Definition at line 309 of file FieldConvertors.cpp.

339{
340
341// we include "double-conversion" project in FIX namespace
342// to avoid linking errors if quickfix is linked statically
343// and "double-conversion" is already used by target project
344
345#include "double-conversion/diy-fp.cc"
346#include "double-conversion/fixed-dtoa.cc"
347#include "double-conversion/bignum.cc"
348#include "double-conversion/bignum-dtoa.cc"
349#include "double-conversion/cached-powers.cc"
350#include "double-conversion/fast-dtoa.cc"
351#include "double-conversion/strtod.cc"
352#include "double-conversion/double-conversion.cc"
353
354 static double_conversion::DoubleToStringConverter g_dtoa_converter(
355 double_conversion::DoubleToStringConverter::NO_FLAGS,
356 "INF",
357 "NAN",
358 'e',
362 0);
363
364 static double_conversion::StringToDoubleConverter g_atod_converter(
365 double_conversion::StringToDoubleConverter::NO_FLAGS,
366 std::numeric_limits<double>::quiet_NaN(),
367 std::numeric_limits<double>::quiet_NaN(),
368 "INF",
369 "NAN");
370
371 double DoubleConvertor::fast_strtod( const char * buffer, int size, int * processed_chars )
372 {
373 return g_atod_converter.StringToDouble( buffer, size, processed_chars );
374 }
375
376 int DoubleConvertor::fast_dtoa( char * buffer, int size, double value )
377 {
378 double_conversion::StringBuilder builder( buffer, size );
379 if( !g_dtoa_converter.ToPrecision( value, DoubleConvertor::SIGNIFICANT_DIGITS, &builder ) )
380 {
381 builder.Reset();
382 return 0;
383 }
384
385 builder.TrimTrailingZeros();
386 return builder.position();
387 }
388
389 int DoubleConvertor::fast_fixed_dtoa( char * buffer, int size, double value )
390 {
391 double_conversion::StringBuilder builder( buffer, size );
393 {
394 builder.Reset();
395 return 0;
396 }
397
398 return builder.position();
399 }
400
401}

◆ IsInfinite()

bool FIX::double_conversion::Single::IsInfinite ( ) const
inline

Definition at line 327 of file FieldConvertors.cpp.

357{
358
359// we include "double-conversion" project in FIX namespace
360// to avoid linking errors if quickfix is linked statically
361// and "double-conversion" is already used by target project
362
363#include "double-conversion/diy-fp.cc"
364#include "double-conversion/fixed-dtoa.cc"
365#include "double-conversion/bignum.cc"
366#include "double-conversion/bignum-dtoa.cc"
367#include "double-conversion/cached-powers.cc"
368#include "double-conversion/fast-dtoa.cc"
369#include "double-conversion/strtod.cc"
370#include "double-conversion/double-conversion.cc"
371
372 static double_conversion::DoubleToStringConverter g_dtoa_converter(
373 double_conversion::DoubleToStringConverter::NO_FLAGS,
374 "INF",
375 "NAN",
376 'e',
380 0);
381
382 static double_conversion::StringToDoubleConverter g_atod_converter(
383 double_conversion::StringToDoubleConverter::NO_FLAGS,
384 std::numeric_limits<double>::quiet_NaN(),
385 std::numeric_limits<double>::quiet_NaN(),
386 "INF",
387 "NAN");
388
389 double DoubleConvertor::fast_strtod( const char * buffer, int size, int * processed_chars )
390 {
391 return g_atod_converter.StringToDouble( buffer, size, processed_chars );
392 }
393
394 int DoubleConvertor::fast_dtoa( char * buffer, int size, double value )
395 {
396 double_conversion::StringBuilder builder( buffer, size );
397 if( !g_dtoa_converter.ToPrecision( value, DoubleConvertor::SIGNIFICANT_DIGITS, &builder ) )
398 {
399 builder.Reset();
400 return 0;
401 }
402
403 builder.TrimTrailingZeros();
404 return builder.position();
405 }
406
407 int DoubleConvertor::fast_fixed_dtoa( char * buffer, int size, double value )
408 {
409 double_conversion::StringBuilder builder( buffer, size );
411 {
412 builder.Reset();
413 return 0;
414 }
415
416 return builder.position();
417 }
418
419}

◆ IsNan()

bool FIX::double_conversion::Single::IsNan ( ) const
inline

Definition at line 321 of file FieldConvertors.cpp.

351{
352
353// we include "double-conversion" project in FIX namespace
354// to avoid linking errors if quickfix is linked statically
355// and "double-conversion" is already used by target project
356
357#include "double-conversion/diy-fp.cc"
358#include "double-conversion/fixed-dtoa.cc"
359#include "double-conversion/bignum.cc"
360#include "double-conversion/bignum-dtoa.cc"
361#include "double-conversion/cached-powers.cc"
362#include "double-conversion/fast-dtoa.cc"
363#include "double-conversion/strtod.cc"
364#include "double-conversion/double-conversion.cc"
365
366 static double_conversion::DoubleToStringConverter g_dtoa_converter(
367 double_conversion::DoubleToStringConverter::NO_FLAGS,
368 "INF",
369 "NAN",
370 'e',
374 0);
375
376 static double_conversion::StringToDoubleConverter g_atod_converter(
377 double_conversion::StringToDoubleConverter::NO_FLAGS,
378 std::numeric_limits<double>::quiet_NaN(),
379 std::numeric_limits<double>::quiet_NaN(),
380 "INF",
381 "NAN");
382
383 double DoubleConvertor::fast_strtod( const char * buffer, int size, int * processed_chars )
384 {
385 return g_atod_converter.StringToDouble( buffer, size, processed_chars );
386 }
387
388 int DoubleConvertor::fast_dtoa( char * buffer, int size, double value )
389 {
390 double_conversion::StringBuilder builder( buffer, size );
391 if( !g_dtoa_converter.ToPrecision( value, DoubleConvertor::SIGNIFICANT_DIGITS, &builder ) )
392 {
393 builder.Reset();
394 return 0;
395 }
396
397 builder.TrimTrailingZeros();
398 return builder.position();
399 }
400
401 int DoubleConvertor::fast_fixed_dtoa( char * buffer, int size, double value )
402 {
403 double_conversion::StringBuilder builder( buffer, size );
405 {
406 builder.Reset();
407 return 0;
408 }
409
410 return builder.position();
411 }
412
413}

◆ IsSpecial()

bool FIX::double_conversion::Single::IsSpecial ( ) const
inline

Definition at line 316 of file FieldConvertors.cpp.

346{
347
348// we include "double-conversion" project in FIX namespace
349// to avoid linking errors if quickfix is linked statically
350// and "double-conversion" is already used by target project
351
352#include "double-conversion/diy-fp.cc"
353#include "double-conversion/fixed-dtoa.cc"
354#include "double-conversion/bignum.cc"
355#include "double-conversion/bignum-dtoa.cc"
356#include "double-conversion/cached-powers.cc"
357#include "double-conversion/fast-dtoa.cc"
358#include "double-conversion/strtod.cc"
359#include "double-conversion/double-conversion.cc"
360
361 static double_conversion::DoubleToStringConverter g_dtoa_converter(
362 double_conversion::DoubleToStringConverter::NO_FLAGS,
363 "INF",
364 "NAN",
365 'e',
369 0);
370
371 static double_conversion::StringToDoubleConverter g_atod_converter(
372 double_conversion::StringToDoubleConverter::NO_FLAGS,
373 std::numeric_limits<double>::quiet_NaN(),
374 std::numeric_limits<double>::quiet_NaN(),
375 "INF",
376 "NAN");
377
378 double DoubleConvertor::fast_strtod( const char * buffer, int size, int * processed_chars )
379 {
380 return g_atod_converter.StringToDouble( buffer, size, processed_chars );
381 }
382
383 int DoubleConvertor::fast_dtoa( char * buffer, int size, double value )
384 {
385 double_conversion::StringBuilder builder( buffer, size );
386 if( !g_dtoa_converter.ToPrecision( value, DoubleConvertor::SIGNIFICANT_DIGITS, &builder ) )
387 {
388 builder.Reset();
389 return 0;
390 }
391
392 builder.TrimTrailingZeros();
393 return builder.position();
394 }
395
396 int DoubleConvertor::fast_fixed_dtoa( char * buffer, int size, double value )
397 {
398 double_conversion::StringBuilder builder( buffer, size );
400 {
401 builder.Reset();
402 return 0;
403 }
404
405 return builder.position();
406 }
407
408}

◆ LowerBoundaryIsCloser()

bool FIX::double_conversion::Single::LowerBoundaryIsCloser ( ) const
inline

Definition at line 365 of file FieldConvertors.cpp.

395{
396
397// we include "double-conversion" project in FIX namespace
398// to avoid linking errors if quickfix is linked statically
399// and "double-conversion" is already used by target project
400
401#include "double-conversion/diy-fp.cc"
402#include "double-conversion/fixed-dtoa.cc"
403#include "double-conversion/bignum.cc"
404#include "double-conversion/bignum-dtoa.cc"
405#include "double-conversion/cached-powers.cc"
406#include "double-conversion/fast-dtoa.cc"
407#include "double-conversion/strtod.cc"
408#include "double-conversion/double-conversion.cc"
409
410 static double_conversion::DoubleToStringConverter g_dtoa_converter(
411 double_conversion::DoubleToStringConverter::NO_FLAGS,
412 "INF",
413 "NAN",
414 'e',
418 0);
419
420 static double_conversion::StringToDoubleConverter g_atod_converter(
421 double_conversion::StringToDoubleConverter::NO_FLAGS,
422 std::numeric_limits<double>::quiet_NaN(),
423 std::numeric_limits<double>::quiet_NaN(),
424 "INF",
425 "NAN");
426
427 double DoubleConvertor::fast_strtod( const char * buffer, int size, int * processed_chars )
428 {
429 return g_atod_converter.StringToDouble( buffer, size, processed_chars );
430 }
431
432 int DoubleConvertor::fast_dtoa( char * buffer, int size, double value )
433 {
434 double_conversion::StringBuilder builder( buffer, size );
435 if( !g_dtoa_converter.ToPrecision( value, DoubleConvertor::SIGNIFICANT_DIGITS, &builder ) )
436 {
437 builder.Reset();
438 return 0;
439 }
440
441 builder.TrimTrailingZeros();
442 return builder.position();
443 }
444
445 int DoubleConvertor::fast_fixed_dtoa( char * buffer, int size, double value )
446 {
447 double_conversion::StringBuilder builder( buffer, size );
449 {
450 builder.Reset();
451 return 0;
452 }
453
454 return builder.position();
455 }
456
457}

◆ NaN()

float FIX::double_conversion::Single::NaN ( )
inlinestatic

Definition at line 384 of file FieldConvertors.cpp.

414{
415
416// we include "double-conversion" project in FIX namespace
417// to avoid linking errors if quickfix is linked statically
418// and "double-conversion" is already used by target project
419
420#include "double-conversion/diy-fp.cc"
421#include "double-conversion/fixed-dtoa.cc"
422#include "double-conversion/bignum.cc"
423#include "double-conversion/bignum-dtoa.cc"
424#include "double-conversion/cached-powers.cc"
425#include "double-conversion/fast-dtoa.cc"
426#include "double-conversion/strtod.cc"
427#include "double-conversion/double-conversion.cc"
428
429 static double_conversion::DoubleToStringConverter g_dtoa_converter(
430 double_conversion::DoubleToStringConverter::NO_FLAGS,
431 "INF",
432 "NAN",
433 'e',
437 0);
438
439 static double_conversion::StringToDoubleConverter g_atod_converter(
440 double_conversion::StringToDoubleConverter::NO_FLAGS,
441 std::numeric_limits<double>::quiet_NaN(),
442 std::numeric_limits<double>::quiet_NaN(),
443 "INF",
444 "NAN");
445
446 double DoubleConvertor::fast_strtod( const char * buffer, int size, int * processed_chars )
447 {
448 return g_atod_converter.StringToDouble( buffer, size, processed_chars );
449 }
450
451 int DoubleConvertor::fast_dtoa( char * buffer, int size, double value )
452 {
453 double_conversion::StringBuilder builder( buffer, size );
454 if( !g_dtoa_converter.ToPrecision( value, DoubleConvertor::SIGNIFICANT_DIGITS, &builder ) )
455 {
456 builder.Reset();
457 return 0;
458 }
459
460 builder.TrimTrailingZeros();
461 return builder.position();
462 }
463
464 int DoubleConvertor::fast_fixed_dtoa( char * buffer, int size, double value )
465 {
466 double_conversion::StringBuilder builder( buffer, size );
468 {
469 builder.Reset();
470 return 0;
471 }
472
473 return builder.position();
474 }
475
476}

◆ NormalizedBoundaries()

void FIX::double_conversion::Single::NormalizedBoundaries ( DiyFp * out_m_minus,
DiyFp * out_m_plus ) const
inline

Definition at line 342 of file FieldConvertors.cpp.

372{
373
374// we include "double-conversion" project in FIX namespace
375// to avoid linking errors if quickfix is linked statically
376// and "double-conversion" is already used by target project
377
378#include "double-conversion/diy-fp.cc"
379#include "double-conversion/fixed-dtoa.cc"
380#include "double-conversion/bignum.cc"
381#include "double-conversion/bignum-dtoa.cc"
382#include "double-conversion/cached-powers.cc"
383#include "double-conversion/fast-dtoa.cc"
384#include "double-conversion/strtod.cc"
385#include "double-conversion/double-conversion.cc"
386
387 static double_conversion::DoubleToStringConverter g_dtoa_converter(
388 double_conversion::DoubleToStringConverter::NO_FLAGS,
389 "INF",
390 "NAN",
391 'e',
395 0);
396
397 static double_conversion::StringToDoubleConverter g_atod_converter(
398 double_conversion::StringToDoubleConverter::NO_FLAGS,
399 std::numeric_limits<double>::quiet_NaN(),
400 std::numeric_limits<double>::quiet_NaN(),
401 "INF",
402 "NAN");
403
404 double DoubleConvertor::fast_strtod( const char * buffer, int size, int * processed_chars )
405 {
406 return g_atod_converter.StringToDouble( buffer, size, processed_chars );
407 }
408
409 int DoubleConvertor::fast_dtoa( char * buffer, int size, double value )
410 {
411 double_conversion::StringBuilder builder( buffer, size );
412 if( !g_dtoa_converter.ToPrecision( value, DoubleConvertor::SIGNIFICANT_DIGITS, &builder ) )
413 {
414 builder.Reset();
415 return 0;
416 }
417
418 builder.TrimTrailingZeros();
419 return builder.position();
420 }
421
422 int DoubleConvertor::fast_fixed_dtoa( char * buffer, int size, double value )
423 {
424 double_conversion::StringBuilder builder( buffer, size );
426 {
427 builder.Reset();
428 return 0;
429 }
430
431 return builder.position();
432 }
433
434}

◆ Sign()

int FIX::double_conversion::Single::Sign ( ) const
inline

Definition at line 333 of file FieldConvertors.cpp.

363{
364
365// we include "double-conversion" project in FIX namespace
366// to avoid linking errors if quickfix is linked statically
367// and "double-conversion" is already used by target project
368
369#include "double-conversion/diy-fp.cc"
370#include "double-conversion/fixed-dtoa.cc"
371#include "double-conversion/bignum.cc"
372#include "double-conversion/bignum-dtoa.cc"
373#include "double-conversion/cached-powers.cc"
374#include "double-conversion/fast-dtoa.cc"
375#include "double-conversion/strtod.cc"
376#include "double-conversion/double-conversion.cc"
377
378 static double_conversion::DoubleToStringConverter g_dtoa_converter(
379 double_conversion::DoubleToStringConverter::NO_FLAGS,
380 "INF",
381 "NAN",
382 'e',
386 0);
387
388 static double_conversion::StringToDoubleConverter g_atod_converter(
389 double_conversion::StringToDoubleConverter::NO_FLAGS,
390 std::numeric_limits<double>::quiet_NaN(),
391 std::numeric_limits<double>::quiet_NaN(),
392 "INF",
393 "NAN");
394
395 double DoubleConvertor::fast_strtod( const char * buffer, int size, int * processed_chars )
396 {
397 return g_atod_converter.StringToDouble( buffer, size, processed_chars );
398 }
399
400 int DoubleConvertor::fast_dtoa( char * buffer, int size, double value )
401 {
402 double_conversion::StringBuilder builder( buffer, size );
403 if( !g_dtoa_converter.ToPrecision( value, DoubleConvertor::SIGNIFICANT_DIGITS, &builder ) )
404 {
405 builder.Reset();
406 return 0;
407 }
408
409 builder.TrimTrailingZeros();
410 return builder.position();
411 }
412
413 int DoubleConvertor::fast_fixed_dtoa( char * buffer, int size, double value )
414 {
415 double_conversion::StringBuilder builder( buffer, size );
417 {
418 builder.Reset();
419 return 0;
420 }
421
422 return builder.position();
423 }
424
425}

◆ Significand()

uint32_t FIX::double_conversion::Single::Significand ( ) const
inline

Definition at line 298 of file FieldConvertors.cpp.

328{
329
330// we include "double-conversion" project in FIX namespace
331// to avoid linking errors if quickfix is linked statically
332// and "double-conversion" is already used by target project
333
334#include "double-conversion/diy-fp.cc"
335#include "double-conversion/fixed-dtoa.cc"
336#include "double-conversion/bignum.cc"
337#include "double-conversion/bignum-dtoa.cc"
338#include "double-conversion/cached-powers.cc"
339#include "double-conversion/fast-dtoa.cc"
340#include "double-conversion/strtod.cc"
341#include "double-conversion/double-conversion.cc"
342
343 static double_conversion::DoubleToStringConverter g_dtoa_converter(
344 double_conversion::DoubleToStringConverter::NO_FLAGS,
345 "INF",
346 "NAN",
347 'e',
351 0);
352
353 static double_conversion::StringToDoubleConverter g_atod_converter(
354 double_conversion::StringToDoubleConverter::NO_FLAGS,
355 std::numeric_limits<double>::quiet_NaN(),
356 std::numeric_limits<double>::quiet_NaN(),
357 "INF",
358 "NAN");
359
360 double DoubleConvertor::fast_strtod( const char * buffer, int size, int * processed_chars )
361 {
362 return g_atod_converter.StringToDouble( buffer, size, processed_chars );
363 }
364
365 int DoubleConvertor::fast_dtoa( char * buffer, int size, double value )
366 {
367 double_conversion::StringBuilder builder( buffer, size );
368 if( !g_dtoa_converter.ToPrecision( value, DoubleConvertor::SIGNIFICANT_DIGITS, &builder ) )
369 {
370 builder.Reset();
371 return 0;
372 }
373
374 builder.TrimTrailingZeros();
375 return builder.position();
376 }
377
378 int DoubleConvertor::fast_fixed_dtoa( char * buffer, int size, double value )
379 {
380 double_conversion::StringBuilder builder( buffer, size );
382 {
383 builder.Reset();
384 return 0;
385 }
386
387 return builder.position();
388 }
389
390}

◆ UpperBoundary()

DiyFp FIX::double_conversion::Single::UpperBoundary ( ) const
inline

Definition at line 360 of file FieldConvertors.cpp.

390{
391
392// we include "double-conversion" project in FIX namespace
393// to avoid linking errors if quickfix is linked statically
394// and "double-conversion" is already used by target project
395
396#include "double-conversion/diy-fp.cc"
397#include "double-conversion/fixed-dtoa.cc"
398#include "double-conversion/bignum.cc"
399#include "double-conversion/bignum-dtoa.cc"
400#include "double-conversion/cached-powers.cc"
401#include "double-conversion/fast-dtoa.cc"
402#include "double-conversion/strtod.cc"
403#include "double-conversion/double-conversion.cc"
404
405 static double_conversion::DoubleToStringConverter g_dtoa_converter(
406 double_conversion::DoubleToStringConverter::NO_FLAGS,
407 "INF",
408 "NAN",
409 'e',
413 0);
414
415 static double_conversion::StringToDoubleConverter g_atod_converter(
416 double_conversion::StringToDoubleConverter::NO_FLAGS,
417 std::numeric_limits<double>::quiet_NaN(),
418 std::numeric_limits<double>::quiet_NaN(),
419 "INF",
420 "NAN");
421
422 double DoubleConvertor::fast_strtod( const char * buffer, int size, int * processed_chars )
423 {
424 return g_atod_converter.StringToDouble( buffer, size, processed_chars );
425 }
426
427 int DoubleConvertor::fast_dtoa( char * buffer, int size, double value )
428 {
429 double_conversion::StringBuilder builder( buffer, size );
430 if( !g_dtoa_converter.ToPrecision( value, DoubleConvertor::SIGNIFICANT_DIGITS, &builder ) )
431 {
432 builder.Reset();
433 return 0;
434 }
435
436 builder.TrimTrailingZeros();
437 return builder.position();
438 }
439
440 int DoubleConvertor::fast_fixed_dtoa( char * buffer, int size, double value )
441 {
442 double_conversion::StringBuilder builder( buffer, size );
444 {
445 builder.Reset();
446 return 0;
447 }
448
449 return builder.position();
450 }
451
452}

◆ value()

float FIX::double_conversion::Single::value ( ) const
inline

Definition at line 378 of file FieldConvertors.cpp.

408{
409
410// we include "double-conversion" project in FIX namespace
411// to avoid linking errors if quickfix is linked statically
412// and "double-conversion" is already used by target project
413
414#include "double-conversion/diy-fp.cc"
415#include "double-conversion/fixed-dtoa.cc"
416#include "double-conversion/bignum.cc"
417#include "double-conversion/bignum-dtoa.cc"
418#include "double-conversion/cached-powers.cc"
419#include "double-conversion/fast-dtoa.cc"
420#include "double-conversion/strtod.cc"
421#include "double-conversion/double-conversion.cc"
422
423 static double_conversion::DoubleToStringConverter g_dtoa_converter(
424 double_conversion::DoubleToStringConverter::NO_FLAGS,
425 "INF",
426 "NAN",
427 'e',
431 0);
432
433 static double_conversion::StringToDoubleConverter g_atod_converter(
434 double_conversion::StringToDoubleConverter::NO_FLAGS,
435 std::numeric_limits<double>::quiet_NaN(),
436 std::numeric_limits<double>::quiet_NaN(),
437 "INF",
438 "NAN");
439
440 double DoubleConvertor::fast_strtod( const char * buffer, int size, int * processed_chars )
441 {
442 return g_atod_converter.StringToDouble( buffer, size, processed_chars );
443 }
444
445 int DoubleConvertor::fast_dtoa( char * buffer, int size, double value )
446 {
447 double_conversion::StringBuilder builder( buffer, size );
448 if( !g_dtoa_converter.ToPrecision( value, DoubleConvertor::SIGNIFICANT_DIGITS, &builder ) )
449 {
450 builder.Reset();
451 return 0;
452 }
453
454 builder.TrimTrailingZeros();
455 return builder.position();
456 }
457
458 int DoubleConvertor::fast_fixed_dtoa( char * buffer, int size, double value )
459 {
460 double_conversion::StringBuilder builder( buffer, size );
462 {
463 builder.Reset();
464 return 0;
465 }
466
467 return builder.position();
468 }
469
470}

Member Data Documentation

◆ d32_

const uint32_t FIX::double_conversion::Single::d32_
private

Definition at line 395 of file FieldConvertors.cpp.

◆ kDenormalExponent

const int FIX::double_conversion::Single::kDenormalExponent = -kExponentBias + 1
staticprivate

Definition at line 390 of file FieldConvertors.cpp.

◆ kExponentBias

const int FIX::double_conversion::Single::kExponentBias = 0x7F + kPhysicalSignificandSize
staticprivate

Definition at line 389 of file FieldConvertors.cpp.

◆ kExponentMask

const uint32_t FIX::double_conversion::Single::kExponentMask = 0x7F800000
static

Definition at line 266 of file FieldConvertors.cpp.

◆ kHiddenBit

const uint32_t FIX::double_conversion::Single::kHiddenBit = 0x00800000
static

Definition at line 268 of file FieldConvertors.cpp.

◆ kInfinity

const uint32_t FIX::double_conversion::Single::kInfinity = 0x7F800000
staticprivate

Definition at line 392 of file FieldConvertors.cpp.

◆ kMaxExponent

const int FIX::double_conversion::Single::kMaxExponent = 0xFF - kExponentBias
staticprivate

Definition at line 391 of file FieldConvertors.cpp.

◆ kNaN

const uint32_t FIX::double_conversion::Single::kNaN = 0x7FC00000
staticprivate

Definition at line 393 of file FieldConvertors.cpp.

◆ kPhysicalSignificandSize

const int FIX::double_conversion::Single::kPhysicalSignificandSize = 23
static

Definition at line 269 of file FieldConvertors.cpp.

◆ kSignificandMask

const uint32_t FIX::double_conversion::Single::kSignificandMask = 0x007FFFFF
static

Definition at line 267 of file FieldConvertors.cpp.

◆ kSignificandSize

const int FIX::double_conversion::Single::kSignificandSize = 24
static

Definition at line 270 of file FieldConvertors.cpp.

◆ kSignMask

const uint32_t FIX::double_conversion::Single::kSignMask = 0x80000000
static

Definition at line 265 of file FieldConvertors.cpp.


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

Generated on for QuickFIX by doxygen 1.15.0 written by Dimitri van Heesch, © 1997-2001