/usr/include/taglib-extras/audibletag.h is in libtag-extras-dev 1.0.1-3.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 | /***************************************************************************
copyright : (C) 2005 by Martin Aumueller
email : aumuell@reserv.at
copyright : (C) 2005 by Andy Leadbetter
email : andrew.leadbetter@gmail.com
(original mp4 implementation)
***************************************************************************/
/***************************************************************************
* 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 *
***************************************************************************/
#ifndef TAGLIB_AUDIBLETAG_H
#define TAGLIB_AUDIBLETAG_H
#include <taglib-extras_export.h>
#include <tag.h>
namespace TagLibExtras {
namespace Audible {
/*!
* This implements the generic TagLib::Tag API
*/
class TAGLIB_EXTRAS_EXPORT Tag : public TagLib::Tag
{
public:
Tag();
/*!
* read tags from the aa file.
*/
void readTags( FILE *file );
/*!
* Destroys this AudibleTag instance.
*/
virtual ~Tag();
/*!
* Returns the track name; if no track name is present in the tag
* TagLib::String::null will be returned.
*/
virtual TagLib::String title() const { return m_title; }
/*!
* Returns the artist name; if no artist name is present in the tag
* TagLib::String::null will be returned.
*/
virtual TagLib::String artist() const { return m_artist; }
/*!
* Returns the album name; if no album name is present in the tag
* TagLib::String::null will be returned.
*/
virtual TagLib::String album() const { return m_album; }
/*!
* Returns the track comment; if no comment is present in the tag
* TagLib::String::null will be returned.
*/
virtual TagLib::String comment() const { return m_comment; }
/*!
* Returns the genre name; if no genre is present in the tag TagLib::String::null
* will be returned.
*/
virtual TagLib::String genre() const { return m_genre; }
/*!
* Returns the year; if there is no year set, this will return 0.
*/
virtual TagLib::uint year() const { return m_year; }
/*!
* Returns the track number; if there is no track number set, this will
* return 0.
*/
virtual TagLib::uint track() const { return m_track; }
/*!
* Returns the user id for this file.
*/
virtual TagLib::uint userID() const { return m_userID; }
/*!
* Sets the title to \a s. If \a s is TagLib::String::null then this value will be
* cleared.
*/
virtual void setTitle(const TagLib::String &s) { m_title = s; }
/*!
* Sets the artist to \a s. If \a s is TagLib::String::null then this value will be
* cleared.
*/
virtual void setArtist(const TagLib::String &s) { m_artist = s; }
/*!
* Sets the album to \a s. If \a s is TagLib::String::null then this value will be
* cleared.
*/
virtual void setAlbum(const TagLib::String &s) { m_album = s; }
/*!
* Sets the album to \a s. If \a s is TagLib::String::null then this value will be
* cleared.
*/
virtual void setComment(const TagLib::String &s) { m_comment = s; }
/*!
* Sets the genre to \a s. If \a s is TagLib::String::null then this value will be
* cleared. For tag formats that use a fixed set of genres, the appropriate
* value will be selected based on a string comparison. A list of available
* genres for those formats should be available in that type's
* implementation.
*/
virtual void setGenre(const TagLib::String &s) { m_genre = s; }
/*!
* Sets the year to \a i. If \a s is 0 then this value will be cleared.
*/
virtual void setYear(TagLib::uint i) { m_year = i; }
/*!
* Sets the track to \a i. If \a s is 0 then this value will be cleared.
*/
virtual void setTrack(TagLib::uint i) { m_track = i; }
/*!
* Returns true if the tag does not contain any data. This should be
* reimplemented in subclasses that provide more than the basic tagging
* abilities in this class.
*/
virtual bool isEmpty() const;
/*!
* Copies the generic data from one tag to another.
*
* \note This will not affect any of the lower level details of the tag. For
* instance if any of the tag type specific data (maybe a URL for a band) is
* set, this will not modify or copy that. This just copies using the API
* in this class.
*
* If \a overwrite is true then the values will be unconditionally copied.
* If false only empty values will be overwritten.
*/
static void duplicate(const Tag *source, Tag *target, bool overwrite = true);
virtual void setUserID(TagLib::uint id) { m_userID = id; }
int getTagsEndOffset();
protected:
TagLib::String m_title;
TagLib::String m_artist;
TagLib::String m_album;
TagLib::String m_comment;
TagLib::String m_genre;
TagLib::uint m_year;
TagLib::uint m_track;
TagLib::uint m_userID;
bool readTag( FILE *fp, char **name, char **value);
int m_tagsEndOffset;
};
}
}
#endif
|