Public Member Functions | Private Types | Private Member Functions | Static Private Member Functions | Private Attributes
CxxTest::ValueTraits< const double > Class Reference

#include <ValueTraits.h>

Public Member Functions

 ValueTraits (double t)
 
const char * asString (void) const
 

Private Types

enum  { MAX_DIGITS_ON_LEFT = 24, DIGITS_ON_RIGHT = 4, BASE = 10 }
 

Private Member Functions

char * doNegative (double &t)
 
void hugeNumber (double t)
 
void normalNumber (double t)
 
char * doubleToString (double t, char *s, unsigned skip=0, unsigned max=(unsigned)-1)
 

Static Private Member Functions

static unsigned requiredDigitsOnLeft (double t)
 

Private Attributes

char _asString [1+MAX_DIGITS_ON_LEFT+1+DIGITS_ON_RIGHT+1]
 

Detailed Description

Definition at line 310 of file ValueTraits.h.

Member Enumeration Documentation

anonymous enum
private

Constructor & Destructor Documentation

CxxTest::ValueTraits< const double >::ValueTraits ( double  t)
inline

Definition at line 313 of file ValueTraits.h.

Member Function Documentation

const char* CxxTest::ValueTraits< const double >::asString ( void  ) const
inline

Definition at line 320 of file ValueTraits.h.

320 { return _asString; }
char _asString[1+MAX_DIGITS_ON_LEFT+1+DIGITS_ON_RIGHT+1]
Definition: ValueTraits.h:324
char * CxxTest::ValueTraits< const double >::doNegative ( double &  t)
private

Definition at line 105 of file ValueTraits.cpp.

106  {
107  if ( t >= 0 )
108  return _asString;
109  _asString[0] = '-';
110  t = -t;
111  return _asString + 1;
112  }
char _asString[1+MAX_DIGITS_ON_LEFT+1+DIGITS_ON_RIGHT+1]
Definition: ValueTraits.h:324
char * CxxTest::ValueTraits< const double >::doubleToString ( double  t,
char *  s,
unsigned  skip = 0,
unsigned  max = (unsigned)-1 
)
private

Definition at line 133 of file ValueTraits.cpp.

134  {
135  return numberToString<double>( t, s, BASE, skip, max );
136  }
static int max(int a, int b)
Definition: fast_mult.cc:264
char * s
Definition: ValueTraits.h:143
void CxxTest::ValueTraits< const double >::hugeNumber ( double  t)
private

Definition at line 114 of file ValueTraits.cpp.

115  {
116  char *s = doNegative( t );
117  s = doubleToString( t, s, 0, 1 );
118  s = copyString( s, "." );
119  s = doubleToString( t, s, 1, DIGITS_ON_RIGHT );
120  s = copyString( s, "E" );
121  s = numberToString( requiredDigitsOnLeft( t ) - 1, s );
122  }
char * copyString(char *dst, const char *src)
Definition: ValueTraits.cpp:30
char * s
Definition: ValueTraits.h:143
char * doubleToString(double t, char *s, unsigned skip=0, unsigned max=(unsigned)-1)
static unsigned requiredDigitsOnLeft(double t)
Definition: ValueTraits.cpp:97
void CxxTest::ValueTraits< const double >::normalNumber ( double  t)
private

Definition at line 124 of file ValueTraits.cpp.

125  {
126  char *s = doNegative( t );
127  s = doubleToString( t, s );
128  s = copyString( s, "." );
129  for ( unsigned i = 0; i < DIGITS_ON_RIGHT; ++ i )
130  s = numberToString( (unsigned)(t *= BASE) % BASE, s );
131  }
char * copyString(char *dst, const char *src)
Definition: ValueTraits.cpp:30
char * s
Definition: ValueTraits.h:143
int i
Definition: cfEzgcd.cc:123
char * doubleToString(double t, char *s, unsigned skip=0, unsigned max=(unsigned)-1)
unsigned CxxTest::ValueTraits< const double >::requiredDigitsOnLeft ( double  t)
staticprivate

Definition at line 97 of file ValueTraits.cpp.

98  {
99  unsigned digits = 1;
100  for ( t = (t < 0.0) ? -t : t; t > 1.0; t /= BASE )
101  ++ digits;
102  return digits;
103  }

Field Documentation

char CxxTest::ValueTraits< const double >::_asString[1+MAX_DIGITS_ON_LEFT+1+DIGITS_ON_RIGHT+1]
private

Definition at line 324 of file ValueTraits.h.


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