TSDuck Version 3.19-1374 (TSDuck - The MPEG Transport Stream Toolkit)
ts::ArgMixIn Class Reference

Define an element of an argument list with mixed integer and string input types. More...

Inheritance diagram for ts::ArgMixIn:
Collaboration diagram for ts::ArgMixIn:

Public Member Functions

 ArgMixIn ()
 Default constructor.
 
 ArgMixIn (const ArgMixIn &other)
 Copy constructor. More...
 
 ArgMixIn (ArgMixIn &&other) noexcept
 Move constructor. More...
 
 ArgMixIn (const char *s)
 Constructor from a nul-terminated string of 8-bit characters. More...
 
 ArgMixIn (const UChar *s)
 Constructor from a nul-terminated string of 16-bit characters. More...
 
 ArgMixIn (const std::string &s)
 Constructor from a C++ string of 8-bit characters. More...
 
 ArgMixIn (const UString &s)
 Constructor from a C++ string of 16-bit characters. More...
 
 ArgMixIn (const StringifyInterface &s)
 Constructor from a stringifiable object. More...
 
 ArgMixIn (bool b)
 Constructor from a bool. More...
 
 ArgMixIn (double d)
 Constructor from a double. More...
 
template<typename T , typename std::enable_if< std::is_integral< T >::value||std::is_enum< T >::value >::type * = nullptr>
 ArgMixIn (T i)
 Constructor from an integer or enum type. More...
 
bool isAnyString () const
 Check if the argument value is a string of any type. More...
 
bool isAnyString16 () const
 Check if the argument value is a string of 16-bit characters. More...
 
bool isAnyString8 () const
 Check if the argument value is a string of 8-bit characters. More...
 
bool isBool () const
 Check if the argument value is a bool. More...
 
bool isCharPtr () const
 Check if the argument value is a char* string. More...
 
bool isDouble () const
 Check if the argument value is a double floating point value, either input or output. More...
 
bool isInteger () const
 Check if the argument value is an integer, either input or output. More...
 
bool isOutputInteger () const
 Check if the argument value is an output integer. More...
 
bool isSigned () const
 Check if the argument value is a signed integer, either input or output. More...
 
bool isString () const
 Check if the argument value is a std::string. More...
 
bool isUCharPtr () const
 Check if the argument value is a UChar* string. More...
 
bool isUnsigned () const
 Check if the argument value is an unsigned integer, either input or output. More...
 
bool isUString () const
 Check if the argument value is a ts::UString. More...
 
size_t size () const
 Get the original integer size in bytes of the argument data. More...
 
template<typename INT , typename std::enable_if< std::is_integral< INT >::value >::type * = nullptr>
bool storeInteger (INT i) const
 Store an integer value in the argument data, for pointers to integer. More...
 
bool toBool () const
 Get the argument data value as a bool. More...
 
const char * toCharPtr () const
 Get the argument data value as a nul-terminated string of 8-bit characters. More...
 
double toDouble () const
 Get the argument data value as a double floating point value. More...
 
int32_t toInt32 () const
 Get the argument data value as a 32-bit signed integer. More...
 
int64_t toInt64 () const
 Get the argument data value as a 64-bit signed integer. More...
 
template<typename INT , typename std::enable_if< std::is_integral< INT >::value >::type * = nullptr>
INT toInteger () const
 Get the argument data value as an integer. More...
 
const std::string & toString () const
 Get the argument data value as constant reference to a C++ string of 8-bit characters. More...
 
const UChartoUCharPtr () const
 Get the argument data value as a nul-terminated string of 16-bit characters. More...
 
uint32_t toUInt32 () const
 Get the argument data value as a 32-bit unsigned integer. More...
 
uint64_t toUInt64 () const
 Get the argument data value as a 64-bit unsigned integer. More...
 
const UStringtoUString () const
 Get the argument data value as constant reference to a C++ string of 16-bit characters. More...
 

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,
  DOUBLE = 0x0800
}
 Anonymous enum, used as bitmask. More...
 
typedef uint16_t TypeFlags
 Type of an argument, used as bitmask.
 

Detailed Description

Define an element of an argument list with mixed integer and string input types.

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

An instance of ArgMixIn may reference external data. The lifetime of the pointed data must be longer than the ArgMixIn instance. This is the case for a std::initializer_list<ArgMixIn> which is used as parameter to Format(). 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.

DOUBLE 

Double floating point type.

Constructor & Destructor Documentation

◆ ArgMixIn() [1/10]

ts::ArgMixIn::ArgMixIn ( const ArgMixIn other)
inline

Copy constructor.

Parameters
[in]otherOther instance to copy.

◆ ArgMixIn() [2/10]

ts::ArgMixIn::ArgMixIn ( ArgMixIn &&  other)
inlinenoexcept

Move constructor.

Parameters
[in,out]otherOther instance to move.

◆ ArgMixIn() [3/10]

ts::ArgMixIn::ArgMixIn ( const char *  s)
inline

Constructor from a nul-terminated string of 8-bit characters.

Parameters
[in]sAddress of nul-terminated string.

◆ ArgMixIn() [4/10]

ts::ArgMixIn::ArgMixIn ( const UChar s)
inline

Constructor from a nul-terminated string of 16-bit characters.

Parameters
[in]sAddress of nul-terminated string.

◆ ArgMixIn() [5/10]

ts::ArgMixIn::ArgMixIn ( const std::string &  s)
inline

Constructor from a C++ string of 8-bit characters.

Parameters
[in]sReference to a C++ string.

◆ ArgMixIn() [6/10]

ts::ArgMixIn::ArgMixIn ( const UString s)
inline

Constructor from a C++ string of 16-bit characters.

Parameters
[in]sReference to a C++ string.

◆ ArgMixIn() [7/10]

ts::ArgMixIn::ArgMixIn ( const StringifyInterface s)
inline

Constructor from a stringifiable object.

Parameters
[in]sReference to a stringifiable object.

◆ ArgMixIn() [8/10]

ts::ArgMixIn::ArgMixIn ( bool  b)
inline

Constructor from a bool.

Parameters
[in]bBoolean value.

◆ ArgMixIn() [9/10]

ts::ArgMixIn::ArgMixIn ( double  d)
inline

Constructor from a double.

Parameters
[in]ddouble value.

◆ ArgMixIn() [10/10]

template<typename T , typename std::enable_if< std::is_integral< T >::value||std::is_enum< T >::value >::type * = nullptr>
ts::ArgMixIn::ArgMixIn ( i)
inline

Constructor from an integer or enum type.

Parameters
[in]iInteger value of the ArgMix. Internally stored as a 32-bit or 64-bit integer.

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.

◆ 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.

◆ 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 , typename std::enable_if< std::is_integral< INT >::value >::type * = nullptr>
INT ts::ArgMix::toInteger ( ) const
inherited

Get the argument data value as an integer.

Template Parameters
INTAn integer type.
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.

◆ storeInteger()

template<typename INT , typename std::enable_if< std::is_integral< INT >::value >::type * = nullptr>
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.

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