120 lines
4.1 KiB
C++
120 lines
4.1 KiB
C++
/***************************************************************************
|
|
copyright : (C) 2002 - 2008 by Scott Wheeler
|
|
email : wheeler@kde.org
|
|
***************************************************************************/
|
|
|
|
/***************************************************************************
|
|
* This library is free software; you can redistribute it and/or modify *
|
|
* it under the terms of the GNU Lesser General Public License version *
|
|
* 2.1 as published by the Free Software Foundation. *
|
|
* *
|
|
* This library is distributed in the hope that it will be useful, but *
|
|
* WITHOUT ANY WARRANTY; without even the implied warranty of *
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU *
|
|
* Lesser General Public License for more details. *
|
|
* *
|
|
* You should have received a copy of the GNU Lesser General Public *
|
|
* License along with this library; if not, write to the Free Software *
|
|
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA *
|
|
* 02110-1301 USA *
|
|
* *
|
|
* Alternatively, this file is available under the Mozilla Public *
|
|
* License Version 1.1. You may obtain a copy of the License at *
|
|
* http://www.mozilla.org/MPL/ *
|
|
***************************************************************************/
|
|
|
|
#ifndef TAGLIB_UNIQUEFILEIDENTIFIERFRAME
|
|
#define TAGLIB_UNIQUEFILEIDENTIFIERFRAME
|
|
|
|
#include "id3v2frame.h"
|
|
|
|
namespace Strawberry_TagLib {
|
|
namespace TagLib {
|
|
namespace ID3v2 {
|
|
|
|
/*!
|
|
* This is an implementation of ID3v2 unique file identifier frames.
|
|
* This frame is used to identify the file in an arbitrary database identified by the owner field.
|
|
*/
|
|
|
|
//! An implementation of ID3v2 unique identifier frames
|
|
|
|
class TAGLIB_EXPORT UniqueFileIdentifierFrame : public ID3v2::Frame {
|
|
friend class FrameFactory;
|
|
|
|
public:
|
|
/*!
|
|
* Creates a unique file identifier frame based on \a data.
|
|
*/
|
|
explicit UniqueFileIdentifierFrame(const ByteVector &data);
|
|
|
|
/*!
|
|
* Creates a unique file identifier frame with the owner \a owner and the identification \a id.
|
|
*/
|
|
explicit UniqueFileIdentifierFrame(const String &owner, const ByteVector &id);
|
|
|
|
/*!
|
|
* Destroys the frame.
|
|
*/
|
|
~UniqueFileIdentifierFrame() override;
|
|
|
|
/*!
|
|
* Returns the owner for the frame; essentially this is the key for determining which identification scheme this key belongs to.
|
|
* This will usually either be an email address or URL for the person or tool used to create the unique identifier.
|
|
*
|
|
* \see setOwner()
|
|
*/
|
|
String owner() const;
|
|
|
|
/*!
|
|
* Returns the unique identifier.
|
|
* Though sometimes this is a text string it also may be binary data and as much should be assumed when handling
|
|
* it.
|
|
*/
|
|
ByteVector identifier() const;
|
|
|
|
/*!
|
|
* Sets the owner of the identification scheme to \a s.
|
|
*
|
|
* \see owner()
|
|
*/
|
|
void setOwner(const String &s);
|
|
|
|
/*!
|
|
* Sets the unique file identifier to \a v.
|
|
*
|
|
* \see identifier()
|
|
*/
|
|
void setIdentifier(const ByteVector &v);
|
|
|
|
String toString() const override;
|
|
|
|
PropertyMap asProperties() const;
|
|
|
|
/*!
|
|
* UFID frames each have a unique owner. This searches for a UFID frame with the owner \a o and returns a pointer to it.
|
|
*
|
|
* \see owner()
|
|
*/
|
|
static UniqueFileIdentifierFrame *findByOwner(const Tag *tag, const String &o);
|
|
|
|
protected:
|
|
void parseFields(const ByteVector &data) override;
|
|
ByteVector renderFields() const override;
|
|
|
|
private:
|
|
UniqueFileIdentifierFrame(const UniqueFileIdentifierFrame&);
|
|
UniqueFileIdentifierFrame &operator=(const UniqueFileIdentifierFrame&);
|
|
|
|
explicit UniqueFileIdentifierFrame(const ByteVector &data, Header *h);
|
|
|
|
class UniqueFileIdentifierFramePrivate;
|
|
UniqueFileIdentifierFramePrivate *d;
|
|
};
|
|
|
|
} // namespace ID3v2
|
|
} // namespace TagLib
|
|
} // namespace Strawberry_TagLib
|
|
|
|
#endif
|