rtaglib 0.2.3 → 0.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/History.txt +4 -0
- data/Manifest.txt +84 -9
- data/README.txt +0 -0
- data/Rakefile +30 -27
- data/{test/data → data}/440Hz-5sec.flac +0 -0
- data/{test/data → data}/440Hz-5sec.mp3 +0 -0
- data/{test/data → data}/440Hz-5sec.mpc +0 -0
- data/{test/data → data}/440Hz-5sec.ogg +0 -0
- data/{test/data → data}/440Hz-5sec.wv +0 -0
- data/data/test_jason.mp3 +0 -0
- data/data/test_jason.ogg +0 -0
- data/ext/Rakefile +10 -0
- data/ext/tagfile/Rakefile.rb +42 -0
- data/ext/tagfile/rake_ext_conf.rb +29 -0
- data/ext/tagfile/tagfile.c +11 -7
- data/ext/taglib/Rakefile.rb +48 -0
- data/ext/taglib/rake_ext_conf.rb +33 -0
- data/ext/taglib/taglib-mswin32/bin/tag.dll +0 -0
- data/ext/taglib/taglib-mswin32/bin/tag_c.dll +0 -0
- data/ext/taglib/taglib-mswin32/bin/tag_cd.dll +0 -0
- data/ext/taglib/taglib-mswin32/bin/tagd.dll +0 -0
- data/ext/taglib/taglib-mswin32/bin/taglib-config +55 -0
- data/ext/taglib/taglib-mswin32/include/taglib/apefooter.h +173 -0
- data/ext/taglib/taglib-mswin32/include/taglib/apeitem.h +204 -0
- data/ext/taglib/taglib-mswin32/include/taglib/apetag.h +162 -0
- data/ext/taglib/taglib-mswin32/include/taglib/attachedpictureframe.h +220 -0
- data/ext/taglib/taglib-mswin32/include/taglib/audioproperties.h +110 -0
- data/ext/taglib/taglib-mswin32/include/taglib/commentsframe.h +168 -0
- data/ext/taglib/taglib-mswin32/include/taglib/fileref.h +262 -0
- data/ext/taglib/taglib-mswin32/include/taglib/flacfile.h +201 -0
- data/ext/taglib/taglib-mswin32/include/taglib/flacproperties.h +92 -0
- data/ext/taglib/taglib-mswin32/include/taglib/generalencapsulatedobjectframe.h +174 -0
- data/ext/taglib/taglib-mswin32/include/taglib/id3v1genres.h +66 -0
- data/ext/taglib/taglib-mswin32/include/taglib/id3v1tag.h +180 -0
- data/ext/taglib/taglib-mswin32/include/taglib/id3v2extendedheader.h +93 -0
- data/ext/taglib/taglib-mswin32/include/taglib/id3v2footer.h +82 -0
- data/ext/taglib/taglib-mswin32/include/taglib/id3v2frame.h +414 -0
- data/ext/taglib/taglib-mswin32/include/taglib/id3v2framefactory.h +167 -0
- data/ext/taglib/taglib-mswin32/include/taglib/id3v2header.h +175 -0
- data/ext/taglib/taglib-mswin32/include/taglib/id3v2synchdata.h +70 -0
- data/ext/taglib/taglib-mswin32/include/taglib/id3v2tag.h +300 -0
- data/ext/taglib/taglib-mswin32/include/taglib/mpcfile.h +175 -0
- data/ext/taglib/taglib-mswin32/include/taglib/mpcproperties.h +85 -0
- data/ext/taglib/taglib-mswin32/include/taglib/mpegfile.h +277 -0
- data/ext/taglib/taglib-mswin32/include/taglib/mpegheader.h +166 -0
- data/ext/taglib/taglib-mswin32/include/taglib/mpegproperties.h +118 -0
- data/ext/taglib/taglib-mswin32/include/taglib/oggfile.h +112 -0
- data/ext/taglib/taglib-mswin32/include/taglib/oggflacfile.h +118 -0
- data/ext/taglib/taglib-mswin32/include/taglib/oggpage.h +203 -0
- data/ext/taglib/taglib-mswin32/include/taglib/oggpageheader.h +232 -0
- data/ext/taglib/taglib-mswin32/include/taglib/relativevolumeframe.h +274 -0
- data/ext/taglib/taglib-mswin32/include/taglib/speexfile.h +99 -0
- data/ext/taglib/taglib-mswin32/include/taglib/speexproperties.h +89 -0
- data/ext/taglib/taglib-mswin32/include/taglib/tag.h +173 -0
- data/ext/taglib/taglib-mswin32/include/taglib/tag_c.h +288 -0
- data/ext/taglib/taglib-mswin32/include/taglib/taglib.h +177 -0
- data/ext/taglib/taglib-mswin32/include/taglib/taglib_export.h +39 -0
- data/ext/taglib/taglib-mswin32/include/taglib/tbytevector.h +409 -0
- data/ext/taglib/taglib-mswin32/include/taglib/tbytevectorlist.h +91 -0
- data/ext/taglib/taglib-mswin32/include/taglib/textidentificationframe.h +258 -0
- data/ext/taglib/taglib-mswin32/include/taglib/tfile.h +271 -0
- data/ext/taglib/taglib-mswin32/include/taglib/tlist.h +252 -0
- data/ext/taglib/taglib-mswin32/include/taglib/tlist.tcc +316 -0
- data/ext/taglib/taglib-mswin32/include/taglib/tmap.h +200 -0
- data/ext/taglib/taglib-mswin32/include/taglib/tmap.tcc +196 -0
- data/ext/taglib/taglib-mswin32/include/taglib/trueaudiofile.h +180 -0
- data/ext/taglib/taglib-mswin32/include/taglib/trueaudioproperties.h +93 -0
- data/ext/taglib/taglib-mswin32/include/taglib/tstring.h +456 -0
- data/ext/taglib/taglib-mswin32/include/taglib/tstringlist.h +115 -0
- data/ext/taglib/taglib-mswin32/include/taglib/uniquefileidentifierframe.h +113 -0
- data/ext/taglib/taglib-mswin32/include/taglib/unknownframe.h +79 -0
- data/ext/taglib/taglib-mswin32/include/taglib/unsynchronizedlyricsframe.h +157 -0
- data/ext/taglib/taglib-mswin32/include/taglib/urllinkframe.h +172 -0
- data/ext/taglib/taglib-mswin32/include/taglib/vorbisfile.h +118 -0
- data/ext/taglib/taglib-mswin32/include/taglib/vorbisproperties.h +125 -0
- data/ext/taglib/taglib-mswin32/include/taglib/wavpackfile.h +164 -0
- data/ext/taglib/taglib-mswin32/include/taglib/wavpackproperties.h +94 -0
- data/ext/taglib/taglib-mswin32/include/taglib/xingheader.h +100 -0
- data/ext/taglib/taglib-mswin32/include/taglib/xiphcomment.h +202 -0
- data/ext/taglib/taglib-mswin32/lib/pkgconfig/taglib_c.pc +12 -0
- data/ext/taglib/taglib-mswin32/lib/tag.lib +0 -0
- data/ext/taglib/taglib-mswin32/lib/tag_c.lib +0 -0
- data/ext/taglib/taglib_i386-mingw32.source +22645 -0
- data/ext/taglib/taglib_i386-mswin32.source +22645 -0
- data/ext/taglib/{taglib.cxx → taglib_x86_64-linux.source} +508 -75
- data/lib/TagLib.rb +3 -2
- data/lib/TagLib_doc.rb +1532 -1526
- data/lib/rtaglib_mswin32.rb +4 -0
- data/lib/tagfile.rb +6 -0
- data/swig/Doxyfile +0 -0
- data/swig/Rakefile +44 -19
- data/swig/TagLib_doc.rb +2755 -0
- data/swig/make_doc.rb +5 -4
- data/swig/process_cxx.rb +2 -2
- data/swig/rake_ext_conf.rb +33 -0
- data/swig/taglib.i +8 -5
- data/swig/test.rb +47 -39
- data/test/test_read.rb +4 -3
- data/test/test_taglib.rb +47 -39
- data/test/test_write.rb +4 -3
- metadata +96 -20
- data/ext/tagfile/extconf.rb +0 -14
- data/ext/taglib/extconf.rb +0 -22
- data/swig/extconf.rb +0 -22
Binary file
|
Binary file
|
Binary file
|
Binary file
|
@@ -0,0 +1,55 @@
|
|
1
|
+
#!/bin/sh
|
2
|
+
|
3
|
+
usage()
|
4
|
+
{
|
5
|
+
echo "usage: $0 [OPTIONS]"
|
6
|
+
cat << EOH
|
7
|
+
|
8
|
+
options:
|
9
|
+
[--libs]
|
10
|
+
[--cflags]
|
11
|
+
[--version]
|
12
|
+
[--prefix]
|
13
|
+
EOH
|
14
|
+
exit 1;
|
15
|
+
}
|
16
|
+
|
17
|
+
prefix=D:/Archivos de programa/taglib
|
18
|
+
exec_prefix=D:/Archivos de programa/taglib
|
19
|
+
libdir=D:/Archivos de programa/taglib/lib
|
20
|
+
includedir=D:/Archivos de programa/taglib/include
|
21
|
+
|
22
|
+
flags=""
|
23
|
+
|
24
|
+
if test $# -eq 0 ; then
|
25
|
+
usage
|
26
|
+
fi
|
27
|
+
|
28
|
+
while test $# -gt 0
|
29
|
+
do
|
30
|
+
case $1 in
|
31
|
+
--libs)
|
32
|
+
flags="$flags -L$libdir -ltag"
|
33
|
+
;;
|
34
|
+
--cflags)
|
35
|
+
flags="$flags -I$includedir/taglib"
|
36
|
+
;;
|
37
|
+
--version)
|
38
|
+
echo 1.5
|
39
|
+
;;
|
40
|
+
--prefix)
|
41
|
+
echo $prefix
|
42
|
+
;;
|
43
|
+
*)
|
44
|
+
echo "$0: unknown option $1"
|
45
|
+
echo
|
46
|
+
usage
|
47
|
+
;;
|
48
|
+
esac
|
49
|
+
shift
|
50
|
+
done
|
51
|
+
|
52
|
+
if test -n "$flags"
|
53
|
+
then
|
54
|
+
echo $flags
|
55
|
+
fi
|
@@ -0,0 +1,173 @@
|
|
1
|
+
/***************************************************************************
|
2
|
+
copyright : (C) 2004 by Allan Sandfeld Jensen
|
3
|
+
email : kde@carewolf.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_APEFOOTER_H
|
27
|
+
#define TAGLIB_APEFOOTER_H
|
28
|
+
|
29
|
+
#include "tbytevector.h"
|
30
|
+
#include "taglib_export.h"
|
31
|
+
|
32
|
+
namespace TagLib {
|
33
|
+
|
34
|
+
namespace APE {
|
35
|
+
|
36
|
+
//! An implementation of APE footers
|
37
|
+
|
38
|
+
/*!
|
39
|
+
* This class implements APE footers (and headers). It attempts to follow, both
|
40
|
+
* semantically and programatically, the structure specified in
|
41
|
+
* the APE v2.0 standard. The API is based on the properties of APE footer and
|
42
|
+
* headers specified there.
|
43
|
+
*/
|
44
|
+
|
45
|
+
class TAGLIB_EXPORT Footer
|
46
|
+
{
|
47
|
+
public:
|
48
|
+
/*!
|
49
|
+
* Constructs an empty APE footer.
|
50
|
+
*/
|
51
|
+
Footer();
|
52
|
+
|
53
|
+
/*!
|
54
|
+
* Constructs an APE footer based on \a data. parse() is called
|
55
|
+
* immediately.
|
56
|
+
*/
|
57
|
+
Footer(const ByteVector &data);
|
58
|
+
|
59
|
+
/*!
|
60
|
+
* Destroys the footer.
|
61
|
+
*/
|
62
|
+
virtual ~Footer();
|
63
|
+
|
64
|
+
/*!
|
65
|
+
* Returns the version number. (Note: This is the 1000 or 2000.)
|
66
|
+
*/
|
67
|
+
uint version() const;
|
68
|
+
|
69
|
+
/*!
|
70
|
+
* Returns true if a header is present in the tag.
|
71
|
+
*/
|
72
|
+
bool headerPresent() const;
|
73
|
+
|
74
|
+
/*!
|
75
|
+
* Returns true if a footer is present in the tag.
|
76
|
+
*/
|
77
|
+
bool footerPresent() const;
|
78
|
+
|
79
|
+
/*!
|
80
|
+
* Returns true this is actually the header.
|
81
|
+
*/
|
82
|
+
bool isHeader() const;
|
83
|
+
|
84
|
+
/*!
|
85
|
+
* Sets whether the header should be rendered or not
|
86
|
+
*/
|
87
|
+
void setHeaderPresent(bool b) const;
|
88
|
+
|
89
|
+
/*!
|
90
|
+
* Returns the number of items in the tag.
|
91
|
+
*/
|
92
|
+
uint itemCount() const;
|
93
|
+
|
94
|
+
/*!
|
95
|
+
* Set the item count to \a s.
|
96
|
+
* \see itemCount()
|
97
|
+
*/
|
98
|
+
void setItemCount(uint s);
|
99
|
+
|
100
|
+
/*!
|
101
|
+
* Returns the tag size in bytes. This is the size of the frame content and footer.
|
102
|
+
* The size of the \e entire tag will be this plus the header size, if present.
|
103
|
+
*
|
104
|
+
* \see completeTagSize()
|
105
|
+
*/
|
106
|
+
uint tagSize() const;
|
107
|
+
|
108
|
+
/*!
|
109
|
+
* Returns the tag size, including if present, the header
|
110
|
+
* size.
|
111
|
+
*
|
112
|
+
* \see tagSize()
|
113
|
+
*/
|
114
|
+
uint completeTagSize() const;
|
115
|
+
|
116
|
+
/*!
|
117
|
+
* Set the tag size to \a s.
|
118
|
+
* \see tagSize()
|
119
|
+
*/
|
120
|
+
void setTagSize(uint s);
|
121
|
+
|
122
|
+
/*!
|
123
|
+
* Returns the size of the footer. Presently this is always 32 bytes.
|
124
|
+
*/
|
125
|
+
static uint size();
|
126
|
+
|
127
|
+
/*!
|
128
|
+
* Returns the string used to identify an APE tag inside of a file.
|
129
|
+
* Presently this is always "APETAGEX".
|
130
|
+
*/
|
131
|
+
static ByteVector fileIdentifier();
|
132
|
+
|
133
|
+
/*!
|
134
|
+
* Sets the data that will be used as the footer. 32 bytes,
|
135
|
+
* starting from \a data will be used.
|
136
|
+
*/
|
137
|
+
void setData(const ByteVector &data);
|
138
|
+
|
139
|
+
/*!
|
140
|
+
* Renders the footer back to binary format.
|
141
|
+
*/
|
142
|
+
ByteVector renderFooter() const;
|
143
|
+
|
144
|
+
/*!
|
145
|
+
* Renders the header corresponding to the footer. If headerPresent is
|
146
|
+
* set to false, it returns an empty ByteVector.
|
147
|
+
*/
|
148
|
+
ByteVector renderHeader() const;
|
149
|
+
|
150
|
+
protected:
|
151
|
+
/*!
|
152
|
+
* Called by setData() to parse the footer data. It makes this information
|
153
|
+
* available through the public API.
|
154
|
+
*/
|
155
|
+
void parse(const ByteVector &data);
|
156
|
+
|
157
|
+
/*!
|
158
|
+
* Called by renderFooter and renderHeader
|
159
|
+
*/
|
160
|
+
ByteVector render(bool isHeader) const;
|
161
|
+
|
162
|
+
private:
|
163
|
+
Footer(const Footer &);
|
164
|
+
Footer &operator=(const Footer &);
|
165
|
+
|
166
|
+
class FooterPrivate;
|
167
|
+
FooterPrivate *d;
|
168
|
+
};
|
169
|
+
|
170
|
+
}
|
171
|
+
}
|
172
|
+
|
173
|
+
#endif
|
@@ -0,0 +1,204 @@
|
|
1
|
+
/***************************************************************************
|
2
|
+
copyright : (C) 2004 by Allan Sandfeld Jensen
|
3
|
+
email : kde@carewolf.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_APEITEM_H
|
27
|
+
#define TAGLIB_APEITEM_H
|
28
|
+
|
29
|
+
#include "tbytevector.h"
|
30
|
+
#include "tstring.h"
|
31
|
+
#include "tstringlist.h"
|
32
|
+
|
33
|
+
namespace TagLib {
|
34
|
+
|
35
|
+
namespace APE {
|
36
|
+
|
37
|
+
//! An implementation of APE-items
|
38
|
+
|
39
|
+
/*!
|
40
|
+
* This class provides the features of items in the APEv2 standard.
|
41
|
+
*/
|
42
|
+
class TAGLIB_EXPORT Item
|
43
|
+
{
|
44
|
+
public:
|
45
|
+
/*!
|
46
|
+
* Enum of types an Item can have. The value of 3 is reserved.
|
47
|
+
*/
|
48
|
+
enum ItemTypes {
|
49
|
+
//! Item contains text information coded in UTF-8
|
50
|
+
Text = 0,
|
51
|
+
//! Item contains binary information
|
52
|
+
Binary = 1,
|
53
|
+
//! Item is a locator of external stored information
|
54
|
+
Locator = 2
|
55
|
+
};
|
56
|
+
/*!
|
57
|
+
* Constructs an empty item.
|
58
|
+
*/
|
59
|
+
Item();
|
60
|
+
|
61
|
+
/*!
|
62
|
+
* Constructs an item with \a key and \a value.
|
63
|
+
*/
|
64
|
+
// BIC: Remove this, StringList has a constructor from a single string
|
65
|
+
Item(const String &key, const String &value);
|
66
|
+
|
67
|
+
/*!
|
68
|
+
* Constructs an item with \a key and \a values.
|
69
|
+
*/
|
70
|
+
Item(const String &key, const StringList &values);
|
71
|
+
|
72
|
+
/*!
|
73
|
+
* Construct an item as a copy of \a item.
|
74
|
+
*/
|
75
|
+
Item(const Item &item);
|
76
|
+
|
77
|
+
/*!
|
78
|
+
* Destroys the item.
|
79
|
+
*/
|
80
|
+
virtual ~Item();
|
81
|
+
|
82
|
+
/*!
|
83
|
+
* Copies the contents of \a item into this item.
|
84
|
+
*/
|
85
|
+
Item &operator=(const Item &item);
|
86
|
+
|
87
|
+
/*!
|
88
|
+
* Returns the key.
|
89
|
+
*/
|
90
|
+
String key() const;
|
91
|
+
|
92
|
+
/*!
|
93
|
+
* Returns the binary value.
|
94
|
+
*
|
95
|
+
* \deprecated This will be removed in the next binary incompatible version
|
96
|
+
* as it is not kept in sync with the things that are set using setValue()
|
97
|
+
* and friends.
|
98
|
+
*/
|
99
|
+
ByteVector value() const;
|
100
|
+
|
101
|
+
/*!
|
102
|
+
* Sets the key for the item to \a key.
|
103
|
+
*/
|
104
|
+
void setKey(const String &key);
|
105
|
+
|
106
|
+
/*!
|
107
|
+
* Sets the value of the item to \a value and clears any previous contents.
|
108
|
+
*
|
109
|
+
* \see toString()
|
110
|
+
*/
|
111
|
+
void setValue(const String &value);
|
112
|
+
|
113
|
+
/*!
|
114
|
+
* Sets the value of the item to the list of values in \a value and clears
|
115
|
+
* any previous contents.
|
116
|
+
*
|
117
|
+
* \see toStringList()
|
118
|
+
*/
|
119
|
+
void setValues(const StringList &values);
|
120
|
+
|
121
|
+
/*!
|
122
|
+
* Appends \a value to create (or extend) the current list of values.
|
123
|
+
*
|
124
|
+
* \see toString()
|
125
|
+
*/
|
126
|
+
void appendValue(const String &value);
|
127
|
+
|
128
|
+
/*!
|
129
|
+
* Appends \a values to extend the current list of values.
|
130
|
+
*
|
131
|
+
* \see toStringList()
|
132
|
+
*/
|
133
|
+
void appendValues(const StringList &values);
|
134
|
+
|
135
|
+
/*!
|
136
|
+
* Returns the size of the full item.
|
137
|
+
*/
|
138
|
+
int size() const;
|
139
|
+
|
140
|
+
/*!
|
141
|
+
* Returns the value as a single string. In case of multiple strings,
|
142
|
+
* the first is returned.
|
143
|
+
*/
|
144
|
+
String toString() const;
|
145
|
+
|
146
|
+
/*!
|
147
|
+
* \deprecated
|
148
|
+
* \see values
|
149
|
+
*/
|
150
|
+
StringList toStringList() const;
|
151
|
+
|
152
|
+
/*!
|
153
|
+
* Returns the list of values.
|
154
|
+
*/
|
155
|
+
StringList values() const;
|
156
|
+
|
157
|
+
/*!
|
158
|
+
* Render the item to a ByteVector.
|
159
|
+
*/
|
160
|
+
ByteVector render() const;
|
161
|
+
|
162
|
+
/*!
|
163
|
+
* Parse the item from the ByteVector \a data.
|
164
|
+
*/
|
165
|
+
void parse(const ByteVector& data);
|
166
|
+
|
167
|
+
/*!
|
168
|
+
* Set the item to read-only.
|
169
|
+
*/
|
170
|
+
void setReadOnly(bool readOnly);
|
171
|
+
|
172
|
+
/*!
|
173
|
+
* Return true if the item is read-only.
|
174
|
+
*/
|
175
|
+
bool isReadOnly() const;
|
176
|
+
|
177
|
+
/*!
|
178
|
+
* Sets the type of the item to \a type.
|
179
|
+
*
|
180
|
+
* \see ItemTypes
|
181
|
+
*/
|
182
|
+
void setType(ItemTypes type);
|
183
|
+
|
184
|
+
/*!
|
185
|
+
* Returns the type of the item.
|
186
|
+
*/
|
187
|
+
ItemTypes type() const;
|
188
|
+
|
189
|
+
/*!
|
190
|
+
* Returns if the item has any real content.
|
191
|
+
*/
|
192
|
+
bool isEmpty() const;
|
193
|
+
|
194
|
+
private:
|
195
|
+
class ItemPrivate;
|
196
|
+
ItemPrivate *d;
|
197
|
+
};
|
198
|
+
}
|
199
|
+
|
200
|
+
}
|
201
|
+
|
202
|
+
#endif
|
203
|
+
|
204
|
+
|
@@ -0,0 +1,162 @@
|
|
1
|
+
/***************************************************************************
|
2
|
+
copyright : (C) 2004 by Allan Sandfeld Jensen
|
3
|
+
email : kde@carewolf.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_APETAG_H
|
27
|
+
#define TAGLIB_APETAG_H
|
28
|
+
|
29
|
+
#include "tag.h"
|
30
|
+
#include "tbytevector.h"
|
31
|
+
#include "tmap.h"
|
32
|
+
#include "tstring.h"
|
33
|
+
#include "taglib_export.h"
|
34
|
+
|
35
|
+
#include "apeitem.h"
|
36
|
+
|
37
|
+
namespace TagLib {
|
38
|
+
|
39
|
+
class File;
|
40
|
+
|
41
|
+
//! An implementation of the APE tagging format
|
42
|
+
|
43
|
+
namespace APE {
|
44
|
+
|
45
|
+
class Footer;
|
46
|
+
|
47
|
+
/*!
|
48
|
+
* A mapping between a list of item names, or keys, and the associated item.
|
49
|
+
*
|
50
|
+
* \see APE::Tag::itemListMap()
|
51
|
+
*/
|
52
|
+
typedef Map<const String, Item> ItemListMap;
|
53
|
+
|
54
|
+
|
55
|
+
//! An APE tag implementation
|
56
|
+
|
57
|
+
class TAGLIB_EXPORT Tag : public TagLib::Tag
|
58
|
+
{
|
59
|
+
public:
|
60
|
+
/*!
|
61
|
+
* Create an APE tag with default values.
|
62
|
+
*/
|
63
|
+
Tag();
|
64
|
+
|
65
|
+
/*!
|
66
|
+
* Create an APE tag and parse the data in \a file with APE footer at
|
67
|
+
* \a tagOffset.
|
68
|
+
*/
|
69
|
+
Tag(File *file, long footerLocation);
|
70
|
+
|
71
|
+
/*!
|
72
|
+
* Destroys this Tag instance.
|
73
|
+
*/
|
74
|
+
virtual ~Tag();
|
75
|
+
|
76
|
+
/*!
|
77
|
+
* Renders the in memory values to a ByteVector suitable for writing to
|
78
|
+
* the file.
|
79
|
+
*/
|
80
|
+
ByteVector render() const;
|
81
|
+
|
82
|
+
/*!
|
83
|
+
* Returns the string "APETAGEX" suitable for usage in locating the tag in a
|
84
|
+
* file.
|
85
|
+
*/
|
86
|
+
static ByteVector fileIdentifier();
|
87
|
+
|
88
|
+
// Reimplementations.
|
89
|
+
|
90
|
+
virtual String title() const;
|
91
|
+
virtual String artist() const;
|
92
|
+
virtual String album() const;
|
93
|
+
virtual String comment() const;
|
94
|
+
virtual String genre() const;
|
95
|
+
virtual uint year() const;
|
96
|
+
virtual uint track() const;
|
97
|
+
|
98
|
+
virtual void setTitle(const String &s);
|
99
|
+
virtual void setArtist(const String &s);
|
100
|
+
virtual void setAlbum(const String &s);
|
101
|
+
virtual void setComment(const String &s);
|
102
|
+
virtual void setGenre(const String &s);
|
103
|
+
virtual void setYear(uint i);
|
104
|
+
virtual void setTrack(uint i);
|
105
|
+
|
106
|
+
/*!
|
107
|
+
* Returns a pointer to the tag's footer.
|
108
|
+
*/
|
109
|
+
Footer *footer() const;
|
110
|
+
|
111
|
+
/*!
|
112
|
+
* Returns a reference to the item list map. This is an ItemListMap of
|
113
|
+
* all of the items in the tag.
|
114
|
+
*
|
115
|
+
* This is the most powerfull structure for accessing the items of the tag.
|
116
|
+
*
|
117
|
+
* \warning You should not modify this data structure directly, instead
|
118
|
+
* use setItem() and removeItem().
|
119
|
+
*/
|
120
|
+
const ItemListMap &itemListMap() const;
|
121
|
+
|
122
|
+
/*!
|
123
|
+
* Removes the \a key item from the tag
|
124
|
+
*/
|
125
|
+
void removeItem(const String &key);
|
126
|
+
|
127
|
+
/*!
|
128
|
+
* Adds to the item specified by \a key the data \a value. If \a replace
|
129
|
+
* is true, then all of the other values on the same key will be removed
|
130
|
+
* first.
|
131
|
+
*/
|
132
|
+
void addValue(const String &key, const String &value, bool replace = true);
|
133
|
+
|
134
|
+
/*!
|
135
|
+
* Sets the \a key item to the value of \a item. If an item with the \a key is already
|
136
|
+
* present, it will be replaced.
|
137
|
+
*/
|
138
|
+
void setItem(const String &key, const Item &item);
|
139
|
+
|
140
|
+
protected:
|
141
|
+
|
142
|
+
/*!
|
143
|
+
* Reads from the file specified in the constructor.
|
144
|
+
*/
|
145
|
+
void read();
|
146
|
+
|
147
|
+
/*!
|
148
|
+
* Parses the body of the tag in \a data.
|
149
|
+
*/
|
150
|
+
void parse(const ByteVector &data);
|
151
|
+
|
152
|
+
private:
|
153
|
+
Tag(const Tag &);
|
154
|
+
Tag &operator=(const Tag &);
|
155
|
+
|
156
|
+
class TagPrivate;
|
157
|
+
TagPrivate *d;
|
158
|
+
};
|
159
|
+
}
|
160
|
+
}
|
161
|
+
|
162
|
+
#endif
|