TSDuck v3.40-4033
MPEG Transport Stream Toolkit
|
Abstract base class for different representations of "numbers". More...
#include <tsAbstractNumber.h>
Public Member Functions | |
virtual UString | description () const =0 |
Get a textual description of the values of that type. | |
virtual bool | fromString (const UString &str, UChar separator=COMMA, UChar decimal_dot=FULL_STOP)=0 |
Parse a string and interpret it as a number. | |
virtual bool | inRange (int64_t min, int64_t max) const =0 |
Check if the value of the number is within a range of integer value. | |
virtual double | toDouble () const =0 |
Conversion to double value. | |
virtual int64_t | toInt64 () const =0 |
Conversion to a 64-bit signed integer value. | |
virtual UString | toString (size_t min_width=0, bool right_justified=true, UChar separator=COMMA, bool force_sign=false, size_t decimals=NPOS, bool force_decimals=false, UChar decimal_dot=FULL_STOP, UChar pad=SPACE) const =0 |
Convert the number to a string object. | |
Static Public Attributes | |
static const AbstractNumber *const | INVALID |
Pointer to an invalid instance of AbstractNumber. | |
Static Protected Member Functions | |
static void | Deformat (UString &str, UChar separator, UChar decimal_dot) |
Static common utility to deformat a string containing a number. | |
static void | Format (UString &str, size_t min_width, bool right_justified, UChar separator, bool add_plus_sign, size_t decimals, bool force_decimals, UChar decimal_dot, UChar pad) |
Static common utility to format a string containing a number with or without decimal part. | |
Abstract base class for different representations of "numbers".
All arithmetic and comparison operators shall be defined by concrete subclasses between number instances and between a number instance and an integer value, both directions.
|
pure virtual |
Convert the number to a string object.
[in] | min_width | Minimum width of the returned string. Padded with pad characters if larger than the number of characters in the formatted number. |
[in] | right_justified | If true (the default), return a right-justified string. When false, return a left-justified string. Ignored if min_width is lower than the number of characters in the formatted number. |
[in] | separator | Separator character for groups of thousands, a comma by default. CHAR_NULL means no separator. |
[in] | force_sign | If true, force a '+' sign for positive values. |
[in] | decimals | Precision to use after the decimal point. NPOS means default. |
[in] | force_decimals | If true, with positive precision, force a decimal dot and the number of decimal digits of the precision. By default, skip non significant decimal digits. |
[in] | decimal_dot | The decimal separator, a dot by default. |
[in] | pad | The padding character to adjust the width. |
Implemented in ts::FixedPoint< INT_T, PREC >, ts::FloatingPoint< FLOAT_T, PREC >, ts::Fraction< INT_T >, ts::Fraction< uint32_t >, and ts::Integer< INT_T >.
|
pure virtual |
Parse a string and interpret it as a number.
The content of this object is updated from the parsed string.
[in] | str | A string to parse, representing this object. |
[in] | separator | Separator character for groups of thousands, a comma by default. |
[in] | decimal_dot | The decimal separator, a dot by default. |
Implemented in ts::FixedPoint< INT_T, PREC >, ts::FloatingPoint< FLOAT_T, PREC >, ts::Fraction< INT_T >, ts::Fraction< uint32_t >, and ts::Integer< INT_T >.
|
pure virtual |
Conversion to a 64-bit signed integer value.
Implemented in ts::FixedPoint< INT_T, PREC >, ts::FloatingPoint< FLOAT_T, PREC >, ts::Fraction< INT_T >, ts::Fraction< uint32_t >, and ts::Integer< INT_T >.
|
pure virtual |
Conversion to double value.
Implemented in ts::FixedPoint< INT_T, PREC >, ts::FloatingPoint< FLOAT_T, PREC >, ts::Fraction< INT_T >, ts::Fraction< uint32_t >, and ts::Integer< INT_T >.
|
pure virtual |
Check if the value of the number is within a range of integer value.
[in] | min | Minimum integer value (inclusive). |
[in] | max | Maximum integer value (inclusive). |
Implemented in ts::FixedPoint< INT_T, PREC >, ts::FloatingPoint< FLOAT_T, PREC >, ts::Fraction< INT_T >, ts::Fraction< uint32_t >, and ts::Integer< INT_T >.
|
pure virtual |
Get a textual description of the values of that type.
This is typically used in help texts.
Implemented in ts::FixedPoint< INT_T, PREC >, ts::FloatingPoint< FLOAT_T, PREC >, ts::Fraction< INT_T >, ts::Fraction< uint32_t >, and ts::Integer< INT_T >.
|
staticprotected |
Static common utility to format a string containing a number with or without decimal part.
[in,out] | str | String to format. |
[in] | min_width | Minimum width of the string. |
[in] | right_justified | If true (the default), return a right-justified string. |
[in] | separator | Separator character for groups of thousands. |
[in] | add_plus_sign | If true, force a '+' sign before the number. |
[in] | decimals | Precision to use after the decimal point. NPOS not allowed. |
[in] | force_decimals | If true, force a decimal dot and the number of decimal digits. For integer types, use force_decimals == true and decimals == 0. |
[in] | decimal_dot | The decimal separator. |
[in] | pad | The padding character to adjust the width. |
|
staticprotected |
Static common utility to deformat a string containing a number.
[in,out] | str | String to deformat. |
[in] | separator | Separator character for groups of thousands. |
[in] | decimal_dot | The decimal separator. |
|
static |
Pointer to an invalid instance of AbstractNumber.
Its toString() method always return an empty string.