libmusicbrainz4
4.0.3
|
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_MEDIUM_H 00026 #define _MUSICBRAINZ4_MEDIUM_H 00027 00028 #include <string> 00029 #include <iostream> 00030 00031 #include "musicbrainz4/Entity.h" 00032 #include "musicbrainz4/DiscList.h" 00033 #include "musicbrainz4/TrackList.h" 00034 00035 #include "musicbrainz4/xmlParser.h" 00036 00037 namespace MusicBrainz4 00038 { 00039 class CMediumPrivate; 00040 00041 class CMedium: public CEntity 00042 { 00043 public: 00044 CMedium(const XMLNode& Node=XMLNode::emptyNode()); 00045 CMedium(const CMedium& Other); 00046 CMedium& operator =(const CMedium& Other); 00047 virtual ~CMedium(); 00048 00049 virtual CMedium *Clone(); 00050 00051 std::string Title() const; 00052 int Position() const; 00053 std::string Format() const; 00054 CDiscList *DiscList() const; 00055 CTrackList *TrackList() const; 00056 00057 bool ContainsDiscID(const std::string& DiscID) const; 00058 00059 virtual std::ostream& Serialise(std::ostream& os) const; 00060 static std::string GetElementName(); 00061 00062 protected: 00063 virtual void ParseAttribute(const std::string& Name, const std::string& Value); 00064 virtual void ParseElement(const XMLNode& Node); 00065 00066 private: 00067 void Cleanup(); 00068 00069 CMediumPrivate * const m_d; 00070 }; 00071 } 00072 00073 #endif