TSDuck Version 3.32-2780 (TSDuck - The MPEG Transport Stream Toolkit)
ts::Charset Class Referenceabstract

Definition of a character set for PSI/SI encoding. More...

Inheritance diagram for ts::Charset:

Classes

class  DuplicateCharset
 Exception thrown when registering duplicate charsets. More...
 
class  InvalidCharset
 Exception thrown when registering invalid charsets. More...
 

Public Member Functions

virtual ~Charset ()
 Virtual destructor.
 
virtual bool canEncode (const UString &str, size_t start=0, size_t count=NPOS) const =0
 Check if a string can be encoded using the charset (ie all characters can be represented). More...
 
virtual bool decode (UString &str, const uint8_t *data, size_t size) const =0
 Decode a string from the specified byte buffer. More...
 
UString decoded (const uint8_t *data, size_t size) const
 Decode a string from the specified byte buffer and return a UString. More...
 
UString decodedWithByteLength (const uint8_t *&data, size_t &size) const
 Decode a string (preceded by its one-byte length) from the specified byte buffer. More...
 
bool decodeWithByteLength (UString &str, const uint8_t *&data, size_t &size) const
 Decode a string (preceded by its one-byte length) from the specified byte buffer. More...
 
virtual size_t encode (uint8_t *&buffer, size_t &size, const UString &str, size_t start=0, size_t count=NPOS) const =0
 Encode a C++ Unicode string. More...
 
ByteBlock encoded (const UString &str, size_t start=0, size_t count=NPOS) const
 Encode a C++ Unicode string as a ByteBlock. More...
 
ByteBlock encodedWithByteLength (const UString &str, size_t start=0, size_t count=NPOS) const
 Encode a C++ Unicode string as a ByteBlock (preceded by its one-byte length). More...
 
size_t encodeWithByteLength (uint8_t *&buffer, size_t &size, const UString &str, size_t start=0, size_t count=NPOS) const
 Encode a C++ Unicode string preceded by its one-byte length. More...
 
UString name () const
 Get the character set name. More...
 
virtual void unregister () const
 Unregister the character set from the repository of character sets. More...
 

Static Public Member Functions

static UStringList GetAllNames ()
 Find all registered character set names. More...
 
static const CharsetGetCharset (const UString &name)
 Get a character set by name. More...
 

Protected Member Functions

 Charset (const UChar *name=nullptr)
 Protected constructor, registering the character set under one name. More...
 
 Charset (std::initializer_list< const UChar * > names)
 Protected constructor, registering the character set under any number of names. More...
 

Detailed Description

Definition of a character set for PSI/SI encoding.

Constructor & Destructor Documentation

◆ Charset() [1/2]

ts::Charset::Charset ( const UChar name = nullptr)
explicitprotected

Protected constructor, registering the character set under one name.

Parameters
[in]nameCharacter set name.

◆ Charset() [2/2]

ts::Charset::Charset ( std::initializer_list< const UChar * >  names)
explicitprotected

Protected constructor, registering the character set under any number of names.

Parameters
[in]namesCharacter set names. The first one is the "main" name.

Member Function Documentation

◆ name()

UString ts::Charset::name ( ) const
inline

Get the character set name.

Returns
The name.

◆ GetCharset()

static const Charset* ts::Charset::GetCharset ( const UString name)
static

Get a character set by name.

Parameters
[in]nameName of the requested character set.
Returns
Address of the character set or zero if not found.

◆ GetAllNames()

static UStringList ts::Charset::GetAllNames ( )
static

Find all registered character set names.

Returns
List of all registered names.

◆ decode()

virtual bool ts::Charset::decode ( UString str,
const uint8_t *  data,
size_t  size 
) const
pure virtual

Decode a string from the specified byte buffer.

Parameters
[out]strReturned decoded string.
[in]dataAddress of an encoded string.
[in]sizeSize in bytes of the encoded string.
Returns
True on success, false on error (truncated, unsupported format, etc.)

Implemented in ts::DVBCharTableUTF8, ts::DVBCharTableUTF16, ts::DVBCharTableSingleByte, ts::DVBCharset, ts::DumpCharset, and ts::ARIBCharset.

◆ decoded()

UString ts::Charset::decoded ( const uint8_t *  data,
size_t  size 
) const

Decode a string from the specified byte buffer and return a UString.

Errors (truncation, unsupported format, etc) are ignored.

Parameters
[in]dataAddress of an encoded string.
[in]sizeSize in bytes of the encoded string.
Returns
The decoded string.

◆ decodeWithByteLength()

bool ts::Charset::decodeWithByteLength ( UString str,
const uint8_t *&  data,
size_t &  size 
) const

Decode a string (preceded by its one-byte length) from the specified byte buffer.

Parameters
[out]strReturned decoded string.
[in,out]dataAddress of an encoded string. The address is updated to point after the decoded value.
[in,out]sizeSize of the buffer. Updated to remaining size.
Returns
True on success, false on error (truncated, unsupported format, etc.)

◆ decodedWithByteLength()

UString ts::Charset::decodedWithByteLength ( const uint8_t *&  data,
size_t &  size 
) const

Decode a string (preceded by its one-byte length) from the specified byte buffer.

Errors (truncation, unsupported format, etc) are ignored.

Parameters
[in,out]dataAddress of an encoded string. The address is updated to point after the decoded value.
[in,out]sizeSize of the buffer. Updated to remaining size.
Returns
The decoded string.

◆ canEncode()

virtual bool ts::Charset::canEncode ( const UString str,
size_t  start = 0,
size_t  count = NPOS 
) const
pure virtual

Check if a string can be encoded using the charset (ie all characters can be represented).

Parameters
[in]strThe string to encode.
[in]startStarting offset in str.
[in]countMaximum number of characters to encode.
Returns
True if all characters can be encoded.

Implemented in ts::DVBCharTableUTF8, ts::DVBCharTableUTF16, ts::DVBCharTableSingleByte, ts::DVBCharset, ts::DumpCharset, and ts::ARIBCharset.

◆ encode()

virtual size_t ts::Charset::encode ( uint8_t *&  buffer,
size_t &  size,
const UString str,
size_t  start = 0,
size_t  count = NPOS 
) const
pure virtual

Encode a C++ Unicode string.

Unrepresentable characters are skipped. Stop either when the specified number of characters are serialized or when the buffer is full, whichever comes first.

Parameters
[in,out]bufferAddress of the buffer. The address is updated to point after the encoded value.
[in,out]sizeSize of the buffer. Updated to remaining size.
[in]strThe string to encode.
[in]startStarting offset in str.
[in]countMaximum number of characters to encode.
Returns
The number of serialized characters (which is usually not the same as the number of written bytes).

Implemented in ts::DVBCharTableUTF8, ts::DVBCharTableUTF16, ts::DVBCharTableSingleByte, ts::DVBCharset, ts::DumpCharset, and ts::ARIBCharset.

◆ encodeWithByteLength()

size_t ts::Charset::encodeWithByteLength ( uint8_t *&  buffer,
size_t &  size,
const UString str,
size_t  start = 0,
size_t  count = NPOS 
) const

Encode a C++ Unicode string preceded by its one-byte length.

Unrepresentable characters are skipped. Stop either when the specified number of characters are serialized or when the buffer is full, whichever comes first.

Parameters
[in,out]bufferAddress of the buffer. The address is updated to point after the encoded value.
[in,out]sizeSize of the buffer. Updated to remaining size.
[in]strThe string to encode.
[in]startStarting offset in str.
[in]countMaximum number of characters to encode.
Returns
The number of serialized characters (which is usually not the same as the number of written bytes).

◆ encoded()

ByteBlock ts::Charset::encoded ( const UString str,
size_t  start = 0,
size_t  count = NPOS 
) const

Encode a C++ Unicode string as a ByteBlock.

Unrepresentable characters are skipped.

Parameters
[in]strThe string to encode.
[in]startStarting offset in str.
[in]countMaximum number of characters to encode.
Returns
A ByteBlock containing the encoded string.

◆ encodedWithByteLength()

ByteBlock ts::Charset::encodedWithByteLength ( const UString str,
size_t  start = 0,
size_t  count = NPOS 
) const

Encode a C++ Unicode string as a ByteBlock (preceded by its one-byte length).

Unrepresentable characters are skipped.

Parameters
[in]strThe string to encode.
[in]startStarting offset in str.
[in]countMaximum number of characters to encode.
Returns
A ByteBlock containing the encoded string.

◆ unregister()

virtual void ts::Charset::unregister ( ) const
virtual

Unregister the character set from the repository of character sets.

This is done automatically when the object is destructed. Can be called earlier to make sure a character set is no longer referenced.

Reimplemented in ts::DVBCharTable.


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