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
00023
00024
00025
00026
00027
00028
00029 #ifndef _ID3LIB_HEADER_TAG_H_
00030 #define _ID3LIB_HEADER_TAG_H_
00031
00032 #include "header.h"
00033
00034 class ID3_TagHeader : public ID3_Header
00035 {
00036 public:
00037
00038 enum
00039 {
00040 HEADER_FLAG_UNSYNC = 1 << 7,
00041 HEADER_FLAG_EXTENDED = 1 << 6,
00042 HEADER_FLAG_EXPERIMENTAL = 1 << 5,
00043 HEADER_FLAG_FOOTER = 1 << 4
00044 };
00045
00046 enum
00047 {
00048 EXT_HEADER_FLAG_BIT1 = 1 << 7,
00049 EXT_HEADER_FLAG_BIT2 = 1 << 6,
00050 EXT_HEADER_FLAG_BIT3 = 1 << 5,
00051 EXT_HEADER_FLAG_BIT4 = 1 << 4
00052 };
00053
00054 ID3_TagHeader() : ID3_Header() { ; }
00055 virtual ~ID3_TagHeader() { ; }
00056 ID3_TagHeader(const ID3_TagHeader& rhs) : ID3_Header() { *this = rhs; }
00057
00058 bool SetSpec(ID3_V2Spec);
00059 size_t Size() const;
00060 void Render(ID3_Writer&) const;
00061 bool Parse(ID3_Reader&);
00062 void ParseExtended(ID3_Reader&);
00063 ID3_TagHeader& operator=(const ID3_TagHeader&hdr)
00064 { this->ID3_Header::operator=(hdr); return *this; }
00065
00066 bool SetUnsync(bool b)
00067 {
00068 bool changed = _flags.set(HEADER_FLAG_UNSYNC, b);
00069 _changed = _changed || changed;
00070 return changed;
00071 }
00072 bool GetUnsync() const { return _flags.test(HEADER_FLAG_UNSYNC); }
00073 bool SetExtended(bool b)
00074 {
00075 bool changed = _flags.set(HEADER_FLAG_EXTENDED, b);
00076 _changed = _changed || changed;
00077 return changed;
00078 }
00079 bool GetExtended() const { return _flags.test(HEADER_FLAG_EXTENDED); }
00080 bool SetExperimental(bool b)
00081 {
00082 bool changed = _flags.set(HEADER_FLAG_EXPERIMENTAL, b);
00083 _changed = _changed || changed;
00084 return changed;
00085 }
00086 bool GetExperimental() const { return _flags.test(HEADER_FLAG_EXPERIMENTAL); }
00087 bool SetFooter(bool b)
00088 {
00089 bool changed = _flags.set(HEADER_FLAG_FOOTER, b);
00090 _changed = _changed || changed;
00091 return changed;
00092 }
00093 bool GetFooter() const { return _flags.test(HEADER_FLAG_FOOTER); }
00094
00095
00096
00097
00098
00099
00100 static const char* const ID;
00101 enum
00102 {
00103 ID_SIZE = 3,
00104 MAJOR_OFFSET = 3,
00105 MINOR_OFFSET = 4,
00106 FLAGS_OFFSET = 5,
00107 SIZE_OFFSET = 6,
00108 SIZE = 10
00109 };
00110
00111 };
00112
00113 #endif