Tag Parser  9.1.2
C++ library for reading and writing MP4 (iTunes), ID3, Vorbis, Opus, FLAC and Matroska tags
Public Member Functions | Static Public Attributes | Protected Member Functions | Friends | List of all members
TagParser::VorbisComment Class Reference

Implementation of TagParser::Tag for Vorbis comments. More...

#include <vorbiscomment.h>

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

Public Member Functions

 VorbisComment ()
 Constructs a new Vorbis comment. More...
 
bool canEncodingBeUsed (TagTextEncoding encoding) const override
 Returns an indication whether the specified encoding can be used to provide string values for the tag. More...
 
const TagValuevalue (KnownField field) const override
 Returns the value of the specified field. More...
 
bool setValue (KnownField field, const TagValue &value) override
 Assigns the given value to the specified field. More...
 
void parse (OggIterator &iterator, VorbisCommentFlags flags, Diagnostics &diag)
 Parses tag information using the specified OGG iterator. More...
 
void parse (std::istream &stream, std::uint64_t maxSize, VorbisCommentFlags flags, Diagnostics &diag)
 Parses tag information using the specified OGG iterator. More...
 
void make (std::ostream &stream, VorbisCommentFlags flags, Diagnostics &diag)
 Writes tag information to the specified stream. More...
 
const TagValuevendor () const
 Returns the vendor. More...
 
void setVendor (const TagValue &vendor)
 Sets the vendor. More...
 
bool supportsMultipleValues (KnownField) const override
 Allows multiple values for all fields. More...
 
- Public Member Functions inherited from TagParser::FieldMapBasedTag< VorbisComment >
 FieldMapBasedTag ()
 Constructs a new FieldMapBasedTag. More...
 
TagType type () const
 Returns the type of the tag as TagParser::TagType. More...
 
const char * typeName () const
 Returns the type name of the tag as C-style string. More...
 
TagTextEncoding proposedTextEncoding () const
 Returns the proposed text encoding. More...
 
const TagValuevalue (const IdentifierType &id) const
 Returns the value of the field with the specified id. More...
 
const TagValuevalue (KnownField field) const
 Returns the value of the specified field. More...
 
std::vector< const TagValue * > values (const IdentifierType &id) const
 Returns the values of the field with the specified id. More...
 
std::vector< const TagValue * > values (KnownField field) const
 Returns the values of the specified field. More...
 
bool setValue (const IdentifierType &id, const TagValue &value)
 Assigns the given value to the field with the specified id. More...
 
bool setValue (KnownField field, const TagValue &value)
 Assigns the given value to the specified field. More...
 
bool setValues (const IdentifierType &id, const std::vector< TagValue > &values)
 Assigns the given values to the field with the specified id. More...
 
bool setValues (KnownField field, const std::vector< TagValue > &values)
 Assigns the given values to the field with the specified id. More...
 
bool hasField (KnownField field) const
 Returns an indication whether the specified field is present. More...
 
bool hasField (const IdentifierType &id) const
 Returns an indication whether the field with the specified id is present. More...
 
void removeAllFields ()
 Removes all fields from the tag. More...
 
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. More...
 
std::multimap< IdentifierType, FieldType, Compare > & fields ()
 
unsigned int fieldCount () const
 Returns the number of present fields. More...
 
IdentifierType fieldId (KnownField value) const
 Returns the ID for the specified field. More...
 
KnownField knownField (const IdentifierType &id) const
 Returns the field for the specified ID. More...
 
bool supportsField (KnownField field) const
 Returns an indication whether the specified field is supported by the tag. More...
 
TagDataType proposedDataType (const IdentifierType &id) const
 Returns the proposed data type for the field with the specified id. More...
 
virtual TagDataType proposedDataType (KnownField field) const
 Returns the proposed data type for the specified field as TagDataType. More...
 
int insertFields (const FieldMapBasedTag< VorbisComment > &from, bool overwrite)
 Inserts all fields from another tag of the same field type and compare function. More...
 
unsigned int insertValues (const Tag &from, bool overwrite)
 Inserts all compatible values from another Tag. More...
 
void ensureTextValuesAreProperlyEncoded ()
 Ensures the encoding of all assigned text values is supported by the tag by converting the character set if neccessary. More...
 
- Public Member Functions inherited from TagParser::Tag
virtual ~Tag ()
 Destroys the Tag. More...
 
virtual TagType type () const
 Returns the type of the tag as TagParser::TagType. More...
 
virtual const char * typeName () const
 Returns the type name of the tag as C-style string. More...
 
std::string toString () const
 Returns a string representation of the tag. More...
 
virtual TagTextEncoding proposedTextEncoding () const
 Returns the proposed text encoding. More...
 
const std::string & version () const
 Returns the version of the tag as std::string. The version denotation depends on the tag type. More...
 
std::uint32_t size () const
 Returns the size of the tag in bytes. The tag needs to be parsed before. More...
 
virtual bool supportsTarget () const
 Returns an indication whether a target is supported by the tag. More...
 
const TagTargettarget () const
 Returns the target of tag. More...
 
void setTarget (const TagTarget &target)
 Sets the target of tag. More...
 
virtual TagTargetLevel targetLevel () const
 Returns the name of the current tag target level. More...
 
const char * targetLevelName () const
 Returns the name of the current target level. More...
 
bool isTargetingLevel (TagTargetLevel tagTargetLevel) const
 Returns whether the tag is targeting the specified tagTargetLevel. More...
 
std::string targetString () const
 Returns the string representation for the assigned tag target. More...
 
virtual unsigned int fieldCount () const =0
 Returns the number of present fields. More...
 
virtual TagDataType proposedDataType (KnownField field) const
 Returns the proposed data type for the specified field as TagDataType. More...
 
virtual bool supportsDescription (KnownField field) const
 Returns an indications whether the specified field supports descriptions. More...
 
virtual bool supportsMimeType (KnownField field) const
 Returns an indications whether the specified field supports mime types. More...
 

Static Public Attributes

static constexpr TagType tagType = TagType::VorbisComment
 
static constexpr const char * tagName = "Vorbis comment"
 
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< VorbisComment >
const TagValueinternallyGetValue (const IdentifierType &id) const
 Default implementation for value(). More...
 
std::vector< const TagValue * > internallyGetValues (const IdentifierType &id) const
 Default implementation for values(). More...
 
bool internallySetValue (const IdentifierType &id, const TagValue &value)
 Default implementation for setValue(). More...
 
bool internallySetValues (const IdentifierType &id, const std::vector< TagValue > &values)
 Default implementation for setValues(). More...
 
bool internallyHasField (const IdentifierType &id) const
 Default implementation for hasField(). More...
 
TagDataType internallyGetProposedDataType (const IdentifierType &id) const
 Default implementation for proposedDataType(). More...
 
- Protected Member Functions inherited from TagParser::Tag
 Tag ()
 Constructs a new Tag. More...
 

Friends

class FieldMapBasedTag< VorbisComment >
 

Additional Inherited Members

- Public Types inherited from TagParser::FieldMapBasedTag< VorbisComment >
using FieldType = typename FieldMapBasedTagTraits< VorbisComment >::FieldType
 
using IdentifierType = typename FieldMapBasedTagTraits< VorbisComment >::FieldType::IdentifierType
 
using Compare = typename FieldMapBasedTagTraits< VorbisComment >::Compare
 
- Protected Types inherited from TagParser::FieldMapBasedTag< VorbisComment >
using CRTPBase = FieldMapBasedTag< VorbisComment >
 
- Protected Attributes inherited from TagParser::Tag
std::string m_version
 
std::uint32_t m_size
 
TagTarget m_target
 

Detailed Description

Implementation of TagParser::Tag for Vorbis comments.

Definition at line 25 of file vorbiscomment.h.

Constructor & Destructor Documentation

◆ VorbisComment()

TagParser::VorbisComment::VorbisComment ( )
inline

Constructs a new Vorbis comment.

Definition at line 63 of file vorbiscomment.h.

Member Function Documentation

◆ canEncodingBeUsed()

bool TagParser::VorbisComment::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 67 of file vorbiscomment.h.

◆ internallyGetFieldId()

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

Definition at line 47 of file vorbiscomment.cpp.

◆ internallyGetKnownField()

KnownField TagParser::VorbisComment::internallyGetKnownField ( const IdentifierType id) const
protected

Definition at line 98 of file vorbiscomment.cpp.

◆ make()

void TagParser::VorbisComment::make ( std::ostream &  stream,
VorbisCommentFlags  flags,
Diagnostics diag 
)

Writes tag information to the specified stream.

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

Definition at line 225 of file vorbiscomment.cpp.

◆ parse() [1/2]

void TagParser::VorbisComment::parse ( OggIterator iterator,
VorbisCommentFlags  flags,
Diagnostics diag 
)

Parses tag information using the specified OGG iterator.

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

Definition at line 201 of file vorbiscomment.cpp.

◆ parse() [2/2]

void TagParser::VorbisComment::parse ( std::istream &  stream,
std::uint64_t  maxSize,
VorbisCommentFlags  flags,
Diagnostics diag 
)

Parses tag information using the specified OGG iterator.

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

Definition at line 213 of file vorbiscomment.cpp.

◆ setValue()

bool TagParser::VorbisComment::setValue ( KnownField  field,
const TagValue value 
)
overridevirtual

Assigns the given value to the specified field.

Remarks
  • If an empty value is given, the field will be be removed.
  • Some tags support more than just one value per field. This method will only alter the first value.
See also
value(), hasField()

Implements TagParser::Tag.

Definition at line 36 of file vorbiscomment.cpp.

◆ setVendor()

void TagParser::VorbisComment::setVendor ( const TagValue vendor)
inline

Sets the vendor.

Remarks
Also accessable via setValue(KnownField::Vendor, vendor).

Definition at line 85 of file vorbiscomment.h.

◆ supportsMultipleValues()

bool TagParser::VorbisComment::supportsMultipleValues ( KnownField  ) const
inlineoverridevirtual

Allows multiple values for all fields.

Remarks
"Field names are not required to be unique (occur once) within a comment header."

Reimplemented from TagParser::Tag.

Definition at line 94 of file vorbiscomment.h.

◆ value()

const TagValue & TagParser::VorbisComment::value ( KnownField  field) const
overridevirtual

Returns the value of the specified field.

Remarks
  • If the specified field is not present an empty TagValue will be returned.
  • Some tags support more than just one value per field. If there are multiple values this method just returns the first one.
See also
setValue(), hasField()

Implements TagParser::Tag.

Definition at line 26 of file vorbiscomment.cpp.

◆ vendor()

const TagValue & TagParser::VorbisComment::vendor ( ) const
inline

Returns the vendor.

Remarks
Also accessable via value(KnownField::Vendor).

Definition at line 76 of file vorbiscomment.h.

Friends And Related Function Documentation

◆ FieldMapBasedTag< VorbisComment >

friend class FieldMapBasedTag< VorbisComment >
friend

Definition at line 26 of file vorbiscomment.h.

Member Data Documentation

◆ defaultTextEncoding

constexpr TagTextEncoding TagParser::VorbisComment::defaultTextEncoding = TagTextEncoding::Utf8
staticconstexpr

Definition at line 33 of file vorbiscomment.h.

◆ tagName

constexpr const char* TagParser::VorbisComment::tagName = "Vorbis comment"
staticconstexpr

Definition at line 32 of file vorbiscomment.h.

◆ tagType

constexpr TagType TagParser::VorbisComment::tagType = TagType::VorbisComment
staticconstexpr

Definition at line 31 of file vorbiscomment.h.


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