libmusicbrainz5  5.0.1
ReleaseGroup.h
Go to the documentation of this file.
00001 /* --------------------------------------------------------------------------
00002 
00003    libmusicbrainz5 - Client library to access MusicBrainz
00004 
00005    Copyright (C) 2012 Andrew Hawkins
00006 
00007    This file is part of libmusicbrainz5.
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    libmusicbrainz5 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 _MUSICBRAINZ5_RELEASE_GROUP_H
00026 #define _MUSICBRAINZ5_RELEASE_GROUP_H
00027 
00028 #include <string>
00029 #include <iostream>
00030 
00031 #include "musicbrainz5/Entity.h"
00032 #include "musicbrainz5/ReleaseList.h"
00033 #include "musicbrainz5/RelationList.h"
00034 #include "musicbrainz5/TagList.h"
00035 #include "musicbrainz5/UserTagList.h"
00036 #include "musicbrainz5/SecondaryTypeList.h"
00037 
00038 #include "musicbrainz5/xmlParser.h"
00039 
00040 namespace MusicBrainz5
00041 {
00042         class CReleaseGroupPrivate;
00043 
00044         class CArtistCredit;
00045         class CRating;
00046         class CUserRating;
00047         class CSecondaryType;
00048 
00049         class CReleaseGroup: public CEntity
00050         {
00051         public:
00052                 CReleaseGroup(const XMLNode& Node=XMLNode::emptyNode());
00053                 CReleaseGroup(const CReleaseGroup& Other);
00054                 CReleaseGroup& operator =(const CReleaseGroup& Other);
00055                 virtual ~CReleaseGroup();
00056 
00057                 virtual CReleaseGroup *Clone();
00058 
00059                 std::string ID() const;
00060                 std::string PrimaryType() const;
00061                 std::string Title() const;
00062                 std::string Disambiguation() const;
00063                 std::string FirstReleaseDate() const;
00064                 CArtistCredit *ArtistCredit() const;
00065                 CReleaseList *ReleaseList() const;
00066                 CRelationListList *RelationListList() const;
00067                 CTagList *TagList() const;
00068                 CUserTagList *UserTagList() const;
00069                 CRating *Rating() const;
00070                 CUserRating *UserRating() const;
00071                 CSecondaryTypeList *SecondaryTypeList() const;
00072 
00073                 virtual std::ostream& Serialise(std::ostream& os) const;
00074                 static std::string GetElementName();
00075 
00076         protected:
00077                 virtual void ParseAttribute(const std::string& Name, const std::string& Value);
00078                 virtual void ParseElement(const XMLNode& Node);
00079 
00080         private:
00081                 void Cleanup();
00082 
00083                 CReleaseGroupPrivate * const m_d;
00084         };
00085 }
00086 
00087 #endif
 All Classes Namespaces Files Functions Typedefs Enumerations Enumerator Defines