2 #ifndef _XMLRPCPARSERS_HXX_
3 #define _XMLRPCPARSERS_HXX_
5 #include "parserBase.hxx"
12 /*! \brief Class for XML-RPC value parser.
14 * This class is used to parse XML data that describes a sequence in XML-RPC format
18 <xsd:complexType name="ValueType">
20 <xsd:element name="int" type="IntType"/>
21 <xsd:element name="boolean" type="BooleanType"/>
22 <xsd:element name="double" type="DoubleType"/>
23 <xsd:element name="string" type="StringType"/>
24 <xsd:element name="objref" type="ObjrefType"/>
25 <xsd:element name="array" type="ArrayType"/>
26 <xsd:element name="struct" type="StructType"/>
31 struct valuetypeParser: parser
33 static valuetypeParser valueParser;
34 virtual void onStart(const XML_Char* el, const XML_Char** attr);
35 virtual void onEnd(const char *el,parser* child);
37 virtual void int_ (const int& d);
38 virtual void boolean (const bool& d);
39 virtual void double_ (const double& d);
40 virtual void string(const std::string& d);
41 virtual void objref(const std::string& d);
42 virtual void array (const std::string& d);
43 virtual void struct_ (const std::string& d);
44 virtual std::string post();
46 std::vector<std::string> _v;
49 /*! \brief Class for XML-RPC data parser.
51 * This class is used to parse XML data that describes a sequence in XML-RPC format
55 <xsd:complexType name="DataType">
56 <xsd:element name="value" type="ValueType"/>
60 struct datatypeParser: parser
62 static datatypeParser dataParser;
63 virtual void onStart(const XML_Char* el, const XML_Char** attr);
64 virtual void onEnd(const char *el,parser* child);
66 virtual void value (const std::string& v);
67 virtual std::string post();
69 std::vector<std::string> _datas;
72 /*! \brief Class for XML-RPC member parser.
74 * This class is used to parse XML data that describes a sequence in XML-RPC format
78 <xsd:complexType name="MemberDataType">
79 <xsd:element name="name" type="StringType"/>
80 <xsd:element name="value" type="ValueType"/>
84 struct memberdatatypeParser: parser
86 static memberdatatypeParser memberdataParser;
87 virtual void onStart(const XML_Char* el, const XML_Char** attr);
88 virtual void onEnd(const char *el,parser* child);
90 virtual void name (const std::string& v);
91 virtual void value (const std::string& v);
92 virtual std::string post();
94 std::vector<std::string> _datas;
97 /*! \brief Class for XML-RPC struct parser.
99 * This class is used to parse XML data that describes a sequence in XML-RPC format
103 <xsd:complexType name="StructDataType">
104 <xsd:element name="member" type="MemberDataType" minOccurs="1"/>
108 struct structdatatypeParser: parser
110 static structdatatypeParser structdataParser;
111 virtual void onStart(const XML_Char* el, const XML_Char** attr);
112 virtual void onEnd(const char *el,parser* child);
114 virtual void member (const std::string& d);
115 virtual std::string post();
116 std::string _members;
117 std::vector<std::string> _membersStack;
120 /*! \brief Class for XML-RPC array parser.
122 * This class is used to parse XML data that describes a sequence in XML-RPC format
126 <xsd:complexType name="ArrayType">
127 <xsd:element name="data" type="DataType" minOccurs="1" maxOccurs="1"/>
131 struct arraytypeParser: parser
133 static arraytypeParser arrayParser;
134 virtual void onStart(const XML_Char* el, const XML_Char** attr);
135 virtual void onEnd(const char *el,parser* child);
137 virtual void data (const std::string& d);
138 virtual std::string post();
139 std::vector<std::string> _arrays;
142 struct parametertypeParser: parser
144 static parametertypeParser parameterParser;
146 virtual void onStart(const XML_Char* el, const XML_Char** attr);
147 virtual void onEnd(const char *el,parser* child);
149 virtual void tonode (const std::string& name);
150 virtual void toport (const std::string& name);
151 virtual void value (const std::string& name);
152 virtual myparam& post();