class APE::Tag::TagPrivate
{
public:
- TagPrivate() :
- file(0),
- footerLocation(-1) {}
-
- TagLib::File *file;
- long footerLocation;
-
Footer footer;
-
ItemListMap itemListMap;
};
TagLib::Tag(),
d(new TagPrivate())
{
- d->file = file;
- d->footerLocation = footerLocation;
-
- read();
+ read(file, footerLocation);
}
APE::Tag::~Tag()
// protected methods
////////////////////////////////////////////////////////////////////////////////
-void APE::Tag::read()
+void APE::Tag::read(TagLib::File *file, long footerLocation)
{
- if(d->file && d->file->isValid()) {
+ if(file && file->isValid()) {
- d->file->seek(d->footerLocation);
- d->footer.setData(d->file->readBlock(Footer::size()));
+ file->seek(footerLocation);
+ d->footer.setData(file->readBlock(Footer::size()));
if(d->footer.tagSize() <= Footer::size() ||
- d->footer.tagSize() > uint(d->file->length()))
+ d->footer.tagSize() > uint(file->length()))
return;
- d->file->seek(d->footerLocation + Footer::size() - d->footer.tagSize());
- parse(d->file->readBlock(d->footer.tagSize() - Footer::size()));
+ file->seek(footerLocation + Footer::size() - d->footer.tagSize());
+ parse(file->readBlock(d->footer.tagSize() - Footer::size()));
}
}
/*!
* Reads from the file specified in the constructor.
*/
- void read();
+ void read(TagLib::File *file, long footerLocation);
/*!
* Parses the body of the tag in \a data.