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_ARTIST_H 00026 #define _MUSICBRAINZ4_ARTIST_H 00027 00028 #include <string> 00029 #include <iostream> 00030 00031 #include "musicbrainz4/Entity.h" 00032 #include "musicbrainz4/IPIList.h" 00033 #include "musicbrainz4/ReleaseList.h" 00034 #include "musicbrainz4/AliasList.h" 00035 #include "musicbrainz4/RecordingList.h" 00036 #include "musicbrainz4/ReleaseGroupList.h" 00037 #include "musicbrainz4/LabelList.h" 00038 #include "musicbrainz4/WorkList.h" 00039 #include "musicbrainz4/RelationList.h" 00040 #include "musicbrainz4/TagList.h" 00041 #include "musicbrainz4/UserTagList.h" 00042 00043 #include "musicbrainz4/xmlParser.h" 00044 00045 namespace MusicBrainz4 00046 { 00047 class CArtistPrivate; 00048 class CLifespan; 00049 class CRating; 00050 class CUserRating; 00051 00052 class CArtist: public CEntity 00053 { 00054 public: 00055 CArtist(const XMLNode& Node=XMLNode::emptyNode()); 00056 CArtist(const CArtist& Other); 00057 CArtist& operator =(const CArtist& Other); 00058 virtual ~CArtist(); 00059 00060 virtual CArtist *Clone(); 00061 00062 std::string ID() const; 00063 std::string Type() const; 00064 std::string Name() const; 00065 std::string SortName() const; 00066 std::string Gender() const; 00067 std::string Country() const; 00068 std::string Disambiguation() const; 00069 00081 LIBMB4_DEPRECATED(MusicBrainz4::CArtist::IPIList) std::string IPI() const; 00082 CIPIList *IPIList() const; 00083 CLifespan *Lifespan() const; 00084 CAliasList *AliasList() const; 00085 CRecordingList *RecordingList() const; 00086 CReleaseList *ReleaseList() const; 00087 CReleaseGroupList *ReleaseGroupList() const; 00088 CLabelList *LabelList() const; 00089 CWorkList *WorkList() const; 00090 00102 LIBMB4_DEPRECATED(MusicBrainz4::CArtist::RelationListList) CRelationList *RelationList() const; 00103 CRelationListList *RelationListList() const; 00104 CTagList *TagList() const; 00105 CUserTagList *UserTagList() const; 00106 CRating *Rating() const; 00107 CUserRating *UserRating() const; 00108 00109 virtual std::ostream& Serialise(std::ostream& os) const; 00110 static std::string GetElementName(); 00111 00112 protected: 00113 virtual void ParseAttribute(const std::string& Name, const std::string& Value); 00114 virtual void ParseElement(const XMLNode& Node); 00115 00116 private: 00117 void Cleanup(); 00118 00119 CArtistPrivate * const m_d; 00120 }; 00121 } 00122 00123 #endif