libmusicbrainz4  4.0.1
 All Classes Namespaces Files Functions Typedefs Enumerations Enumerator Defines
Artist.h
Go to the documentation of this file.
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