libmusicbrainz3
3.0.2
|
00001 /* 00002 * MusicBrainz -- The Internet music metadatabase 00003 * 00004 * Copyright (C) 2006 Lukas Lalinsky 00005 * 00006 * This library is free software; you can redistribute it and/or 00007 * modify it under the terms of the GNU Lesser General Public 00008 * License as published by the Free Software Foundation; either 00009 * version 2.1 of the License, or (at your option) any later version. 00010 * 00011 * This library is distributed in the hope that it will be useful, 00012 * but WITHOUT ANY WARRANTY; without even the implied warranty of 00013 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 00014 * Lesser General Public License for more details. 00015 * 00016 * You should have received a copy of the GNU Lesser General Public 00017 * License along with this library; if not, write to the Free Software 00018 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA 00019 * 00020 * $Id: release.h 9191 2007-06-20 19:55:32Z luks $ 00021 */ 00022 00023 #ifndef __MUSICBRAINZ3_RELEASE_H__ 00024 #define __MUSICBRAINZ3_RELEASE_H__ 00025 00026 #include <string> 00027 #include <musicbrainz3/musicbrainz.h> 00028 #include <musicbrainz3/entity.h> 00029 #include <musicbrainz3/lists.h> 00030 00031 namespace MusicBrainz 00032 { 00033 00034 class Artist; 00035 00047 class MB_API Release : public Entity 00048 { 00049 public: 00050 00051 static const std::string TYPE_NONE; 00052 00053 static const std::string TYPE_ALBUM; 00054 static const std::string TYPE_SINGLE; 00055 static const std::string TYPE_EP; 00056 static const std::string TYPE_COMPILATION; 00057 static const std::string TYPE_SOUNDTRACK; 00058 static const std::string TYPE_SPOKENWORD; 00059 static const std::string TYPE_INTERVIEW; 00060 static const std::string TYPE_AUDIOBOOK; 00061 static const std::string TYPE_LIVE; 00062 static const std::string TYPE_REMIX; 00063 static const std::string TYPE_OTHER; 00064 00065 static const std::string TYPE_OFFICIAL; 00066 static const std::string TYPE_PROMOTION; 00067 static const std::string TYPE_BOOTLEG; 00068 static const std::string TYPE_PSEUDO_RELEASE; 00069 00076 Release(const std::string &id = std::string(), 00077 const std::string &title = std::string()); 00078 00082 ~Release(); 00083 00095 std::string getTitle() const; 00096 00104 void setTitle(const std::string &title); 00105 00120 std::string getTextLanguage() const; 00121 00129 void setTextLanguage(const std::string &language); 00130 00144 std::string getTextScript() const; 00145 00153 void setTextScript(const std::string &script); 00154 00160 Artist *getArtist(); 00161 00167 void setArtist(Artist *artist); 00168 00177 std::string getAsin() const; 00178 00186 void setAsin(const std::string &asin); 00187 00195 TrackList &getTracks(); 00196 00206 int getNumTracks() const; 00207 00219 Track *getTrack(int index); 00220 00233 int getTracksOffset() const; 00234 00242 void setTracksOffset(const int offset); 00243 00255 int getTracksCount() const; 00256 00264 void setTracksCount(const int count); 00265 00277 DiscList &getDiscs(); 00278 00288 int getNumDiscs() const; 00289 00301 Disc *getDisc(int index); 00302 00312 ReleaseEventList &getReleaseEvents(); 00313 00323 int getNumReleaseEvents() const; 00324 00336 ReleaseEvent *getReleaseEvent(int index); 00337 00343 void setTypes(const std::vector<std::string> &types); 00344 00352 std::vector<std::string> &getTypes(); 00353 00359 int getNumTypes() const; 00360 00373 std::string getType(int index) const; 00374 00375 private: 00376 00377 class ReleasePrivate; 00378 ReleasePrivate *d; 00379 }; 00380 00381 } 00382 00383 #endif 00384