libmusicbrainz4
4.0.1
|
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/ReleaseList.h" 00033 #include "musicbrainz4/AliasList.h" 00034 #include "musicbrainz4/RecordingList.h" 00035 #include "musicbrainz4/ReleaseGroupList.h" 00036 #include "musicbrainz4/LabelList.h" 00037 #include "musicbrainz4/WorkList.h" 00038 #include "musicbrainz4/RelationList.h" 00039 #include "musicbrainz4/TagList.h" 00040 #include "musicbrainz4/UserTagList.h" 00041 00042 #include "musicbrainz4/xmlParser.h" 00043 00044 namespace MusicBrainz4 00045 { 00046 class CArtistPrivate; 00047 class CLifespan; 00048 class CRating; 00049 class CUserRating; 00050 00051 class CArtist: public CEntity 00052 { 00053 public: 00054 CArtist(const XMLNode& Node=XMLNode::emptyNode()); 00055 CArtist(const CArtist& Other); 00056 CArtist& operator =(const CArtist& Other); 00057 virtual ~CArtist(); 00058 00059 virtual CArtist *Clone(); 00060 00061 std::string ID() const; 00062 std::string Type() const; 00063 std::string Name() const; 00064 std::string SortName() const; 00065 std::string Gender() const; 00066 std::string Country() const; 00067 std::string Disambiguation() const; 00068 std::string IPI() const; 00069 CLifespan *Lifespan() const; 00070 CAliasList *AliasList() const; 00071 CRecordingList *RecordingList() const; 00072 CReleaseList *ReleaseList() const; 00073 CReleaseGroupList *ReleaseGroupList() const; 00074 CLabelList *LabelList() const; 00075 CWorkList *WorkList() const; 00076 00088 CRelationList *RelationList() const LIBMB4_DEPRECATED; 00089 00090 CRelationListList *RelationListList() const; 00091 CTagList *TagList() const; 00092 CUserTagList *UserTagList() const; 00093 CRating *Rating() const; 00094 CUserRating *UserRating() const; 00095 00096 virtual std::ostream& Serialise(std::ostream& os) const; 00097 static std::string GetElementName(); 00098 00099 protected: 00100 virtual bool ParseAttribute(const std::string& Name, const std::string& Value); 00101 virtual bool ParseElement(const XMLNode& Node); 00102 00103 private: 00104 void Cleanup(); 00105 00106 CArtistPrivate * const m_d; 00107 }; 00108 } 00109 00110 #endif