libmusicbrainz5
5.0.1
|
00001 /* -------------------------------------------------------------------------- 00002 00003 libmusicbrainz5 - Client library to access MusicBrainz 00004 00005 Copyright (C) 2012 Andrew Hawkins 00006 00007 This file is part of libmusicbrainz5. 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 libmusicbrainz5 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 _MUSICBRAINZ5_RELEASE_GROUP_H 00026 #define _MUSICBRAINZ5_RELEASE_GROUP_H 00027 00028 #include <string> 00029 #include <iostream> 00030 00031 #include "musicbrainz5/Entity.h" 00032 #include "musicbrainz5/ReleaseList.h" 00033 #include "musicbrainz5/RelationList.h" 00034 #include "musicbrainz5/TagList.h" 00035 #include "musicbrainz5/UserTagList.h" 00036 #include "musicbrainz5/SecondaryTypeList.h" 00037 00038 #include "musicbrainz5/xmlParser.h" 00039 00040 namespace MusicBrainz5 00041 { 00042 class CReleaseGroupPrivate; 00043 00044 class CArtistCredit; 00045 class CRating; 00046 class CUserRating; 00047 class CSecondaryType; 00048 00049 class CReleaseGroup: public CEntity 00050 { 00051 public: 00052 CReleaseGroup(const XMLNode& Node=XMLNode::emptyNode()); 00053 CReleaseGroup(const CReleaseGroup& Other); 00054 CReleaseGroup& operator =(const CReleaseGroup& Other); 00055 virtual ~CReleaseGroup(); 00056 00057 virtual CReleaseGroup *Clone(); 00058 00059 std::string ID() const; 00060 std::string PrimaryType() const; 00061 std::string Title() const; 00062 std::string Disambiguation() const; 00063 std::string FirstReleaseDate() const; 00064 CArtistCredit *ArtistCredit() const; 00065 CReleaseList *ReleaseList() const; 00066 CRelationListList *RelationListList() const; 00067 CTagList *TagList() const; 00068 CUserTagList *UserTagList() const; 00069 CRating *Rating() const; 00070 CUserRating *UserRating() const; 00071 CSecondaryTypeList *SecondaryTypeList() const; 00072 00073 virtual std::ostream& Serialise(std::ostream& os) const; 00074 static std::string GetElementName(); 00075 00076 protected: 00077 virtual void ParseAttribute(const std::string& Name, const std::string& Value); 00078 virtual void ParseElement(const XMLNode& Node); 00079 00080 private: 00081 void Cleanup(); 00082 00083 CReleaseGroupPrivate * const m_d; 00084 }; 00085 } 00086 00087 #endif