Tag Parser
6.5.1
C++ library for reading and writing MP4 (iTunes), ID3, Vorbis, Opus, FLAC and Matroska tags
|
The FieldMapBasedTag provides a generic implementation of Tag which stores the tag fields using std::multimap. More...
#include <fieldbasedtag.h>
Public Types | |
typedef FieldType | fieldType |
![]() | |
typedef std::function< void(StatusProvider &sender)> | CallbackFunction |
typedef std::vector< CallbackFunction > | CallbackVector |
typedef std::pair< int, CallbackFunction > | CallbackPair |
Public Member Functions | |
FieldMapBasedTag () | |
Constructs a new FieldMapBasedTag. More... | |
virtual const TagValue & | value (const typename FieldType::identifierType &id) const |
Returns the value of the field with the specified id. More... | |
const TagValue & | value (KnownField field) const |
Returns the value of the specified field. More... | |
std::vector< const TagValue * > | values (const typename FieldType::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... | |
virtual bool | setValue (const typename FieldType::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 typename FieldType::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... | |
virtual bool | hasField (const typename FieldType::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< typename FieldType::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< typename FieldType::identifierType, FieldType, Compare > & | fields () |
Returns the fields of the tag by providing direct access to the field map of the tag. More... | |
unsigned int | fieldCount () const |
Returns the number of present fields. More... | |
virtual FieldType::identifierType | fieldId (KnownField value) const =0 |
Returns the ID for the specified field. More... | |
virtual KnownField | knownField (const typename FieldType::identifierType &id) const =0 |
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... | |
virtual TagDataType | proposedDataType (const typename FieldType::identifierType &id) const |
Returns the proposed data type for the field with the specified id. More... | |
int | insertFields (const FieldMapBasedTag< FieldType, Compare > &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... | |
virtual TagDataType | proposedDataType (KnownField field) const |
Returns the proposed data type for the specified field as TagDataType. More... | |
![]() | |
virtual | ~Tag () |
Destroys the Tag. More... | |
virtual TagType | type () const |
Returns the type of the tag as Media::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... | |
virtual bool | canEncodingBeUsed (TagTextEncoding encoding) const |
Returns an indication whether the specified encoding can be used to provide string values for the tag. More... | |
const std::string & | version () const |
Returns the version of the tag as std::string. More... | |
uint32 | size () const |
Returns the size of the tag in bytes. More... | |
virtual bool | supportsTarget () const |
Returns an indication whether a target is supported by the tag. More... | |
const TagTarget & | target () 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 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... | |
![]() | |
const NotificationList & | notifications () const |
Returns notifications for the current object. More... | |
bool | hasNotifications () const |
Returns an indication whether there are notifications for the current object. More... | |
bool | hasCriticalNotifications () const |
Returns an indication whether there are critical notifications for the current object. More... | |
NotificationType | worstNotificationType () const |
Returns the worst notification type. More... | |
const std::string & | currentStatus () const |
Returns a status information for the current object. More... | |
double | currentPercentage () const |
Returns the progress percentage of the current object. More... | |
size_t | registerCallback (CallbackFunction callback) |
Registers a callback function. More... | |
void | unregisterCallback (size_t id) |
Unregisters a previously registered callback function whith the specified id. More... | |
void | unregisterAllCallbacks () |
Unregisters all callback functions. More... | |
void | forwardStatusUpdateCalls (StatusProvider *other=nullptr) |
Forwards all status updates calls to the specified statusProvider. More... | |
StatusProvider * | usedProvider () |
Returns the provider which callback functions will be called when the status or the percentage is updated. More... | |
void | tryToAbort () |
Commands the object to abort the current operation. More... | |
bool | isAborted () const |
Returns an indication whether the current operation should be aborted. More... | |
void | invalidateStatus () |
Invalidates the current status. More... | |
void | invalidateNotifications () |
Invalidates the object's notifications. More... | |
void | updateStatus (const std::string &status) |
This method is meant to be called by the derived class to report updated status information. More... | |
void | updateStatus (const std::string &status, double percentage) |
This method is meant to be called by the derived class to report updated status information. More... | |
void | updatePercentage (double percentage) |
This method is meant to be called by the derived class to report updated progress percentage only. More... | |
void | addNotification (const Notification ¬ification) |
This method is meant to be called by the derived class to add a notification. More... | |
void | addNotification (NotificationType type, const std::string &message, const std::string &context) |
This method is meant to be called by the derived class to add a notification of the specified type, message and context. More... | |
void | addNotifications (const StatusProvider &from) |
This method is meant to be called by the derived class to add all notifications from another StatusProvider instance. More... | |
void | addNotifications (const std::string &higherContext, const StatusProvider &from) |
This method is meant to be called by the derived class to add all notifications from another StatusProvider instance. More... | |
void | addNotifications (const NotificationList ¬ifications) |
This method is meant to be called by the derived class to add the specified notifications. More... | |
Additional Inherited Members | |
![]() | |
Tag () | |
Constructs a new Tag. More... | |
![]() | |
StatusProvider () | |
Constructs a new StatusProvider. More... | |
![]() | |
std::string | m_version |
uint32 | m_size |
TagTarget | m_target |
The FieldMapBasedTag provides a generic implementation of Tag which stores the tag fields using std::multimap.
The FieldMapBasedTag class only provides the interface and common functionality. It is meant to be subclassed.
FieldType | Specifies the class used to store the fields. Should be a subclass of TagField. |
Compare | Specifies the key comparsion function. Default is std::less. |
Definition at line 25 of file fieldbasedtag.h.
typedef FieldType Media::FieldMapBasedTag< FieldType, Compare >::fieldType |
Definition at line 52 of file fieldbasedtag.h.
Media::FieldMapBasedTag< FieldType, Compare >::FieldMapBasedTag | ( | ) |
Constructs a new FieldMapBasedTag.
Definition at line 76 of file fieldbasedtag.h.
|
virtual |
Ensures the encoding of all assigned text values is supported by the tag by converting the character set if neccessary.
Implements Media::Tag.
Definition at line 306 of file fieldbasedtag.h.
|
virtual |
Returns the number of present fields.
Implements Media::Tag.
Definition at line 230 of file fieldbasedtag.h.
|
pure virtual |
Returns the ID for the specified field.
Needs to be implemented when subclassing.
Implemented in Media::Mp4Tag, Media::Id3v2Tag, Media::MatroskaTag, and Media::VorbisComment.
|
inline |
Returns the fields of the tag by providing direct access to the field map of the tag.
Definition at line 215 of file fieldbasedtag.h.
|
inline |
Returns the fields of the tag by providing direct access to the field map of the tag.
Definition at line 224 of file fieldbasedtag.h.
|
inlinevirtual |
Returns an indication whether the specified field is present.
Implements Media::Tag.
Definition at line 186 of file fieldbasedtag.h.
|
inlinevirtual |
Returns an indication whether the field with the specified id is present.
Definition at line 195 of file fieldbasedtag.h.
int Media::FieldMapBasedTag< FieldType, Compare >::insertFields | ( | const FieldMapBasedTag< FieldType, Compare > & | from, |
bool | overwrite | ||
) |
Inserts all fields from another tag of the same field type and compare function.
from | Specifies the tag the fields should be inserted from. |
overwrite | Indicates whether existing fields should be overwritten. |
Definition at line 264 of file fieldbasedtag.h.
|
virtual |
Inserts all compatible values from another Tag.
from | Specifies the Tag the values should be inserted from. |
overwrite | Indicates whether existing values should be overwritten. |
Reimplemented from Media::Tag.
Definition at line 295 of file fieldbasedtag.h.
|
pure virtual |
Returns the field for the specified ID.
Needs to be implemented when subclassing.
|
inline |
Returns the proposed data type for the specified field as TagDataType.
Most values need to be provided as string (see proposedTextEncoding() and canEncodingBeUsed()). Other values need to be provided as integer or an other TagDataType. This method helps to determine which type is required for a particular field. The tag class and its subclasses try to convert the provided values. Nevertheless it is recommend to use the proposed data types to avoid conversion failures.
The default implementation returns a data type which is most commonly used for the specified field. The default implementation might be overwritten when subclassing.
|
inlinevirtual |
Returns the proposed data type for the field with the specified id.
Definition at line 252 of file fieldbasedtag.h.
|
inlinevirtual |
Removes all fields from the tag.
Implements Media::Tag.
Definition at line 206 of file fieldbasedtag.h.
|
virtual |
Assigns the given value to the field with the specified id.
Definition at line 130 of file fieldbasedtag.h.
|
inlinevirtual |
Assigns the given value to the specified field.
Implements Media::Tag.
Definition at line 120 of file fieldbasedtag.h.
bool Media::FieldMapBasedTag< FieldType, Compare >::setValues | ( | const typename FieldType::identifierType & | id, |
const std::vector< TagValue > & | values | ||
) |
Assigns the given values to the field with the specified id.
Definition at line 150 of file fieldbasedtag.h.
|
virtual |
Assigns the given values to the field with the specified id.
Reimplemented from Media::Tag.
Definition at line 180 of file fieldbasedtag.h.
|
inlinevirtual |
Returns an indication whether the specified field is supported by the tag.
Implements Media::Tag.
Definition at line 242 of file fieldbasedtag.h.
|
inlinevirtual |
Returns the value of the field with the specified id.
Definition at line 84 of file fieldbasedtag.h.
|
inlinevirtual |
Returns the value of the specified field.
Implements Media::Tag.
Definition at line 91 of file fieldbasedtag.h.
|
inline |
Returns the values of the field with the specified id.
Definition at line 101 of file fieldbasedtag.h.
|
inlinevirtual |
Returns the values of the specified field.
Reimplemented from Media::Tag.
Definition at line 114 of file fieldbasedtag.h.