Tag Parser: TagParser::MatroskaTag Class Reference

Tag Parser 12.5.3 C++ library for reading and writing MP4 (iTunes), ID3, Vorbis, Opus, FLAC and Matroska tags

Loading...
Searching...
No Matches
Public Member Functions | Static Public Attributes | Protected Member Functions | Friends | List of all members
TagParser::MatroskaTag Class Referencefinal

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 >
virtual TagDataType | proposedDataType (KnownField field) const
| Returns the proposed data type for the specified field as TagDataType.
| 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.
TagTextEncoding | proposedTextEncoding () const
| Returns the proposed text encoding.
const TagValue & | value (const IdentifierType &id) const
| Returns the value of the field with the specified id.
std::vector< const TagValue * > | values (const IdentifierType &id) const
| Returns the values of the field with the specified id.
bool | setValue (const IdentifierType &id, const TagValue &value)
| Assigns the given value to the field with the specified id.
bool | setValues (const IdentifierType &id, 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.
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::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.
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.
virtual const TagValue & | value (KnownField field) const =0
| Returns the value of the specified field.
virtual std::vector< const TagValue * > | values (KnownField field) const
| Returns the values of the specified field.
virtual bool | setValue (KnownField field, const TagValue &value)=0
| Assigns the given value to the specified field.
virtual bool | setValues (KnownField field, const std::vector< TagValue > &values)
| Assigns the given values to the specified field.
const std::string & | version () const
| Returns the version of the tag.
std::uint64_t | size () const
| Returns the size the tag within the file it is parsed from in bytes.
const TagTarget & | target () const
TagTarget & | target ()
| 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 TagValue & | internallyGetValue (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< TagPrivate > | m_p
TagTarget | m_target

## Detailed Description

Implementation of TagParser::Tag for the Matroska container.

Definition at line 72 of file matroskatag.h.

## 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

  Throws | std::ios_base::failure when an IO error occurs.
  Throws | TagParser::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

  Throws | std::ios_base::failure when an IO error occurs.
  Throws | TagParser::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

  Throws | std::ios_base::failure when an IO error occurs.
  Throws | TagParser::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

  Throws | TagParser::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:

- matroska/matroskatag.h
- matroska/matroskatag.cpp