libmusicbrainz4  4.0.0
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: 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