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_VALUEPARSE_WB_H
00031 #define ULXR_VALUEPARSE_WB_H
00032
00033 #include <ulxmlrpcpp/ulxmlrpcpp.h>
00034
00035 #include <ulxmlrpcpp/ulxr_wbxmlparse.h>
00036 #include <ulxmlrpcpp/ulxr_valueparse_base.h>
00037
00038 #include <stack>
00039
00040
00041 namespace ulxr {
00042
00043
00054 class ULXR_API_DECL0 ValueParserWb : public ValueParserBase,
00055 public WbXmlParser
00056 {
00057 public:
00058
00061 ValueParserWb();
00062
00065 virtual ~ValueParserWb();
00066
00067 enum ValueWellKnownToken
00068 {
00069
00070 wbToken_Value = wbxml_TAG_C_FIRST,
00071 wbToken_Array,
00072 wbToken_Data,
00073 wbToken_Struct,
00074 wbToken_Member,
00075 wbToken_Name,
00076 wbToken_Boolean,
00077 wbToken_Int,
00078 wbToken_I4,
00079 wbToken_Double,
00080 wbToken_String,
00081 wbToken_Base64,
00082 wbToken_Date,
00083 wbToken_ValueParserLast
00084 };
00085
00086 protected:
00087
00094 bool testStartElement(unsigned token, const Attributes &attr);
00095
00100 virtual void startElement(unsigned token, const Attributes &attr);
00101
00105 bool testEndElement();
00106
00109 virtual void endElement();
00110
00114 class ULXR_API_DECL0 IntegerState : public ValueParserBase::ValueState
00115 {
00116 public:
00117
00121 IntegerState(unsigned st);
00122
00126 virtual void takeValue(Value *val);
00127
00128 private:
00129 IntegerState(const IntegerState&);
00130 IntegerState& operator= (const IntegerState&);
00131 };
00132
00136 class ULXR_API_DECL0 BooleanState : public ValueParserBase::ValueState
00137 {
00138 public:
00139
00143 BooleanState(unsigned st);
00144
00148 virtual void takeValue(Value *val);
00149
00150 private:
00151 BooleanState(const BooleanState&);
00152 BooleanState& operator= (const BooleanState&);
00153 };
00154
00155 friend class IntegerState;
00156 friend class BooleanState;
00157
00161 ValueState *getTopValueState() const;
00162 };
00163
00164
00165 }
00166
00167
00168 #endif // ULXR_VALUEPARSE_WB_H