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_LABEL_H 00026 #define _MUSICBRAINZ4_LABEL_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/RelationList.h" 00036 #include "musicbrainz4/TagList.h" 00037 #include "musicbrainz4/UserTagList.h" 00038 00039 #include "musicbrainz4/xmlParser.h" 00040 00041 namespace MusicBrainz4 00042 { 00043 class CLabelPrivate; 00044 00045 class CLifespan; 00046 class CRating; 00047 class CUserRating; 00048 00049 class CLabel: public CEntity 00050 { 00051 public: 00052 CLabel(const XMLNode& Node=XMLNode::emptyNode()); 00053 CLabel(const CLabel& Other); 00054 CLabel& operator =(const CLabel& Other); 00055 virtual ~CLabel(); 00056 00057 virtual CLabel *Clone(); 00058 00059 std::string ID() const; 00060 std::string Type() const; 00061 std::string Name() const; 00062 std::string SortName() const; 00063 int LabelCode() const; 00064 00076 LIBMB4_DEPRECATED(MusicBrainz4::CLabel::IPIList) std::string IPI() const; 00077 CIPIList *IPIList() const; 00078 std::string Disambiguation() const; 00079 std::string Country() const; 00080 CLifespan *Lifespan() const; 00081 CAliasList *AliasList() const; 00082 CReleaseList *ReleaseList() const; 00083 00095 LIBMB4_DEPRECATED(MusicBrainz4::CLabel::RelationListList) CRelationList *RelationList() const; 00096 CRelationListList *RelationListList() const; 00097 CTagList *TagList() const; 00098 CUserTagList *UserTagList() const; 00099 CRating *Rating() const; 00100 CUserRating *UserRating() const; 00101 00102 virtual std::ostream& Serialise(std::ostream& os) const; 00103 static std::string GetElementName(); 00104 00105 protected: 00106 virtual void ParseAttribute(const std::string& Name, const std::string& Value); 00107 virtual void ParseElement(const XMLNode& Node); 00108 00109 private: 00110 void Cleanup(); 00111 00112 CLabelPrivate * const m_d; 00113 }; 00114 } 00115 00116 #endif