Added TagLib (with AUTORS and COPYING files)
[someplayer] / src / taglib / mpeg / id3v2 / id3v2extendedheader.h
1 /***************************************************************************
2     copyright            : (C) 2002 - 2008 by Scott Wheeler
3     email                : wheeler@kde.org
4  ***************************************************************************/
5
6 /***************************************************************************
7  *   This library is free software; you can redistribute it and/or modify  *
8  *   it under the terms of the GNU Lesser General Public License version   *
9  *   2.1 as published by the Free Software Foundation.                     *
10  *                                                                         *
11  *   This library is distributed in the hope that it will be useful, but   *
12  *   WITHOUT ANY WARRANTY; without even the implied warranty of            *
13  *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU     *
14  *   Lesser General Public License for more details.                       *
15  *                                                                         *
16  *   You should have received a copy of the GNU Lesser General Public      *
17  *   License along with this library; if not, write to the Free Software   *
18  *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  *
19  *   USA                                                                   *
20  *                                                                         *
21  *   Alternatively, this file is available under the Mozilla Public        *
22  *   License Version 1.1.  You may obtain a copy of the License at         *
23  *   http://www.mozilla.org/MPL/                                           *
24  ***************************************************************************/
25
26 #ifndef TAGLIB_ID3V2EXTENDEDHEADER_H
27 #define TAGLIB_ID3V2EXTENDEDHEADER_H
28
29 #include "taglib_export.h"
30 #include "tbytevector.h"
31 #include "taglib.h"
32
33 namespace TagLib {
34
35   namespace ID3v2 {
36
37     //! ID3v2 extended header implementation
38
39     /*!
40      * This class implements ID3v2 extended headers.  It attempts to follow,
41      * both  semantically and programatically, the structure specified in
42      * the ID3v2 standard.  The API is based on the properties of ID3v2 extended
43      * headers specified there.  If any of the terms used in this documentation
44      * are unclear please check the specification in the linked section.
45      * (Structure, <a href="id3v2-structure.html#3.2">3.2</a>)
46      */
47
48     class TAGLIB_EXPORT ExtendedHeader
49     {
50     public:
51       /*!
52        * Constructs an empty ID3v2 extended header.
53        */
54       ExtendedHeader();
55
56       /*!
57        * Destroys the extended header.
58        */
59       virtual ~ExtendedHeader();
60
61       /*!
62        * Returns the size of the extended header.  This is variable for the
63        * extended header.
64        */
65       uint size() const;
66
67       /*!
68        * Sets the data that will be used as the extended header.  Since the
69        * length is not known before the extended header has been parsed, this
70        * should just be a pointer to the first byte of the extended header.  It
71        * will determine the length internally and make that available through
72        * size().
73        */
74       void setData(const ByteVector &data);
75
76     protected:
77       /*!
78        * Called by setData() to parse the extended header data.  It makes this
79        * information available through the public API.
80        */
81       void parse(const ByteVector &data);
82
83     private:
84       ExtendedHeader(const ExtendedHeader &);
85       ExtendedHeader &operator=(const ExtendedHeader &);
86
87       class ExtendedHeaderPrivate;
88       ExtendedHeaderPrivate *d;
89     };
90
91   }
92 }
93 #endif