libmusicbrainz4  4.0.3
Release.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_RELEASE_H
00026 #define _MUSICBRAINZ4_RELEASE_H
00027 
00028 #include "musicbrainz4/Entity.h"
00029 #include "musicbrainz4/LabelInfoList.h"
00030 #include "musicbrainz4/RelationList.h"
00031 #include "musicbrainz4/MediumList.h"
00032 #include "musicbrainz4/CollectionList.h"
00033 
00034 #include "musicbrainz4/xmlParser.h"
00035 
00036 #include <string>
00037 #include <iostream>
00038 
00039 namespace MusicBrainz4
00040 {
00041         class CReleasePrivate;
00042 
00043         class CTextRepresentation;
00044         class CArtistCredit;
00045         class CReleaseGroup;
00046         class CMedium;
00047 
00048         class CRelease: public CEntity
00049         {
00050         public:
00051                 CRelease(const XMLNode& Node=XMLNode::emptyNode());
00052                 CRelease(const CRelease& Other);
00053                 CRelease& operator =(const CRelease& Other);
00054                 virtual ~CRelease();
00055 
00056                 virtual CRelease *Clone();
00057 
00058                 std::string ID() const;
00059                 std::string Title() const;
00060                 std::string Status() const;
00061                 std::string Quality() const;
00062                 std::string Disambiguation() const;
00063                 std::string Packaging() const;
00064                 CTextRepresentation *TextRepresentation() const;
00065                 CArtistCredit *ArtistCredit() const;
00066                 CReleaseGroup *ReleaseGroup() const;
00067                 std::string Date() const;
00068                 std::string Country() const;
00069                 std::string Barcode() const;
00070                 std::string ASIN() const;
00071                 CLabelInfoList *LabelInfoList() const;
00072                 CMediumList *MediumList() const;
00073 
00085                 LIBMB4_DEPRECATED(MusicBrainz4::CRelease::RelationListList) CRelationList *RelationList() const;
00086                 CRelationListList *RelationListList() const;
00087                 CCollectionList *CollectionList() const;
00088 
00089                 CMediumList MediaMatchingDiscID(const std::string& DiscID) const;
00090 
00091                 virtual std::ostream& Serialise(std::ostream& os) const;
00092                 static std::string GetElementName();
00093 
00094         protected:
00095                 virtual void ParseAttribute(const std::string& Name, const std::string& Value);
00096                 virtual void ParseElement(const XMLNode& Node);
00097 
00098         private:
00099                 void Cleanup();
00100 
00101                 CReleasePrivate * const m_d;
00102         };
00103 }
00104 
00105 #endif
 All Classes Namespaces Files Functions Typedefs Enumerations Enumerator Defines