Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023 #ifndef UTXML_H
00024 #define UTXML_H
00025
00026
00027
00028
00029
00030 #ifndef UT_TYPES_H
00031 #include "ut_types.h"
00032 #endif
00033 #include "ut_bytebuf.h"
00034
00035
00036
00037 ABI_EXPORT char * UT_XML_Decode( const char * inKey );
00038
00039 class ABI_EXPORT UT_XML
00040 {
00041 public:
00042 UT_XML ();
00043
00044 virtual ~UT_XML ();
00045
00046
00047
00048 void setNameSpace (const char * xml_namespace);
00049 UT_sint32 getNumMinorErrors(void) const
00050 { return m_iMinorErrors;}
00051
00052 UT_sint32 getNumRecoveredErrors(void) const
00053 { return m_iRecoveredErrors;}
00054 void incMinorErrors(void)
00055 { m_iMinorErrors++;}
00056 void incRecoveredErrors(void)
00057 { m_iRecoveredErrors++;}
00058
00059 private:
00060 bool m_is_chardata;
00061
00062 char * m_chardata_buffer;
00063
00064 UT_uint32 m_chardata_length;
00065 UT_uint32 m_chardata_max;
00066 UT_sint32 m_iMinorErrors;
00067 UT_sint32 m_iRecoveredErrors;
00068
00069 bool grow (char *& buffer, UT_uint32 & length, UT_uint32 & max, UT_uint32 require);
00070
00071 protected:
00072 bool reset_all ();
00073 private:
00074 void flush_all ();
00075
00076 const char * m_namespace;
00077 int m_nslength;
00078
00079 public:
00080
00081
00082 bool sniff (const UT_ByteBuf * pBB, const char * xml_type);
00083 bool sniff (const char * buffer, UT_uint32 length, const char * xml_type);
00084
00085 private:
00086 bool m_bSniffing;
00087 bool m_bValid;
00088
00089 const char * m_xml_type;
00090
00091 public:
00092 virtual UT_Error parse (const char * szFilename);
00093 virtual UT_Error parse (const char * buffer, UT_uint32 length);
00094
00095 UT_Error parse (const UT_ByteBuf * pBB);
00096
00097 public:
00098 void stop () { m_bStopped = true; }
00099
00100 protected:
00101 bool m_bStopped;
00102
00103 public:
00104 class ABI_EXPORT Listener
00105 {
00106 public:
00107 virtual ~Listener () {}
00108
00109 virtual void startElement (const gchar * name, const gchar ** atts) = 0;
00110 virtual void endElement (const gchar * name) = 0;
00111 virtual void charData (const gchar * buffer, int length) = 0;
00112
00113 protected:
00114 Listener () {}
00115 };
00116
00117 void setListener (Listener * pListener) { m_pListener = pListener; }
00118
00119 protected:
00120 Listener * m_pListener;
00121
00122 public:
00123
00124
00125
00126 class ABI_EXPORT ExpertListener
00127 {
00128 public:
00129 virtual ~ExpertListener () {}
00130
00131 virtual void StartElement (const gchar * name, const gchar ** atts) = 0;
00132 virtual void EndElement (const gchar * name) = 0;
00133 virtual void CharData (const gchar * buffer, int length) = 0;
00134 virtual void ProcessingInstruction (const gchar * target, const gchar * data) = 0;
00135 virtual void Comment (const gchar * data) = 0;
00136 virtual void StartCdataSection () = 0;
00137 virtual void EndCdataSection () = 0;
00138 virtual void Default (const gchar * buffer, int length) = 0;
00139
00140 protected:
00141 ExpertListener () {}
00142 };
00143
00144 void setExpertListener (ExpertListener * pExpertListener) { m_pExpertListener = pExpertListener; }
00145
00146 protected:
00147 ExpertListener * m_pExpertListener;
00148
00149 public:
00150 class ABI_EXPORT Reader
00151 {
00152 public:
00153 virtual ~Reader () {}
00154
00155 virtual bool openFile (const char * szFilename) = 0;
00156 virtual UT_uint32 readBytes (char * buffer, UT_uint32 length) = 0;
00157 virtual void closeFile (void) = 0;
00158
00159 protected:
00160 Reader () {}
00161 };
00162
00163 void setReader (Reader * pReader) { m_pReader = pReader; }
00164
00165 protected:
00166 Reader * m_pReader;
00167
00168 public:
00169
00170
00171
00172
00173
00174
00175
00176
00177
00178
00179
00180
00181
00182
00183
00184
00185
00186 void startElement (const gchar * name, const gchar ** atts);
00187 void endElement (const gchar * name);
00188 void charData (const gchar * buffer, int length);
00189 void processingInstruction (const gchar * target, const gchar * data);
00190 void comment (const gchar * data);
00191 void cdataSection (bool start);
00192 void defaultData (const gchar * buffer, int length);
00193 };
00194
00195 class ABI_EXPORT DefaultReader : public UT_XML::Reader
00196 {
00197 public:
00198 DefaultReader ();
00199 virtual ~DefaultReader ();
00200
00201 virtual bool openFile (const char * szFilename);
00202 virtual UT_uint32 readBytes (char * buffer, UT_uint32 length);
00203 virtual void closeFile (void);
00204
00205 private:
00206 FILE * in;
00207 };
00208
00209
00210
00211
00212
00213
00214 class ABI_EXPORT UT_XML_BufReader : public UT_XML::Reader
00215 {
00216 public:
00217 UT_XML_BufReader (const char * buffer, UT_uint32 length);
00218
00219 virtual ~UT_XML_BufReader ();
00220
00221 virtual bool openFile (const char * szFilename);
00222 virtual UT_uint32 readBytes (char * buffer, UT_uint32 length);
00223 virtual void closeFile (void);
00224
00225 private:
00226 const char * const m_buffer;
00227 const char * m_bufptr;
00228
00229 UT_uint32 m_length;
00230 };
00231
00232 #endif