libmusicbrainz4
4.0.0
|
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: Label.h 13265 2011-08-25 12:53:44Z adhawkins $ 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/ReleaseList.h" 00033 #include "musicbrainz4/AliasList.h" 00034 #include "musicbrainz4/RelationList.h" 00035 #include "musicbrainz4/TagList.h" 00036 #include "musicbrainz4/UserTagList.h" 00037 00038 #include "musicbrainz4/xmlParser.h" 00039 00040 namespace MusicBrainz4 00041 { 00042 class CLabelPrivate; 00043 00044 class CLifespan; 00045 class CRating; 00046 class CUserRating; 00047 00048 class CLabel: public CEntity 00049 { 00050 public: 00051 CLabel(const XMLNode& Node=XMLNode::emptyNode()); 00052 CLabel(const CLabel& Other); 00053 CLabel& operator =(const CLabel& Other); 00054 virtual ~CLabel(); 00055 00056 virtual CLabel *Clone(); 00057 00058 std::string ID() const; 00059 std::string Type() const; 00060 std::string Name() const; 00061 std::string SortName() const; 00062 int LabelCode() const; 00063 std::string IPI() const; 00064 std::string Disambiguation() const; 00065 std::string Country() const; 00066 CLifespan *Lifespan() const; 00067 CAliasList *AliasList() const; 00068 CReleaseList *ReleaseList() const; 00069 CRelationList *RelationList() const; 00070 CTagList *TagList() const; 00071 CUserTagList *UserTagList() const; 00072 CRating *Rating() const; 00073 CUserRating *UserRating() const; 00074 00075 virtual std::ostream& Serialise(std::ostream& os) const; 00076 static std::string GetElementName(); 00077 00078 protected: 00079 virtual bool ParseAttribute(const std::string& Name, const std::string& Value); 00080 virtual bool ParseElement(const XMLNode& Node); 00081 00082 private: 00083 void Cleanup(); 00084 00085 CLabelPrivate * const m_d; 00086 }; 00087 } 00088 00089 #endif