00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037
00038
00039
00040
00046 #ifndef XSPF_WRITER_H
00047 #define XSPF_WRITER_H
00048
00049 #include "XspfDefines.h"
00050
00051 namespace Xspf {
00052
00053
00054 class XspfXmlFormatter;
00055 class XspfTrack;
00056 class XspfProps;
00057 class XspfWriterPrivate;
00058
00059
00063 enum XspfWriterReturnCode {
00064 XSPF_WRITER_SUCCESS,
00065
00066 XSPF_WRITER_ERROR_OPENING,
00067 XSPF_WRITER_ERROR_BASE_URI_USELESS
00068 };
00069
00070
00075 class XspfWriter {
00076
00077 private:
00079 XspfWriterPrivate * const d;
00080
00081
00082 private:
00093 XspfWriter(XspfXmlFormatter & formatter, XML_Char const * baseUri,
00094 bool embedBase);
00095
00096 public:
00111 static XspfWriter * makeWriter(XspfXmlFormatter & formatter,
00112 XML_Char const * baseUri, bool embedBase = false,
00113 int * errorCode = NULL);
00114
00120 XspfWriter(XspfWriter const & source);
00121
00127 XspfWriter & operator=(XspfWriter const & source);
00128
00132 ~XspfWriter();
00133
00146 bool registerNamespace(XML_Char const * uri,
00147 XML_Char const * prefixSuggestion);
00148
00158 bool addTrack(XspfTrack const * track);
00159
00169 bool addTrack(XspfTrack const & track);
00170
00184 bool setProps(XspfProps const * props);
00185
00199 bool setProps(XspfProps const & props);
00200
00210 int writeFile(XML_Char const * filename);
00211
00222 int writeMemory(char * & memory, int & numBytes);
00223
00234 void reset(XspfXmlFormatter & formatter,
00235 XML_Char const * baseUri, bool embedBase = false);
00236
00237 private:
00241 void onBeforeWrite();
00242
00243 public:
00245 static bool const EMBED_AS_XML_BASE;
00246
00248 static bool const NO_XML_BASE;
00249 };
00250
00251
00252 }
00253
00254
00255 #endif // XSPF_WRITER_H