ALib C++ Library
Library Version: 2412 R0
Documentation generated by doxygen
Loading...
Searching...
No Matches
TFormat< TChar > Class Template Reference

Description:

template<typename TChar>
class alib::strings::TFormat< TChar >

This is a type purely made to be appended to objects of type AString. Various constructors accept integer and floating point values, along with formatting options. The specialization of functor T_Append will use a given (or defaulted) instance of class NumberFormat to format the encapsulated value and append the result to the AString in question.

Note
Within the same header file that this class in declared in, there are several specializations of functor T_Append defined for plain integer and floating point types. These specializations create an object of this type, providing the value only, hence, using this classes constructor's default values. The number format used as default by the constructors of this class is NumberFormat::Computational. As a result, the application of such core types, as in:
AString sample;
sample << 1234.56;
cout << sample << endl;
which produces:
1234.56
does not use a locale specific number format. Instead, it uses one that is exchangeable between applications independent of the locale setting of the executing machine.
Consequently, for locale specific output, an object of this class needs to be appended along with a locale enabled instance of NumberFormat. For example:
AString sample;
sample << Format( 1234.56 , &NumberFormat::Global );
cout << sample << endl;
which - dependent on the current local setting - might produce:
1.234,56

Inner Types:
Besides accepting plain number types, this class in addition aggregates several public inner types, namely

Each of these classes provide certain formatting options, which are implemented by a corresponding specialization of functor T_Append.

Note
The types are not 'physically' related to this class. Instead, placing them here as public inner types has been purely a design decision. Rationales were to make them more easily findable being aggregated here, to depopulate the namespace and finally to make the using code more readable.

Details on Formats:
Details on the options of formatting integer and floating point numbers are documented with class NumberFormat.

Template Parameters
TCharThe character type of the AString that instances can be "applied" to.

Definition at line 40 of file strings/fwds.hpp.

Inner Type Index:

struct  Bin
 
struct  Escape
 
struct  Field
 
struct  Fill
 
struct  Hex
 
struct  Oct
 
struct  Tab
 

Public Field Index:

TNumberFormat< TChar > * nf
 
union { 
 
   double   fpValue 
 The value when using constructor with type double. More...
 
   int64_t   value 
 The value when using constructor with signed integer types. More...
 
v 
 The data.
 
int valueType
 Flag witch value to use (1= sInt, 2=uInt, 3=fp )
 
int width
 

Public Method Index:

template<typename T >
 TFormat (T value, int overrideWidth=0, TNumberFormat< TChar > *numberFormat=nullptr)
 
template<typename T >
 TFormat (T value, TNumberFormat< TChar > *numberFormat=nullptr)
 

Field Details:

◆ fpValue

template<typename TChar >
double fpValue

The value when using constructor with type double.

Definition at line 443 of file format.inl.

◆ nf

template<typename TChar >
TNumberFormat<TChar>* nf

The number format to use. Defaults to nullptr which chooses the static singleton found in NumberFormat::Computational.

Definition at line 446 of file format.inl.

◆ [union]

union { ... } v

The data.

The union to hold an integral or floating point value provided with the different constructors.

◆ value

template<typename TChar >
int64_t value

The value when using constructor with signed integer types.

Definition at line 442 of file format.inl.

◆ valueType

template<typename TChar >
int valueType

Flag witch value to use (1= sInt, 2=uInt, 3=fp )

Definition at line 453 of file format.inl.

◆ width

template<typename TChar >
int width

The minimum width of the number to write. Defaults to 0 which denotes to choose the value of field NumberFormat::DecMinimumFieldWidth.

Definition at line 450 of file format.inl.

Constructor(s) / Destructor Details:

◆ TFormat() [1/2]

template<typename TChar >
template<typename T >
TFormat ( T value,
int overrideWidth = 0,
TNumberFormat< TChar > * numberFormat = nullptr )
inline

Constructor. Stores parameters.

Template Parameters
TThe type of argument value. Deduced by the compiler. Integer and floating-point types are accepted
Parameters
valueThe value to write.
overrideWidthDefaults to 0 which denotes to choose the value of field NumberFormat::DecMinimumFieldWidth.
numberFormatThe number format to use. Defaults to nullptr which chooses the static singleton found in NumberFormat::Computational.

◆ TFormat() [2/2]

template<typename TChar >
template<typename T >
TFormat ( T value,
TNumberFormat< TChar > * numberFormat = nullptr )
inline

Alternative constructor that omits parameter width and set it to 0.

Template Parameters
TThe type of argument value. Deduced by the compiler. Integer and floating-point types are accepted
Parameters
valueThe value to write.
numberFormatThe number format to use. Defaults to nullptr which chooses the static singleton found in NumberFormat::Computational.

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