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

#include <tsArgMix.h>

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

Public Member Functions

 ArgMixOut ()=default
 ArgMixOut (ArgMixOut &&other) noexcept
 ArgMixOut (const ArgMixOut &other)
 ArgMixOut (double *ptr)
template<typename T>
requires ts::int_enum<T>
 ArgMixOut (T *ptr)
std::intmax_t den () const
bool isAbstractNumber () const
bool isAnyString () const
bool isAnyString16 () const
bool isAnyString8 () const
bool isBool () const
bool isCharPtr () const
bool isChrono () const
bool isDouble () const
bool isInteger () const
bool isOutputFloat () const
bool isOutputInteger () const
bool isSigned () const
bool isString () const
bool isUCharPtr () const
bool isUnsigned () const
bool isUString () const
std::intmax_t num () const
size_t size () const
template<typename FLOAT>
requires std::floating_point<FLOAT>
bool storeFloat (FLOAT f) const
template<typename INT>
requires std::integral<INT>
bool storeInteger (INT i) const
const AbstractNumber & toAbstractNumber () const
bool toBool () const
const char * toCharPtr () const
double toDouble () const
int32_t toInt32 () const
int64_t toInt64 () const
template<typename INT>
requires std::integral<INT>
INT toInteger (bool raw=false) const
const std::string & toString () const
const UChar * toUCharPtr () const
uint32_t toUInt32 () const
uint64_t toUInt64 () const
const UString & toUString () const

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
}
using TypeFlags = uint16_t

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 Typedef Documentation

◆ TypeFlags

using ts::ArgMix::TypeFlags = uint16_t
protectedinherited

Type of an argument, used as bitmask.

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 std::filesystem::path 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/5]

ts::ArgMixOut::ArgMixOut ( )
default

Default constructor.

◆ ArgMixOut() [2/5]

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

Copy constructor.

Parameters
[in]otherOther instance to copy.

◆ ArgMixOut() [3/5]

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

Move constructor.

Parameters
[in,out]otherOther instance to move.

◆ ArgMixOut() [4/5]

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() [5/5]

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.

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