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_BASE_H
00031 #define ULXR_VALUEPARSE_BASE_H
00032
00033 #include <ulxmlrpcpp/ulxmlrpcpp.h>
00034
00035 #include <ulxmlrpcpp/ulxr_value.h>
00036 #include <ulxmlrpcpp/ulxr_xmlparse_base.h>
00037
00038
00039 namespace ulxr {
00040
00041
00052 class ULXR_API_DECL0 ValueParserBase
00053 {
00054 public:
00055
00058 virtual ~ValueParserBase();
00059
00063 Value getValue() const;
00064
00065 enum State
00066 {
00067 eValue = XmlParserBase::eXmlParserLast,
00068 eArray, eData,
00069 eStruct, eMember, eName,
00070 eBoolean, eInt, eI4, eDouble,
00071 eString, eBase64, eDate,
00072 eValueParserLast
00073 };
00074
00077 class ULXR_API_DECL0 ValueState : public XmlParserBase::ParserState
00078 {
00079 public:
00080
00084 ValueState (unsigned st);
00085
00089 virtual void takeValue(Value *val);
00090
00095 virtual void takeName(const CppString &name);
00096
00101 virtual CppString getStateName() const;
00102
00107 CppString getName() const;
00108
00113 void setName(const CppString &name);
00114
00118 Value* getValue() const;
00119
00120 protected:
00121
00122 Value *value;
00123
00124 private:
00125
00126 CppString name;
00127
00128 ValueState(const ValueState&);
00129 ValueState& operator= (const ValueState&);
00130 };
00131
00132 protected:
00133
00137 class ULXR_API_DECL0 MemberState : public ValueState
00138 {
00139 public:
00140
00145 MemberState(unsigned st, Value *val);
00146
00150 virtual void takeValue(Value *val);
00151
00155 virtual void takeName(const CppString &name);
00156
00157 protected:
00158
00159 Value *mem_val;
00160
00161 private:
00162 MemberState(const MemberState&);
00163 MemberState& operator= (const MemberState&);
00164 };
00165
00166
00170 class ULXR_API_DECL0 ArrayState : public ValueState
00171 {
00172 public:
00173
00177 ArrayState(unsigned st);
00178
00182 virtual void takeValue(Value *val);
00183
00184 private:
00185 ArrayState(const ArrayState&);
00186 ArrayState& operator= (const ArrayState&);
00187 };
00188
00189 friend class ValueState;
00190
00191 protected:
00192
00196 virtual ValueState *getTopValueState() const = 0;
00197 };
00198
00199
00200 }
00201
00202
00203 #endif // ULXR_VALUEPARSE_BASE_H