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 #ifndef ULXR_EXPATWRAP_H
00031 #define ULXR_EXPATWRAP_H
00032
00033 #include <ulxmlrpcpp/ulxmlrpcpp.h>
00034
00035 #include <ulxmlrpcpp/ulxr_xmlparse_base.h>
00036
00037
00038 namespace ulxr {
00039
00043 class ULXR_API_DECL0 ExpatWrapper : public XmlParserBase
00044 {
00045 public:
00046
00050 ExpatWrapper(bool createParser=true);
00051
00054 virtual ~ExpatWrapper();
00055
00062 virtual int parse(const char* buffer, int len, int isFinal);
00063
00067 virtual unsigned getErrorCode() const;
00068
00073 virtual CppString getErrorString(unsigned code) const;
00074
00078 virtual int getCurrentLineNumber() const;
00079
00084 virtual int mapToFaultCode(int xpatcode) const;
00085
00086 protected:
00087
00090 operator XML_Parser() const;
00091
00097 virtual void startElement(const XML_Char* name, const XML_Char** atts);
00098
00103 virtual void endElement(const XML_Char *name);
00104
00110 virtual void charData(const XML_Char *s, int len);
00111
00118 static void startElementCallback(void *userData, const XML_Char* name, const XML_Char** atts);
00119
00125 static void endElementCallback(void *userData, const XML_Char* name);
00126
00133 static void charDataCallback(void *userData, const XML_Char* s, int len);
00134
00135 private:
00136
00139 void setHandler();
00140
00143 void reset();
00144
00145 private:
00146
00147 XML_Parser expatParser;
00148 };
00149
00150
00151 }
00152
00153
00154 #endif // ULXR_EXPATWRAP_H
00155