TSDuck v3.40-4033
MPEG Transport Stream Toolkit
Loading...
Searching...
No Matches
ts::ArgMixOut Class Reference

Define an element of an argument list with integer output types of mixed sizes. More...

#include <tsArgMix.h>

Inheritance diagram for ts::ArgMixOut:
Collaboration diagram for ts::ArgMixOut:

Public Member Functions

 ArgMixOut ()=default
 Default constructor.
 
 ArgMixOut (ArgMixOut &&other) noexcept
 Move constructor.
 
 ArgMixOut (const ArgMixOut &other)
 Copy constructor.
 
 ArgMixOut (double *ptr)
 Constructor from the address of floating point data.
 
template<typename T >
requires ts::int_enum<T>
 ArgMixOut (T *ptr)
 Constructor from the address of an integer or enum data.
 
std::intmax_t den () const
 In the case of a std::chrono::duration value, return the denominator of the ratio.
 
bool isAbstractNumber () const
 Check if the argument value is an AbstractNumber value, either input or output.
 
bool isAnyString () const
 Check if the argument value is a string of any type.
 
bool isAnyString16 () const
 Check if the argument value is a string of 16-bit characters.
 
bool isAnyString8 () const
 Check if the argument value is a string of 8-bit characters.
 
bool isBool () const
 Check if the argument value is a bool.
 
bool isCharPtr () const
 Check if the argument value is a char* string.
 
bool isChrono () const
 Check if the argument value is a std::chrono::duration value.
 
bool isDouble () const
 Check if the argument value is a double floating point value, either input or output.
 
bool isInteger () const
 Check if the argument value is an integer, either input or output.
 
bool isOutputFloat () const
 Check if the argument value is an output floating point.
 
bool isOutputInteger () const
 Check if the argument value is an output integer.
 
bool isSigned () const
 Check if the argument value is a signed integer, either input or output.
 
bool isString () const
 Check if the argument value is a std::string.
 
bool isUCharPtr () const
 Check if the argument value is a UChar* string.
 
bool isUnsigned () const
 Check if the argument value is an unsigned integer, either input or output.
 
bool isUString () const
 Check if the argument value is a ts::UString.
 
std::intmax_t num () const
 In the case of a std::chrono::duration value, return the numerator of the ratio.
 
size_t size () const
 Get the original integer size in bytes of the argument data.
 
template<typename FLOAT >
requires std::floating_point<FLOAT>
bool storeFloat (FLOAT f) const
 Store a floating point value in the argument data, for pointers to double.
 
template<typename INT >
requires std::integral<INT>
bool storeInteger (INT i) const
 Store an integer value in the argument data, for pointers to integer.
 
const AbstractNumbertoAbstractNumber () const
 Get the argument data value as constant reference to an AbstractNumber instance.
 
bool toBool () const
 Get the argument data value as a bool.
 
const char * toCharPtr () const
 Get the argument data value as a nul-terminated string of 8-bit characters.
 
double toDouble () const
 Get the argument data value as a double floating point value.
 
int32_t toInt32 () const
 Get the argument data value as a 32-bit signed integer.
 
int64_t toInt64 () const
 Get the argument data value as a 64-bit signed integer.
 
template<typename INT >
requires std::integral<INT>
INT toInteger (bool raw=false) const
 Get the argument data value as an integer.
 
const std::string & toString () const
 Get the argument data value as constant reference to a C++ string of 8-bit characters.
 
const UChartoUCharPtr () const
 Get the argument data value as a nul-terminated string of 16-bit characters.
 
uint32_t toUInt32 () const
 Get the argument data value as a 32-bit unsigned integer.
 
uint64_t toUInt64 () const
 Get the argument data value as a 64-bit unsigned integer.
 
const UStringtoUString () const
 Get the argument data value as constant reference to a C++ string of 16-bit characters.
 

Protected Types

enum  : TypeFlags {
  INTEGER = 0x0001 ,
  SIGNED = 0x0002 ,
  STRING = 0x0004 ,
  CLASS = 0x0008 ,
  BIT1 = 0x0010 ,
  BIT8 = 0x0020 ,
  BIT16 = 0x0040 ,
  BIT32 = 0x0080 ,
  BIT64 = 0x0100 ,
  POINTER = 0x0200 ,
  STRINGIFY = 0x0400 ,
  PATH = 0x0800 ,
  DOUBLE = 0x1000 ,
  ANUMBER = 0x2000 ,
  CHRONO = 0x4000
}
 Anonymous enum, used as bitmask. More...
 
using TypeFlags = uint16_t
 Type of an argument, used as bitmask.
 

Static Protected Attributes

static constexpr TypeFlags BITPATH
 Size flag for std::filesystem::path, either BIT8 or BIT16.
 

Detailed Description

Define an element of an argument list with integer output types of mixed sizes.

This class is typically used as element in an std::initializer_list. This mechanism is used by ts::UString::Scan() for instance.

An instance of ArgMixOut references external data. The lifetime of the pointed data must be longer than the ArgMixOut instance. This is the case for a std::initializer_list<ArgMixOut> which is used as parameter to Scan(). But this is not guaranteed in other usages.

Member Enumeration Documentation

◆ anonymous enum

anonymous enum : TypeFlags
protectedinherited

Anonymous enum, used as bitmask.

Enumerator
INTEGER 

Integer type.

SIGNED 

With INTEGER, 1 means signed, 0 means unsigned.

STRING 

String of characters.

CLASS 

With STRING, 1 means std::string or ts::UString, O means const char* or const UChar*.

BIT1 

1-bit integer, ie. bool.

BIT8 

8-bit integer or string of 8-bit characters (char).

BIT16 

16-bit integer or string of 16-bit characters (UChar).

BIT32 

32-bit integer.

BIT64 

64-bit integer.

POINTER 

A pointer to a writeable data (data type is given by other bits).

STRINGIFY 

A pointer to a StringifyInterface object.

PATH 

A pointer to a StringifyInterface object.

DOUBLE 

Double floating point type.

ANUMBER 

A pointer to an AbstractNumber object.

CHRONO 

A instance of std::chrono::duration.

Constructor & Destructor Documentation

◆ ArgMixOut() [1/4]

ts::ArgMixOut::ArgMixOut ( const ArgMixOut other)
inline

Copy constructor.

Parameters
[in]otherOther instance to copy.

◆ ArgMixOut() [2/4]

ts::ArgMixOut::ArgMixOut ( ArgMixOut &&  other)
inlinenoexcept

Move constructor.

Parameters
[in,out]otherOther instance to move.

◆ ArgMixOut() [3/4]

template<typename T >
requires ts::int_enum<T>
ts::ArgMixOut::ArgMixOut ( T *  ptr)
inline

Constructor from the address of an integer or enum data.

Parameters
[in]ptrAddress of an integer or enum data.

◆ ArgMixOut() [4/4]

ts::ArgMixOut::ArgMixOut ( double *  ptr)
inline

Constructor from the address of floating point data.

Parameters
[in]ptrAddress of a double floating point.

Member Function Documentation

◆ isInteger()

bool ts::ArgMix::isInteger ( ) const
inlineinherited

Check if the argument value is an integer, either input or output.

Returns
True if the argument value is an integer.

◆ isOutputInteger()

bool ts::ArgMix::isOutputInteger ( ) const
inlineinherited

Check if the argument value is an output integer.

Returns
True if the argument value is an output integer.

◆ isOutputFloat()

bool ts::ArgMix::isOutputFloat ( ) const
inlineinherited

Check if the argument value is an output floating point.

Returns
True if the argument value is an output integer.

◆ isSigned()

bool ts::ArgMix::isSigned ( ) const
inlineinherited

Check if the argument value is a signed integer, either input or output.

Returns
True if the argument value is a signed integer.

◆ isUnsigned()

bool ts::ArgMix::isUnsigned ( ) const
inlineinherited

Check if the argument value is an unsigned integer, either input or output.

Returns
True if the argument value is an unsigned integer.

◆ isBool()

bool ts::ArgMix::isBool ( ) const
inlineinherited

Check if the argument value is a bool.

Returns
True if the argument value is a bool.

◆ isAnyString()

bool ts::ArgMix::isAnyString ( ) const
inlineinherited

Check if the argument value is a string of any type.

Returns
True if the argument value is a string.

◆ isAnyString8()

bool ts::ArgMix::isAnyString8 ( ) const
inlineinherited

Check if the argument value is a string of 8-bit characters.

Returns
True if the argument value is a string of 8-bit characters (char* or std::string).

◆ isAnyString16()

bool ts::ArgMix::isAnyString16 ( ) const
inlineinherited

Check if the argument value is a string of 16-bit characters.

Returns
True if the argument value is a string of 16-bit characters (UChar* or ts::UString).

◆ isCharPtr()

bool ts::ArgMix::isCharPtr ( ) const
inlineinherited

Check if the argument value is a char* string.

Returns
True if the argument value is a char* string.

◆ isString()

bool ts::ArgMix::isString ( ) const
inlineinherited

Check if the argument value is a std::string.

Returns
True if the argument value is a std::string.

◆ isUCharPtr()

bool ts::ArgMix::isUCharPtr ( ) const
inlineinherited

Check if the argument value is a UChar* string.

Returns
True if the argument value is a UChar* string.

◆ isUString()

bool ts::ArgMix::isUString ( ) const
inlineinherited

Check if the argument value is a ts::UString.

Returns
True if the argument value is a ts::UString.

◆ isDouble()

bool ts::ArgMix::isDouble ( ) const
inlineinherited

Check if the argument value is a double floating point value, either input or output.

Returns
True if the argument value is a double.

◆ isAbstractNumber()

bool ts::ArgMix::isAbstractNumber ( ) const
inlineinherited

Check if the argument value is an AbstractNumber value, either input or output.

Returns
True if the argument value is an AbstractNumber.

◆ isChrono()

bool ts::ArgMix::isChrono ( ) const
inlineinherited

Check if the argument value is a std::chrono::duration value.

Returns
True if the argument value is a std::chrono::duration value.

◆ size()

size_t ts::ArgMix::size ( ) const
inlineinherited

Get the original integer size in bytes of the argument data.

Returns
The original integer size in bytes of the argument data or zero for a string or double.

◆ toInteger()

template<typename INT >
requires std::integral<INT>
INT ts::ArgMix::toInteger ( bool  raw = false) const
inherited

Get the argument data value as an integer.

Template Parameters
INTAn integer type.
Parameters
[in]rawIn the case of fixed-point value, return the integral part when false (the default) and the raw value if true. Ignored for plain integer types.
Returns
The argument data as an integer value of type INT or zero for a string or double.

◆ toInt32()

int32_t ts::ArgMix::toInt32 ( ) const
inlineinherited

Get the argument data value as a 32-bit signed integer.

Returns
The argument data as an integer value or zero for a string or double.

◆ toUInt32()

uint32_t ts::ArgMix::toUInt32 ( ) const
inlineinherited

Get the argument data value as a 32-bit unsigned integer.

Returns
The argument data as an integer value or zero for a string or double.

◆ toInt64()

int64_t ts::ArgMix::toInt64 ( ) const
inlineinherited

Get the argument data value as a 64-bit signed integer.

Returns
The argument data as an integer value or zero for a string or double.

◆ toUInt64()

uint64_t ts::ArgMix::toUInt64 ( ) const
inlineinherited

Get the argument data value as a 64-bit unsigned integer.

Returns
The argument data as an integer value or zero for a string or double.

◆ toBool()

bool ts::ArgMix::toBool ( ) const
inlineinherited

Get the argument data value as a bool.

Returns
The argument data as a bool value or false for a string or double.

◆ toCharPtr()

const char * ts::ArgMix::toCharPtr ( ) const
inherited

Get the argument data value as a nul-terminated string of 8-bit characters.

Returns
Address of the nul-terminated string for CHARPTR or STRING, an empty string for other data types.

◆ toUCharPtr()

const UChar * ts::ArgMix::toUCharPtr ( ) const
inherited

Get the argument data value as a nul-terminated string of 16-bit characters.

Returns
Address of the nul-terminated string for UCHARPTR or USTRING, an empty string for other data types.

◆ toString()

const std::string & ts::ArgMix::toString ( ) const
inherited

Get the argument data value as constant reference to a C++ string of 8-bit characters.

Returns
Reference to the string for STRING, to an empty string for other data types.

◆ toUString()

const UString & ts::ArgMix::toUString ( ) const
inherited

Get the argument data value as constant reference to a C++ string of 16-bit characters.

Returns
Reference to the string for USTRING, to an empty string for other data types.

◆ toDouble()

double ts::ArgMix::toDouble ( ) const
inherited

Get the argument data value as a double floating point value.

Returns
The argument data as a double or zero for a string. Integers are converted to double.

◆ toAbstractNumber()

const AbstractNumber & ts::ArgMix::toAbstractNumber ( ) const
inherited

Get the argument data value as constant reference to an AbstractNumber instance.

Returns
Reference to the AbstractNumber.

◆ num()

std::intmax_t ts::ArgMix::num ( ) const
inlineinherited

In the case of a std::chrono::duration value, return the numerator of the ratio.

The chrono count is obtained using tsInt64().

Returns
The numerator of the ratio for a std::chrono::duration value, zero otherwise.

◆ den()

std::intmax_t ts::ArgMix::den ( ) const
inlineinherited

In the case of a std::chrono::duration value, return the denominator of the ratio.

The chrono count is obtained using tsInt64().

Returns
The denominator of the ratio for a std::chrono::duration value, zero otherwise.

◆ storeInteger()

template<typename INT >
requires std::integral<INT>
bool ts::ArgMix::storeInteger ( INT  i) const
inherited

Store an integer value in the argument data, for pointers to integer.

Template Parameters
INTAn integer type.
Parameters
[in]iThe integer value to store in the argument data.
Returns
True on success, false if the argument data is not a pointer to integer.

◆ storeFloat()

template<typename FLOAT >
requires std::floating_point<FLOAT>
bool ts::ArgMix::storeFloat ( FLOAT  f) const
inherited

Store a floating point value in the argument data, for pointers to double.

Parameters
[in]fThe floating point value to store in the argument data.
Returns
True on success, false if the argument data is not a pointer to double.

Member Data Documentation

◆ BITPATH

constexpr TypeFlags ts::ArgMix::BITPATH
staticconstexprprotectedinherited
Initial value:
=
@ BIT16
16-bit integer or string of 16-bit characters (UChar).
Definition tsArgMix.h:278

Size flag for std::filesystem::path, either BIT8 or BIT16.


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