An implementation of ID3v2 table of contents frames. More...
#include <tableofcontentsframe.h>
Public Member Functions | |
TableOfContentsFrame (const ID3v2::Header *tagHeader, const ByteVector &data) | |
TableOfContentsFrame (const ByteVector &elementID, const ByteVectorList &children=ByteVectorList(), const FrameList &embeddedFrames=FrameList()) | |
~TableOfContentsFrame () override | |
TableOfContentsFrame (const TableOfContentsFrame &)=delete | |
TableOfContentsFrame & | operator= (const TableOfContentsFrame &)=delete |
ByteVector | elementID () const |
bool | isTopLevel () const |
bool | isOrdered () const |
unsigned int | entryCount () const |
ByteVectorList | childElements () const |
void | setElementID (const ByteVector &eID) |
void | setIsTopLevel (const bool &t) |
void | setIsOrdered (const bool &o) |
void | setChildElements (const ByteVectorList &l) |
void | addChildElement (const ByteVector &cE) |
void | removeChildElement (const ByteVector &cE) |
const FrameListMap & | embeddedFrameListMap () const |
const FrameList & | embeddedFrameList () const |
const FrameList & | embeddedFrameList (const ByteVector &frameID) const |
void | addEmbeddedFrame (Frame *frame) |
void | removeEmbeddedFrame (Frame *frame, bool del=true) |
void | removeEmbeddedFrames (const ByteVector &id) |
String | toString () const override |
PropertyMap | asProperties () const override |
Public Member Functions inherited from TagLib::ID3v2::Frame | |
virtual | ~Frame () |
Frame (const Frame &)=delete | |
Frame & | operator= (const Frame &)=delete |
ByteVector | frameID () const |
unsigned int | size () const |
unsigned int | headerSize () const |
void | setData (const ByteVector &data) |
virtual void | setText (const String &text) |
virtual String | toString () const =0 |
virtual StringList | toStringList () const |
ByteVector | render () const |
Header * | header () const |
Header (const ByteVector &data, unsigned int version=4) | |
virtual | ~Header () |
Header (const Header &)=delete | |
Header & | operator= (const Header &)=delete |
void | setData (const ByteVector &data, unsigned int version=4) |
ByteVector | frameID () const |
void | setFrameID (const ByteVector &id) |
unsigned int | frameSize () const |
void | setFrameSize (unsigned int size) |
unsigned int | version () const |
void | setVersion (unsigned int version) |
unsigned int | size () const |
bool | tagAlterPreservation () const |
void | setTagAlterPreservation (bool preserve) |
bool | fileAlterPreservation () const |
bool | readOnly () const |
bool | groupingIdentity () const |
bool | compression () const |
bool | encryption () const |
bool | unsynchronisation () const |
bool | dataLengthIndicator () const |
ByteVector | render () const |
Static Public Member Functions | |
static TableOfContentsFrame * | findByElementID (const Tag *tag, const ByteVector &eID) |
static TableOfContentsFrame * | findTopLevel (const Tag *tag) |
Static Public Member Functions inherited from TagLib::ID3v2::Frame | |
static ByteVector | textDelimiter (String::Type t) |
static ByteVector | keyToFrameID (const String &) |
static String | frameIDToKey (const ByteVector &) |
Protected Member Functions | |
void | parseFields (const ByteVector &data) override |
ByteVector | renderFields () const override |
Protected Member Functions inherited from TagLib::ID3v2::Frame | |
Frame (const ByteVector &data) | |
Frame (Header *h) | |
void | setHeader (Header *h, bool deleteCurrent=true) |
void | parse (const ByteVector &data) |
virtual void | parseFields (const ByteVector &data)=0 |
virtual ByteVector | renderFields () const =0 |
ByteVector | fieldData (const ByteVector &frameData) const |
String | readStringField (const ByteVector &data, String::Type encoding, int *position=nullptr) |
String::Type | checkTextEncoding (const StringList &fields, String::Type encoding) const |
virtual PropertyMap | asProperties () const |
Friends | |
class | FrameFactory |
Additional Inherited Members | |
Static Public Attributes inherited from TagLib::ID3v2::Frame | |
static const String | instrumentPrefix |
static const String | commentPrefix |
static const String | lyricsPrefix |
static const String | urlPrefix |
Static Protected Member Functions inherited from TagLib::ID3v2::Frame | |
static void | splitProperties (const PropertyMap &original, PropertyMap &singleFrameProperties, PropertyMap &tiplProperties, PropertyMap &tmclProperties) |
An implementation of ID3v2 table of contents frames.
This is an implementation of ID3v2 table of contents frames. Purpose of this frame is to allow a table of contents to be defined.
TagLib::ID3v2::TableOfContentsFrame::TableOfContentsFrame | ( | const ID3v2::Header * | tagHeader, |
const ByteVector & | data | ||
) |
Creates a table of contents frame based on data. tagHeader is required as the internal frames are parsed based on the tag version.
TagLib::ID3v2::TableOfContentsFrame::TableOfContentsFrame | ( | const ByteVector & | elementID, |
const ByteVectorList & | children = ByteVectorList() , |
||
const FrameList & | embeddedFrames = FrameList() |
||
) |
Creates a table of contents frame with the element ID elementID, the child elements children and embedded frames, which become owned by this frame, in embeddedFrames.
|
override |
Destroys the frame.
|
delete |
void TagLib::ID3v2::TableOfContentsFrame::addChildElement | ( | const ByteVector & | cE | ) |
Adds cE to the list of child elements of the frame.
void TagLib::ID3v2::TableOfContentsFrame::addEmbeddedFrame | ( | Frame * | frame | ) |
Add an embedded frame to the CTOC frame. At this point the CTOC frame takes ownership of the embedded frame and will handle freeing its memory.
|
overridevirtual |
Parses the contents of this frame as PropertyMap. If that fails, the returned PropertyMap will be empty, and its unsupportedData() will contain this frame's ID.
Reimplemented from TagLib::ID3v2::Frame.
ByteVectorList TagLib::ID3v2::TableOfContentsFrame::childElements | ( | ) | const |
Returns list of child elements of the frame.
ByteVector TagLib::ID3v2::TableOfContentsFrame::elementID | ( | ) | const |
Returns the elementID of the frame. Element ID is not intended to be human readable.
const FrameList & TagLib::ID3v2::TableOfContentsFrame::embeddedFrameList | ( | ) | const |
Returns a reference to the embedded frame list. This is a FrameList of all of the frames embedded in the CTOC frame in the order that they were parsed.
This can be useful if for example you want to iterate over the CTOC frame's embedded frames in the order that they occur in the CTOC frame.
const FrameList & TagLib::ID3v2::TableOfContentsFrame::embeddedFrameList | ( | const ByteVector & | frameID | ) | const |
Returns the embedded frame list for frames with the id frameID or an empty list if there are no embedded frames of that type. This is just a convenience and is equivalent to:
const FrameListMap & TagLib::ID3v2::TableOfContentsFrame::embeddedFrameListMap | ( | ) | const |
Returns a reference to the frame list map. This is a FrameListMap of all of the frames embedded in the CTOC frame.
This is the most convenient structure for accessing the CTOC frame's embedded frames. Many frame types allow multiple instances of the same frame type so this is a map of lists. In most cases however there will only be a single frame of a certain type.
unsigned int TagLib::ID3v2::TableOfContentsFrame::entryCount | ( | ) | const |
Returns the count of child elements of the frame. It always corresponds to the size of the child elements list.
|
static |
CTOC frames each have a unique element ID. This searches for a CTOC frame with the element ID eID and returns a pointer to it. This can be used to link together parent and child CTOC frames.
|
static |
CTOC frames each contain a flag that indicates, if CTOC frame is top-level (there isn't any frame, which contains this frame in its child elements list). Only a single frame within the tag can be top-level. This searches for a top-level CTOC frame.
bool TagLib::ID3v2::TableOfContentsFrame::isOrdered | ( | ) | const |
Returns true
, if the child elements list entries are ordered.
bool TagLib::ID3v2::TableOfContentsFrame::isTopLevel | ( | ) | const |
Returns true
, if the frame is top-level (doesn't have any parent CTOC frame).
|
delete |
|
overrideprotectedvirtual |
Called by parse() to parse the field data. It makes this information available through the public API. This must be overridden by the subclasses.
Implements TagLib::ID3v2::Frame.
void TagLib::ID3v2::TableOfContentsFrame::removeChildElement | ( | const ByteVector & | cE | ) |
Removes cE to list of child elements of the frame.
void TagLib::ID3v2::TableOfContentsFrame::removeEmbeddedFrame | ( | Frame * | frame, |
bool | del = true |
||
) |
Remove an embedded frame from the CTOC frame. If del is true
the frame's memory will be freed; if it is false
, it must be deleted by the user.
void TagLib::ID3v2::TableOfContentsFrame::removeEmbeddedFrames | ( | const ByteVector & | id | ) |
Remove all embedded frames of type id from the CTOC frame and free their memory.
|
overrideprotectedvirtual |
Render the field data back to a binary format in a ByteVector. This must be overridden by subclasses.
Implements TagLib::ID3v2::Frame.
void TagLib::ID3v2::TableOfContentsFrame::setChildElements | ( | const ByteVectorList & | l | ) |
Sets list of child elements of the frame to l.
void TagLib::ID3v2::TableOfContentsFrame::setElementID | ( | const ByteVector & | eID | ) |
Sets the elementID of the frame to eID.
void TagLib::ID3v2::TableOfContentsFrame::setIsOrdered | ( | const bool & | o | ) |
Sets, if the child elements list entries are ordered.
void TagLib::ID3v2::TableOfContentsFrame::setIsTopLevel | ( | const bool & | t | ) |
Sets, if the frame is top-level (doesn't have any parent CTOC frame).
|
overridevirtual |
This returns the textual representation of the data in the frame. Subclasses must reimplement this method to provide a string representation of the frame's data.
Implements TagLib::ID3v2::Frame.
|
friend |