libmusicbrainz4
4.0.3
|
00001 /* -------------------------------------------------------------------------- 00002 00003 libmusicbrainz4 - Client library to access MusicBrainz 00004 00005 Copyright (C) 2011 Andrew Hawkins 00006 00007 This file is part of libmusicbrainz4. 00008 00009 This library is free software; you can redistribute it and/or 00010 modify it under the terms of v2 of the GNU Lesser General Public 00011 License as published by the Free Software Foundation. 00012 00013 libmusicbrainz4 is distributed in the hope that it will be useful, 00014 but WITHOUT ANY WARRANTY; without even the implied warranty of 00015 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 00016 Lesser General Public License for more details. 00017 00018 You should have received a copy of the GNU General Public License 00019 along with this library. If not, see <http://www.gnu.org/licenses/>. 00020 00021 $Id$ 00022 00023 ----------------------------------------------------------------------------*/ 00024 00025 #ifndef _MUSICBRAINZ4_RELEASE_H 00026 #define _MUSICBRAINZ4_RELEASE_H 00027 00028 #include "musicbrainz4/Entity.h" 00029 #include "musicbrainz4/LabelInfoList.h" 00030 #include "musicbrainz4/RelationList.h" 00031 #include "musicbrainz4/MediumList.h" 00032 #include "musicbrainz4/CollectionList.h" 00033 00034 #include "musicbrainz4/xmlParser.h" 00035 00036 #include <string> 00037 #include <iostream> 00038 00039 namespace MusicBrainz4 00040 { 00041 class CReleasePrivate; 00042 00043 class CTextRepresentation; 00044 class CArtistCredit; 00045 class CReleaseGroup; 00046 class CMedium; 00047 00048 class CRelease: public CEntity 00049 { 00050 public: 00051 CRelease(const XMLNode& Node=XMLNode::emptyNode()); 00052 CRelease(const CRelease& Other); 00053 CRelease& operator =(const CRelease& Other); 00054 virtual ~CRelease(); 00055 00056 virtual CRelease *Clone(); 00057 00058 std::string ID() const; 00059 std::string Title() const; 00060 std::string Status() const; 00061 std::string Quality() const; 00062 std::string Disambiguation() const; 00063 std::string Packaging() const; 00064 CTextRepresentation *TextRepresentation() const; 00065 CArtistCredit *ArtistCredit() const; 00066 CReleaseGroup *ReleaseGroup() const; 00067 std::string Date() const; 00068 std::string Country() const; 00069 std::string Barcode() const; 00070 std::string ASIN() const; 00071 CLabelInfoList *LabelInfoList() const; 00072 CMediumList *MediumList() const; 00073 00085 LIBMB4_DEPRECATED(MusicBrainz4::CRelease::RelationListList) CRelationList *RelationList() const; 00086 CRelationListList *RelationListList() const; 00087 CCollectionList *CollectionList() const; 00088 00089 CMediumList MediaMatchingDiscID(const std::string& DiscID) const; 00090 00091 virtual std::ostream& Serialise(std::ostream& os) const; 00092 static std::string GetElementName(); 00093 00094 protected: 00095 virtual void ParseAttribute(const std::string& Name, const std::string& Value); 00096 virtual void ParseElement(const XMLNode& Node); 00097 00098 private: 00099 void Cleanup(); 00100 00101 CReleasePrivate * const m_d; 00102 }; 00103 } 00104 00105 #endif