This file is indexed.

/usr/include/musicbrainz3/release.h is in libmusicbrainz3-dev 3.0.2-2.5.

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
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
/*
 * MusicBrainz -- The Internet music metadatabase
 *
 * Copyright (C) 2006 Lukas Lalinsky
 *  
 * This library is free software; you can redistribute it and/or
 * modify it under the terms of the GNU Lesser General Public
 * License as published by the Free Software Foundation; either
 * version 2.1 of the License, or (at your option) any later version.
 * 
 * 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
 *
 * $Id: release.h 9191 2007-06-20 19:55:32Z luks $
 */ 

#ifndef __MUSICBRAINZ3_RELEASE_H__
#define __MUSICBRAINZ3_RELEASE_H__

#include <string>
#include <musicbrainz3/musicbrainz.h>
#include <musicbrainz3/entity.h>
#include <musicbrainz3/lists.h>

namespace MusicBrainz
{

	class Artist;
	
	/**
	 * Represents a Release.
	 *
	 * A release within MusicBrainz is an Entity which contains Track
	 * objects.  Releases may be of more than one type: There can be albums,
	 * singles, compilations, live recordings, official releases, bootlegs
	 * etc.
	 *
	 * @note: The current MusicBrainz server implementation supports only a
	 * limited set of types.
	 */
	class MB_API Release : public Entity
	{
	public:
	
		static const std::string TYPE_NONE;
	
		static const std::string TYPE_ALBUM;
		static const std::string TYPE_SINGLE;
		static const std::string TYPE_EP;
		static const std::string TYPE_COMPILATION;
		static const std::string TYPE_SOUNDTRACK;
		static const std::string TYPE_SPOKENWORD;
		static const std::string TYPE_INTERVIEW;
		static const std::string TYPE_AUDIOBOOK;
		static const std::string TYPE_LIVE;
		static const std::string TYPE_REMIX;
		static const std::string TYPE_OTHER;

		static const std::string TYPE_OFFICIAL;
		static const std::string TYPE_PROMOTION;
		static const std::string TYPE_BOOTLEG;
		static const std::string TYPE_PSEUDO_RELEASE;
	
		/**
		 * Constructor.
		 *
		 * @param id a string containing an absolute URI 
		 * @param title a string containing the title 
		 */
		Release(const std::string &id = std::string(),
				const std::string &title = std::string());
		
		/**
		 * Destructor.
		 */
		~Release();
		
		/**
		 * Returns the track's title.
		 *
		 * The style and format of this attribute is specified by the
		 * style guide.
		 *
		 * @return a string containing an absolute URI
		 * 
		 * @see <a href="http://musicbrainz.org/style.html">The MusicBrainz
		 *		Style Guidelines</a> 
		 */
		std::string getTitle() const;
		
		/**
		 * Sets the release's title.
		 *
		 * @param title: a string containing the release's title
		 *
		 * @see getTitle
		 */
		void setTitle(const std::string &title);

		/**
		 * Returns the language used in release and track titles.
		 *
		 * To represent the language, the ISO-639-2/T standard is used,
		 * which provides three-letter terminological language codes like
		 * "ENG", "DEU", "JPN", "KOR", "ZHO" or "YID".
		 *
		 * Note that this refers to release and track \e titles, not
		 * lyrics.
		 *
		 * @return a string containing the language code
		 *
		 * @see getLanguageName 
		 */
		std::string getTextLanguage() const;

		/**
		 * Sets the language used in releaes and track titles.
		 *
		 * @param language a string containing a language code
		 *
		 * @see getTextLanguage 
		 */
		void setTextLanguage(const std::string &language);

		/**
		 * Returns the script used in release and track titles.
		 *
		 * To represent the script, ISO-15924 script codes are used.
		 * Valid codes are, among others: "Latn", "Cyrl", "Hans", "Hebr"
		 * 
		 * Note that this refers to release and track \e titles, not
		 * lyrics.
		 * 
		 * @return: a string containing the script code
		 *
		 * @see: getScriptName 
		 */
		std::string getTextScript() const;

		/**
		 * Sets the script used in releaes and track titles.
		 *
		 * @param script a string containing a script code
		 *
		 * @see getTextScript 
		 */
		void setTextScript(const std::string &script);

		/**
		 * Returns the main artist of this release.
		 *
		 * @return a pointer to Artist object, or NULL 
		 */
		Artist *getArtist();
		
		/** 
		 * Sets this release's main artist.
		 *
		 * @param artist a pointer to Artist object 
		 */
		void setArtist(Artist *artist);

		/**
		 * Returns the Amazon shop identifier (ASIN).
		 *
		 * The ASIN is a 10-letter code (except for books) assigned
		 * by Amazon, which looks like 'B000002IT2' or 'B00006I4YD'.
		 * 
		 * @return a string containing the ASIN
		 */
		std::string getAsin() const;
		
		/**
		 * Sets the Amazon shop identifier (ASIN).
		 * 
		 * @param asin a string containing the ASIN
		 *
		 * @see getAsin
		 */
		void setAsin(const std::string &asin);
		
		/**
		 * Returns the tracks this release contains.
		 *
		 * @return a list containing pointers to Track objects
		 *
		 * @see getTracksOffset
		 */
		TrackList &getTracks();

		/**
		 * Returns number of tracks.
		 *
		 * This is equivalent to \c getTracks().size()
		 *
		 * @return an int containing number of tracks
		 *
		 * @see getTracks		 
		 */
		int getNumTracks() const;
		
		/**
		 * Returns an track specified by index.
		 *
		 * This is equivalent to \c getTracks()[index]
		 *
		 * @warning \c index must be always lower than the result of \c getNumTracks()
		 *
		 * @return a pointer to Track instance
		 *
		 * @see getTracks		 
		 */
		Track *getTrack(int index);
		
		/**
		 * Returns the offset of the track list.
		 * 
		 * This is used if the track list is incomplete (ie. the web
		 * service only returned part of the tracks on this release).
		 * Note that the offset value is zero-based, which means track
		 * \a 0 is the first track.
		 *
		 * @return an integer containing the offset
		 *
		 * @see getTracks 
		 */
		int getTracksOffset() const;
		
		/**
		 * Sets the offset of the track list.
		 *
		 * @param offset an integer containing the offset
		 *
		 * @see getTracksOffset 
		 */
		void setTracksOffset(const int offset);
		
		/**
		 * Returns the number of tracks on this release. 
		 * 
		 * This may or may not match with the number of elements that 
		 * getTracks and getNumTracks returns. If the count is higher than 
		 * the list, it indicates that the list is incomplete. 
		 *
		 * @return an integer containing the count
		 *
		 * @see getTracks 
		 */
		int getTracksCount() const;
		
		/**
		 * Sets the count of the track list.
		 *
		 * @param count an integer containing the count
		 *
		 * @see getTracksCount 
		 */
		void setTracksCount(const int count);
		
		/**
		 * Returns the discs associated with this release.
		 *
		 * Discs are currently containers for MusicBrainz DiscIDs.
		 * Note that under rare circumstances (identical TOCs), a
		 * DiscID could be associated with more than one release.
		 *
		 * @return a list of pointers to Disc objects
		 * 
		 * @todo make the returned vector \c const
		 */
		DiscList &getDiscs();
		
		/**
		 * Returns number of discs.
		 *
		 * This is equivalent to \c getDiscs().size()
		 *
		 * @return an int containing number of discs
		 *
		 * @see getDiscs		 
		 */
		int getNumDiscs() const;
		
		/**
		 * Returns an disc specified by index.
		 *
		 * This is equivalent to \c getDiscs()[index]
		 *
		 * @warning \c index must be always lower than the result of \c getNumDiscs()
		 *
		 * @return a pointer to Disc instance
		 *
		 * @see getDiscs		 
		 */
		Disc *getDisc(int index);
		
		/**
		 * Returns the list of release events.
		 *
		 * A Release may contain a list of so-called release events,
		 * each represented using a ReleaseEvent object. Release
		 * evens specify where and when this release was, well, released.
		 * 
		 * @return a list of pointers to ReleaseEvent objects
		 */
		ReleaseEventList &getReleaseEvents();
		
		/**
		 * Returns number of release events.
		 *
		 * This is equivalent to \c getReleaseEvents().size()
		 *
		 * @return an int containing number of release events
		 *
		 * @see getReleaseEvents		 
		 */
		int getNumReleaseEvents() const;
		
		/**
		 * Returns an release event specified by index.
		 *
		 * This is equivalent to \c getReleaseevents()[index]
		 *
		 * @warning \c index must be always lower than the result of \c getNumReleaseEvents()
		 *
		 * @return a pointer to ReleaseEvent instance
		 *
		 * @see getReleaseEvents		 
		 */
		ReleaseEvent *getReleaseEvent(int index);

		/**
		 * Sets the list of release types.
		 *
		 * @param types a vector of strings string
		 */
		void setTypes(const std::vector<std::string> &types);

		/**
		 * Returns the list of release types.
		 *
		 * @return a vector of strings string
		 *
		 * @see getType
		 */
		std::vector<std::string> &getTypes();

		/**
		 * Returns the number of release types.
		 *
		 * @return an int
		 */
		int getNumTypes() const;

		/**
		 * Returns the type specified by index.
		 *
		 * This is an equivalent to \c getTypes()[index]
		 *
		 * @warning \c index must be always lower than the result of \c getNumTypes()
		 *
		 * @param index index
		 * @return a string
		 *
		 * @see getTypes
		 */
		std::string getType(int index) const;

	private:
		
		class ReleasePrivate;
		ReleasePrivate *d;
	};
	
}

#endif