libmusicbrainz4  4.0.3
Label.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_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
 All Classes Namespaces Files Functions Typedefs Enumerations Enumerator Defines