Tag Parser 12.3.1
C++ library for reading and writing MP4 (iTunes), ID3, Vorbis, Opus, FLAC and Matroska tags
Loading...
Searching...
No Matches
TagParser::MatroskaTag Class Reference

Implementation of TagParser::Tag for the Matroska container. More...

#include <matroskatag.h>

Inheritance diagram for TagParser::MatroskaTag:
[legend]
Collaboration diagram for TagParser::MatroskaTag:
[legend]

Public Member Functions

 MatroskaTag ()
 Constructs a new tag.
 
bool canEncodingBeUsed (TagTextEncoding encoding) const override
 Returns an indication whether the specified encoding can be used to provide string values for the tag.
 
bool supportsTarget () const override
 Returns an indication whether a target is supported by the tag.
 
bool supportsMultipleValues (KnownField field) const override
 Allows multiple values for all fields.
 
TagTargetLevel targetLevel () const override
 Returns the name of the current tag target level.
 
void parse (EbmlElement &tagElement, Diagnostics &diag)
 Parses tag information from the specified tagElement.
 
void parse2 (EbmlElement &tagElement, MatroskaTagFlags flags, Diagnostics &diag)
 Parses tag information from the specified tagElement.
 
MatroskaTagMaker prepareMaking (Diagnostics &diag)
 Prepares making.
 
void make (std::ostream &stream, Diagnostics &diag)
 Writes tag information to the specified stream (makes a "Tag"-element).
 
- Public Member Functions inherited from TagParser::FieldMapBasedTag< MatroskaTag >
 FieldMapBasedTag ()
 Constructs a new FieldMapBasedTag.
 
TagType type () const
 Returns the type of the tag as TagParser::TagType.
 
std::string_view typeName () const
 Returns the type name of the tag as C-style string.
 
TagTextEncoding proposedTextEncoding () const
 Returns the proposed text encoding.
 
const TagValuevalue (const IdentifierType &id) const
 Returns the value of the field with the specified id.
 
const TagValuevalue (KnownField field) const
 Returns the value of the specified field.
 
std::vector< const TagValue * > values (const IdentifierType &id) const
 Returns the values of the field with the specified id.
 
std::vector< const TagValue * > values (KnownField field) const
 Returns the values of the specified field.
 
bool setValue (const IdentifierType &id, const TagValue &value)
 Assigns the given value to the field with the specified id.
 
bool setValue (KnownField field, const TagValue &value)
 Assigns the given value to the specified field.
 
bool setValues (const IdentifierType &id, const std::vector< TagValue > &values)
 Assigns the given values to the field with the specified id.
 
bool setValues (KnownField field, const std::vector< TagValue > &values)
 Assigns the given values to the field with the specified id.
 
bool hasField (KnownField field) const
 Returns an indication whether the specified field is present.
 
bool hasField (const IdentifierType &id) const
 Returns an indication whether the field with the specified id is present.
 
void removeAllFields ()
 Removes all fields from the tag.
 
const std::multimap< IdentifierType, FieldType, Compare > & fields () const
 Returns the fields of the tag by providing direct access to the field map of the tag.
 
std::multimap< IdentifierType, FieldType, Compare > & fields ()
 Returns the fields of the tag by providing direct access to the field map of the tag.
 
std::size_t fieldCount () const
 Returns the number of present fields.
 
IdentifierType fieldId (KnownField value) const
 Returns the ID for the specified field.
 
KnownField knownField (const IdentifierType &id) const
 Returns the field for the specified ID.
 
bool supportsField (KnownField field) const
 Returns an indication whether the specified field is supported by the tag.
 
TagDataType proposedDataType (const IdentifierType &id) const
 Returns the proposed data type for the field with the specified id.
 
virtual TagDataType proposedDataType (KnownField field) const
 Returns the proposed data type for the specified field as TagDataType.
 
std::size_t insertFields (const FieldMapBasedTag< MatroskaTag > &from, bool overwrite)
 Inserts all fields from another tag of the same field type and compare function.
 
std::size_t insertValues (const Tag &from, bool overwrite)
 Inserts all compatible values from another Tag.
 
void ensureTextValuesAreProperlyEncoded ()
 Ensures the encoding of all assigned text values is supported by the tag by converting the character set if necessary.
 
- Public Member Functions inherited from TagParser::Tag
virtual ~Tag ()
 Destroys the Tag.
 
std::string toString () const
 Returns a string representation of the tag.
 
const std::string & version () const
 Returns the version of the tag as std::string.
 
std::uint64_t size () const
 Returns the size the tag within the file it is parsed from in bytes.
 
const TagTargettarget () const
 
TagTargettarget ()
 Returns the target of tag.
 
void setTarget (const TagTarget &target)
 Sets the target of tag.
 
std::string_view targetLevelName () const
 Returns the name of the current target level.
 
bool isTargetingLevel (TagTargetLevel tagTargetLevel) const
 Returns whether the tag is targeting the specified tagTargetLevel.
 
std::string targetString () const
 Returns the string representation for the assigned tag target.
 
virtual bool supportsDescription (KnownField field) const
 Returns an indications whether the specified field supports descriptions.
 
virtual bool supportsMimeType (KnownField field) const
 Returns an indications whether the specified field supports mime types.
 

Static Public Attributes

static constexpr TagType tagType = TagType::MatroskaTag
 
static constexpr std::string_view tagName = "Matroska tag"
 
static constexpr TagTextEncoding defaultTextEncoding = TagTextEncoding::Utf8
 

Protected Member Functions

IdentifierType internallyGetFieldId (KnownField field) const
 
KnownField internallyGetKnownField (const IdentifierType &id) const
 
- Protected Member Functions inherited from TagParser::FieldMapBasedTag< MatroskaTag >
const TagValueinternallyGetValue (const IdentifierType &id) const
 Default implementation for value().
 
void internallyGetValuesFromField (const FieldType &field, std::vector< const TagValue * > &values) const
 Default way to gather values from a field in internallyGetValues().
 
std::vector< const TagValue * > internallyGetValues (const IdentifierType &id) const
 Default implementation for values().
 
bool internallySetValue (const IdentifierType &id, const TagValue &value)
 Default implementation for setValue().
 
bool internallySetValues (const IdentifierType &id, const std::vector< TagValue > &values)
 Default implementation for setValues().
 
bool internallyHasField (const IdentifierType &id) const
 Default implementation for hasField().
 
TagDataType internallyGetProposedDataType (const IdentifierType &id) const
 Default implementation for proposedDataType().
 
- Protected Member Functions inherited from TagParser::Tag
 Tag ()
 Constructs a new Tag.
 

Friends

class FieldMapBasedTag< MatroskaTag >
 

Additional Inherited Members

- Public Types inherited from TagParser::FieldMapBasedTag< MatroskaTag >
using FieldType
 
using IdentifierType
 
using Compare
 
- Protected Types inherited from TagParser::FieldMapBasedTag< MatroskaTag >
using CRTPBase
 
- Protected Attributes inherited from TagParser::Tag
std::string m_version
 
std::uint64_t m_size
 
std::unique_ptr< TagPrivatem_p
 
TagTarget m_target
 

Detailed Description

Implementation of TagParser::Tag for the Matroska container.

Constructor & Destructor Documentation

◆ MatroskaTag()

TagParser::MatroskaTag::MatroskaTag ( )
inline

Constructs a new tag.

Definition at line 102 of file matroskatag.h.

Member Function Documentation

◆ canEncodingBeUsed()

bool TagParser::MatroskaTag::canEncodingBeUsed ( TagTextEncoding encoding) const
inlineoverridevirtual

Returns an indication whether the specified encoding can be used to provide string values for the tag.

Only the proposedTextEncoding() is accepted by default. This might be overwritten when subclassing.

The tag class and its subclasses do not perform any conversions. You have to provide all string values using an encoding which is appropriate for the specific tag type. This method is meant to determine if a particular encoding can be used.

See also
canEncodingBeUsed()

Reimplemented from TagParser::Tag.

Definition at line 153 of file matroskatag.h.

◆ internallyGetFieldId()

MatroskaTag::IdentifierType TagParser::MatroskaTag::internallyGetFieldId ( KnownField field) const
protected

Definition at line 20 of file matroskatag.cpp.

◆ internallyGetKnownField()

KnownField TagParser::MatroskaTag::internallyGetKnownField ( const IdentifierType & id) const
protected

Definition at line 211 of file matroskatag.cpp.

◆ make()

void TagParser::MatroskaTag::make ( std::ostream & stream,
Diagnostics & diag )
inline

Writes tag information to the specified stream (makes a "Tag"-element).

Exceptions
Throwsstd::ios_base::failure when an IO error occurs.
ThrowsTagParser::Failure or a derived exception when a making error occurs.
See also
prepareMaking()

Definition at line 148 of file matroskatag.h.

◆ parse()

void TagParser::MatroskaTag::parse ( EbmlElement & tagElement,
Diagnostics & diag )

Parses tag information from the specified tagElement.

Exceptions
Throwsstd::ios_base::failure when an IO error occurs.
ThrowsTagParser::Failure or a derived exception when a parsing error occurs.

Definition at line 317 of file matroskatag.cpp.

◆ parse2()

void TagParser::MatroskaTag::parse2 ( EbmlElement & tagElement,
MatroskaTagFlags flags,
Diagnostics & diag )

Parses tag information from the specified tagElement.

Exceptions
Throwsstd::ios_base::failure when an IO error occurs.
ThrowsTagParser::Failure or a derived exception when a parsing error occurs.

Definition at line 329 of file matroskatag.cpp.

◆ prepareMaking()

MatroskaTagMaker TagParser::MatroskaTag::prepareMaking ( Diagnostics & diag)
inline

Prepares making.

Returns
Returns a MatroskaTagMaker object which can be used to actually make the tag.
Remarks
The tag must NOT be mutated after making is prepared when it is intended to actually make the tag using the make() method of the returned object.
Exceptions
ThrowsTagParser::Failure or a derived exception when a making error occurs.

This method might be useful when it is necessary to know the size of the tag before making it.

See also
make()

Definition at line 136 of file matroskatag.h.

◆ supportsMultipleValues()

bool TagParser::MatroskaTag::supportsMultipleValues ( KnownField field) const
inlineoverridevirtual

Allows multiple values for all fields.

Remarks
"Multiple items should never be stored as a list in a single TagString. If there is more than one tag of a certain type to be stored, then more than one SimpleTag should be used."

Reimplemented from TagParser::Tag.

Definition at line 116 of file matroskatag.h.

◆ supportsTarget()

bool TagParser::MatroskaTag::supportsTarget ( ) const
inlineoverridevirtual

Returns an indication whether a target is supported by the tag.

If no target is supported, setting a target using setTarget() has no effect when saving the tag.

Most tag types don't support this feature so the default implementation returns always false. This might be overwritten when subclassing.

Reimplemented from TagParser::Tag.

Definition at line 106 of file matroskatag.h.

◆ targetLevel()

TagTargetLevel TagParser::MatroskaTag::targetLevel ( ) const
inlineoverridevirtual

Returns the name of the current tag target level.

Remarks
Returns TagTargetLevel::Unspecified if target levels are not supported by the tag.

Reimplemented from TagParser::Tag.

Definition at line 121 of file matroskatag.h.

Friends And Related Symbol Documentation

◆ FieldMapBasedTag< MatroskaTag >

friend class FieldMapBasedTag< MatroskaTag >
friend

Definition at line 44 of file matroskatag.h.

Member Data Documentation

◆ defaultTextEncoding

TagTextEncoding TagParser::MatroskaTag::defaultTextEncoding = TagTextEncoding::Utf8
staticconstexpr

Definition at line 80 of file matroskatag.h.

◆ tagName

std::string_view TagParser::MatroskaTag::tagName = "Matroska tag"
staticconstexpr

Definition at line 79 of file matroskatag.h.

◆ tagType

TagType TagParser::MatroskaTag::tagType = TagType::MatroskaTag
staticconstexpr

Definition at line 78 of file matroskatag.h.


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