id3v2frame.h
Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022 #ifndef TAGLIB_ID3V2FRAME_H
00023 #define TAGLIB_ID3V2FRAME_H
00024
00025 #include <tstring.h>
00026 #include <tbytevector.h>
00027
00028 namespace TagLib {
00029
00030 namespace ID3v2 {
00031
00032 class FrameFactory;
00033
00035
00045 class Frame
00046 {
00047 friend class FrameFactory;
00048
00049 public:
00053 virtual ~Frame();
00054
00059 ByteVector frameID() const;
00060
00064 uint size() const;
00065
00074 static uint headerSize();
00075
00081 static uint headerSize(uint version);
00082
00089 void setData(const ByteVector &data);
00090
00100 virtual void setText(const String &text);
00101
00107 virtual String toString() const = 0;
00108
00112 ByteVector render() const;
00113
00118 static ByteVector textDelimiter(String::Type t);
00119
00120 protected:
00121 class Header;
00122
00130 explicit Frame(const ByteVector &data);
00131
00138 Frame(Header *h);
00139
00143 Header *header() const;
00144
00152 void setHeader(Header *h, bool deleteCurrent = true);
00153
00158 void parse(const ByteVector &data);
00159
00165 virtual void parseFields(const ByteVector &data) = 0;
00166
00171 virtual ByteVector renderFields() const = 0;
00172
00178 ByteVector fieldData(const ByteVector &frameData) const;
00179
00180 private:
00181 Frame(const Frame &);
00182 Frame &operator=(const Frame &);
00183
00184 class FramePrivate;
00185 FramePrivate *d;
00186 };
00187
00189
00202 class Frame::Header
00203 {
00204 public:
00213 Header(const ByteVector &data, bool synchSafeInts);
00214
00222 explicit Header(const ByteVector &data, uint version = 4);
00223
00227 virtual ~Header();
00228
00235 void setData(const ByteVector &data, bool synchSafeInts);
00236
00241 void setData(const ByteVector &data, uint version = 4);
00242
00247 ByteVector frameID() const;
00248
00257 void setFrameID(const ByteVector &id);
00258
00263 uint frameSize() const;
00264
00268 void setFrameSize(uint size);
00269
00274 uint version() const;
00275
00284 static uint size();
00285
00292 static uint size(uint version);
00293
00299 bool tagAlterPreservation() const;
00300
00306 bool fileAlterPreservation() const;
00307
00313 bool readOnly() const;
00314
00320 bool groupingIdentity() const;
00321
00327 bool compression() const;
00328
00334 bool encryption() const;
00335
00341 bool unsycronisation() const;
00342
00346 bool dataLengthIndicator() const;
00347
00351 ByteVector render() const;
00352
00356 bool frameAlterPreservation() const;
00357
00358 private:
00359 Header(const Header &);
00360 Header &operator=(const Header &);
00361
00362 class HeaderPrivate;
00363 HeaderPrivate *d;
00364 };
00365
00366 }
00367 }
00368
00369 #endif