1 mike 1.13 //%/////////////////////////////////////////////////////////////////////////////
2 //
3 // Copyright (c) 2000, 2001 The Open group, BMC Software, Tivoli Systems, IBM
4 //
5 // Permission is hereby granted, free of charge, to any person obtaining a copy
6 // of this software and associated documentation files (the "Software"), to
7 // deal in the Software without restriction, including without limitation the
8 // rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
9 // sell copies of the Software, and to permit persons to whom the Software is
10 // furnished to do so, subject to the following conditions:
11 //
12 // THE ABOVE COPYRIGHT NOTICE AND THIS PERMISSION NOTICE SHALL BE INCLUDED IN
13 // ALL COPIES OR SUBSTANTIAL PORTIONS OF THE SOFTWARE. THE SOFTWARE IS PROVIDED
14 // "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT
15 // LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR
16 // PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
17 // HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
18 // ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
19 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
20 //
21 //==============================================================================
22 mike 1.13 //
23 // Author: Mike Brasher (mbrasher@bmc.com)
24 //
25 // Modified By:
26 //
27 //%/////////////////////////////////////////////////////////////////////////////
28
29 #ifndef Pegasus_XmlReader_h
30 #define Pegasus_XmlReader_h
31
32 #include <Pegasus/Common/Config.h>
33 #include <Pegasus/Common/XmlParser.h>
34 #include <Pegasus/Common/CIMFlavor.h>
35 #include <Pegasus/Common/CIMScope.h>
36 #include <Pegasus/Common/CIMReference.h>
37
38 PEGASUS_NAMESPACE_BEGIN
39
40 class CIMQualifier;
41 class CIMQualifierDecl;
42 class CIMClass;
43 mike 1.13 class CIMInstance;
44 class CIMProperty;
45 class CIMParameter;
46 class CIMMethod;
|
47 mike 1.14 class CIMObject;
48 class CIMObjectWithPath;
|
49 mike 1.13
50 class PEGASUS_COMMON_LINKAGE XmlReader
51 {
52 public:
53
54 static void expectXmlDeclaration(
55 XmlParser& parser,
56 XmlEntry& entry);
57
58 static void expectStartTag(
59 XmlParser& parser,
60 XmlEntry& entry,
61 const char* tagName);
62
63 static void expectEndTag(
64 XmlParser& parser,
65 const char* tagName);
66
67 static void expectStartTagOrEmptyTag(
68 XmlParser& parser,
69 XmlEntry& entry,
70 mike 1.13 const char* tagName);
71
72 static Boolean expectContentOrCData(
73 XmlParser& parser,
74 XmlEntry& entry);
75
76 static Boolean testStartTag(
77 XmlParser& parser,
78 XmlEntry& entry,
79 const char* tagName);
80
81 static Boolean testEndTag(
82 XmlParser& parser,
83 const char* tagName);
84
85 static Boolean testStartTagOrEmptyTag(
86 XmlParser& parser,
87 XmlEntry& entry,
88 const char* tagName);
89
90 static Boolean testContentOrCData(
91 mike 1.13 XmlParser& parser,
92 XmlEntry& entry);
93
94 static void testCimStartTag(XmlParser& parser);
95
96 static Boolean getIsArrayAttribute(
97 Uint32 lineNumber,
98 const XmlEntry& entry,
99 const char* tagName,
100 Boolean& value);
101
102 static String getCimNameAttribute(
103 Uint32 lineNumber,
104 const XmlEntry& entry,
105 const char* elementName,
106 Boolean acceptNull = false);
107
108 static String getClassNameAttribute(
109 Uint32 lineNumber,
110 const XmlEntry& entry,
111 const char* elementName);
112 mike 1.13
113 static String getClassOriginAttribute(
114 Uint32 lineNumber,
115 const XmlEntry& entry,
116 const char* tagName);
117
118 static String getReferenceClassAttribute(
119 Uint32 lineNumber,
120 const XmlEntry& entry,
121 const char* elementName);
122
123 static String getSuperClassAttribute(
124 Uint32 lineNumber,
125 const XmlEntry& entry,
126 const char* tagName);
127
128 static CIMType getCimTypeAttribute(
129 Uint32 lineNumber,
130 const XmlEntry& entry,
131 const char* tagName);
132
133 mike 1.13 static Boolean getCimBooleanAttribute(
134 Uint32 lineNumber,
135 const XmlEntry& entry,
136 const char* tagName,
137 const char* attributeName,
138 Boolean defaultValue,
139 Boolean required);
140
141 static Boolean stringToReal(
142 const char* stringValue,
143 Real64& x);
144
145 static Boolean stringToSignedInteger(
146 const char* stringValue,
147 Sint64& x);
148
149 static Boolean stringToUnsignedInteger(
150 const char* stringValue,
151 Uint64& x);
152
153 static CIMValue stringToValue(
154 mike 1.13 Uint32 lineNumber,
155 const char* valueString,
156 CIMType type);
157
158 static Boolean getValueElement(
159 XmlParser& parser,
160 CIMType type,
161 CIMValue& value);
162
|
163 mike 1.15 static Boolean getStringValueElement(
164 XmlParser& parser,
165 String& str,
166 Boolean required);
167
|
168 mike 1.13 static CIMValue stringArrayToValue(
169 Uint32 lineNumber,
170 const Array<const char*>& array,
171 CIMType type);
172
173 static Boolean getValueArrayElement(
174 XmlParser& parser,
175 CIMType type,
176 CIMValue& value);
177
178 static Uint32 getFlavor(
179 XmlEntry& entry,
180 Uint32 lineNumber,
181 const char* tagName);
182
183 static Uint32 getOptionalScope(
184 XmlParser& parser);
185
186 static Boolean getQualifierElement(
187 XmlParser& parser,
188 CIMQualifier& qualifier);
189 mike 1.13
190 static Boolean getPropertyElement(
191 XmlParser& parser,
192 CIMProperty& property);
193
194 static Boolean getArraySizeAttribute(
195 Uint32 lineNumber,
196 const XmlEntry& entry,
197 const char* tagName,
198 Uint32& value);
199
200 static Boolean getPropertyArrayElement(
201 XmlParser& parser,
202 CIMProperty& property);
203
204 static Boolean getHostElement(
205 XmlParser& parser,
206 String& host);
207
208 static Boolean getNameSpaceElement(
209 XmlParser& parser,
210 mike 1.13 String& nameSpaceComponent);
211
212 static Boolean getLocalNameSpacePathElement(
213 XmlParser& parser,
214 String& nameSpace);
215
216 static Boolean getNameSpacePathElement(
217 XmlParser& parser,
218 String& host,
219 String& nameSpace);
220
221 static Boolean getClassNameElement(
222 XmlParser& parser,
223 String& className,
224 Boolean required = false);
225
226 static KeyBinding::Type getValueTypeAttribute(
227 Uint32 lineNumber,
228 const XmlEntry& entry,
229 const char* elementName);
230
231 mike 1.13 static Boolean getKeyValueElement(
232 XmlParser& parser,
233 KeyBinding::Type& type,
234 String& value);
235
236 static Boolean getKeyBindingElement(
237 XmlParser& parser,
238 String& name,
239 String& value,
240 KeyBinding::Type& type);
241
242 static Boolean getInstanceNameElement(
243 XmlParser& parser,
244 String& className,
245 Array<KeyBinding>& keyBindings);
246
|
247 mike 1.15 static Boolean getInstanceNameElement(
248 XmlParser& parser,
249 CIMReference& instanceName);
250
|
251 mike 1.13 static Boolean getInstancePathElement(
252 XmlParser& parser,
253 CIMReference& reference);
254
255 static Boolean getLocalInstancePathElement(
256 XmlParser& parser,
257 CIMReference& reference);
258
259 static Boolean getClassPathElement(
260 XmlParser& parser,
261 CIMReference& reference);
262
263 static Boolean getLocalClassPathElement(
264 XmlParser& parser,
265 CIMReference& reference);
266
267 static Boolean getValueReferenceElement(
268 XmlParser& parser,
269 CIMReference& reference);
270
271 static Boolean getPropertyReferenceElement(
272 mike 1.13 XmlParser& parser,
273 CIMProperty& property);
274
275 static Boolean getParameterElement(
276 XmlParser& parser,
277 CIMParameter& parameter);
278
279 static Boolean getParameterArrayElement(
280 XmlParser& parser,
281 CIMParameter& parameter);
282
283 static Boolean getParameterReferenceElement(
284 XmlParser& parser,
285 CIMParameter& parameter);
286
287 static Boolean getQualifierDeclElement(
288 XmlParser& parser,
289 CIMQualifierDecl& qualifierDecl);
290
291 static Boolean getMethodElement(
292 XmlParser& parser,
293 mike 1.13 CIMMethod& method);
294
295 static Boolean getClassElement(
296 XmlParser& parser,
297 CIMClass& cimClass);
298
299 static Boolean getInstanceElement(
300 XmlParser& parser,
301 CIMInstance& cimInstance);
302
303 static void getObject(XmlParser& parser, CIMClass& x);
304
305 static void getObject(XmlParser& parser, CIMInstance& x);
306
307 static void getObject(XmlParser& parser, CIMQualifierDecl& x);
308
309 static Boolean getMessageStartTag(
310 XmlParser& parser,
311 String& id,
312 const char*& protocolVersion);
313
314 mike 1.13 static Boolean getIMethodCallStartTag(
315 XmlParser& parser,
316 const char*& name);
317
318 static Boolean getIMethodResponseStartTag(
319 XmlParser& parser,
320 const char*& name);
321
322 static Boolean getIParamValueTag(
323 XmlParser& parser,
324 const char*& name);
325
326 static Boolean getPropertyValue(
327 XmlParser& parser,
328 CIMValue& cimValue);
329
330 static Boolean getBooleanValueElement(
331 XmlParser& parser,
332 Boolean& result,
333 Boolean required = false);
334
335 mike 1.13 static Boolean getErrorElement(
336 XmlParser& parser,
337 CIMException::Code& code,
338 const char*& description,
339 Boolean required = false);
|
340 mike 1.14
341 static Boolean getObjectWithPath(
342 XmlParser& parser,
343 CIMObjectWithPath& objectWithPath);
|
344 mike 1.15
345 static Boolean getObjectNameElement(
346 XmlParser& parser,
347 CIMReference& objectName);
|
348 mike 1.13
349 private:
350
351 XmlReader()
352 {
353
354 }
355 };
356
357 PEGASUS_NAMESPACE_END
358
359 #endif /* Pegasus_XmlReader_h */
|