Added TagLib (with AUTORS and COPYING files)
[someplayer] / src / taglib / mpeg / id3v2 / frames / privateframe.h
1 /***************************************************************************
2     copyright            : (C) 2008 by Serkan Kalyoncu
3     copyright            : (C) 2008 by Scott Wheeler
4     email                : wheeler@kde.org
5 ***************************************************************************/
6
7 /***************************************************************************
8  *   This library is free software; you can redistribute it and/or modify  *
9  *   it under the terms of the GNU Lesser General Public License version   *
10  *   2.1 as published by the Free Software Foundation.                     *
11  *                                                                         *
12  *   This library is distributed in the hope that it will be useful, but   *
13  *   WITHOUT ANY WARRANTY; without even the implied warranty of            *
14  *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU     *
15  *   Lesser General Public License for more details.                       *
16  *                                                                         *
17  *   You should have received a copy of the GNU Lesser General Public      *
18  *   License along with this library; if not, write to the Free Software   *
19  *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  *
20  *   USA                                                                   *
21  *                                                                         *
22  *   Alternatively, this file is available under the Mozilla Public        *
23  *   License Version 1.1.  You may obtain a copy of the License at         *
24  *   http://www.mozilla.org/MPL/                                           *
25  ***************************************************************************/
26
27 #ifndef TAGLIB_PRIVATEFRAME_H
28 #define TAGLIB_PRIVATEFRAME_H
29
30 #include "id3v2frame.h"
31 #include "taglib_export.h"
32
33 namespace TagLib {
34
35   namespace ID3v2 {
36
37     //! An implementation of ID3v2 privateframe
38
39     class TAGLIB_EXPORT PrivateFrame : public Frame
40     {
41       friend class FrameFactory;
42
43     public:
44       /*!
45        * Construct an empty private frame.
46        */
47       PrivateFrame();
48
49       /*!
50        * Construct a private frame based on the data in \a data.
51        *
52        * \note This is the constructor used when parsing the frame from a file.
53        */
54       explicit PrivateFrame(const ByteVector &data);
55
56       /*!
57        * Destroys this private frame instance.
58        */
59       virtual ~PrivateFrame();
60
61       /*!
62        * Returns the text of this private frame, currently just the owner.
63        *
64        * \see text()
65        */
66       virtual String toString() const;
67
68       /*!
69        * \return The owner of the private frame.
70        * \note This should contain an email address or link to a website.
71        */
72       String owner() const;
73
74       /*!
75        *
76        */
77       ByteVector data() const;
78
79       /*!
80        * Sets the owner of the frame to \a s.
81        * \note This should contain an email address or link to a website.
82        */
83       void setOwner(const String &s);
84
85       /*!
86        *
87        */
88       void setData(const ByteVector &v);
89
90     protected:
91       // Reimplementations.
92
93       virtual void parseFields(const ByteVector &data);
94       virtual ByteVector renderFields() const;
95
96     private:
97       /*!
98        * The constructor used by the FrameFactory.
99        */
100       PrivateFrame(const ByteVector &data, Header *h);
101
102       PrivateFrame(const PrivateFrame &);
103       PrivateFrame &operator=(const PrivateFrame &);
104
105       class PrivateFramePrivate;
106       PrivateFramePrivate *d;
107     };
108
109   }
110 }
111 #endif