28#if defined HAVE_SYS_PARAM_H
34#include "io_strings.h"
40 io::ExitTrigger et(reader);
43 String ver = io::readText(reader, 2);
45 String size = io::readText(reader, 4);
48 (
uchar) ver [0] < 0xFF && (
uchar) ver [1] < 0xFF &&
49 (
uchar) size[0] < 0x80 && (
uchar) size[1] < 0x80 &&
50 (
uchar) size[2] < 0x80 && (
uchar) size[3] < 0x80)
52 io::StringReader sr(size);
59 else if ((
uchar)ver[0] >= 0xFF)
63 else if ((
uchar)ver[1] >= 0xFF)
67 else if ((
uchar)size[0] >= 0x80)
71 else if ((
uchar)size[1] >= 0x80)
75 else if ((
uchar)size[2] >= 0x80)
79 else if ((
uchar)size[3] >= 0x80)
93 _cursor(_frames.
begin()),
98 _is_file_writable(false),
110 _cursor(_frames.
begin()),
115 _is_file_writable(false),
128 for (
iterator cur = _frames.begin(); cur != _frames.end(); ++cur)
137 _cursor = _frames.begin();
143 _tags_to_parse.clear();
177 _frames.push_back(frame);
178 _cursor = _frames.begin();
190 if (fi != _frames.end())
194 _cursor = _frames.begin();
204 bool changed = _changed;
208 for (
const_iterator fi = _frames.begin(); fi != _frames.end(); ++fi)
212 changed = (*fi)->HasChanged();
227 bool changed = _hdr.SetSpec(spec);
228 _changed = _changed || changed;
234 return _hdr.GetSpec();
239 bool changed = _hdr.SetUnsync(b);
240 _changed = changed || _changed;
246 bool changed = _hdr.SetExtended(ext);
247 _changed = changed || _changed;
253 bool changed = _hdr.SetExperimental(exp);
254 _changed = changed || _changed;
260 return _hdr.GetUnsync();
265 return _hdr.GetExtended();
270 return _hdr.GetExperimental();
275 return _hdr.GetFooter();
293 bool changed = (_is_padded != pad);
294 _changed = changed || _changed;
The representative class of an id3v2 frame.
virtual int_type readChar()
Read a single character and advance the internal position.
virtual const ID3_Frame * GetNext()=0
The representative class of an id3 tag.
bool GetExperimental() const
bool GetExtendedHeader() const
Iterator * CreateIterator()
size_t GetFileSize() const
size_t GetAppendedBytes() const
bool SetExperimental(bool)
ID3_Frame * Find(ID3_FrameID id) const
size_t GetExtendedBytes() const
ID3_TagImpl(const char *name=NULL)
void AddFrame(const ID3_Frame &)
bool GetExperimental() const
Frames::iterator iterator
size_t GetPrependedBytes() const
size_t Link(const char *fileInfo, flags_t=(flags_t) ID3TT_ALL)
ID3_TagImpl & operator=(const ID3_Tag &)
Frames::const_iterator const_iterator
ID3_Frame * RemoveFrame(const ID3_Frame *)
ID3_V2Spec GetSpec() const
static size_t IsV2Tag(ID3_Reader &)
bool AttachFrame(ID3_Frame *)
size_t ID3_GetDataSize(const ID3_TagImpl &tag)