1 karl 1.50 //%2004////////////////////////////////////////////////////////////////////////
|
2 mike 1.11 //
|
3 karl 1.50 // Copyright (c) 2000, 2001, 2002 BMC Software; Hewlett-Packard Development
4 // Company, L.P.; IBM Corp.; The Open Group; Tivoli Systems.
5 // Copyright (c) 2003 BMC Software; Hewlett-Packard Development Company, L.P.;
|
6 karl 1.45 // IBM Corp.; EMC Corporation, The Open Group.
|
7 karl 1.50 // Copyright (c) 2004 BMC Software; Hewlett-Packard Development Company, L.P.;
8 // IBM Corp.; EMC Corporation; VERITAS Software Corporation; The Open Group.
|
9 mike 1.11 //
10 // Permission is hereby granted, free of charge, to any person obtaining a copy
|
11 mike 1.12 // of this software and associated documentation files (the "Software"), to
12 // deal in the Software without restriction, including without limitation the
13 // rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
|
14 mike 1.11 // sell copies of the Software, and to permit persons to whom the Software is
15 // furnished to do so, subject to the following conditions:
|
16 kumpf 1.33 //
|
17 mike 1.12 // THE ABOVE COPYRIGHT NOTICE AND THIS PERMISSION NOTICE SHALL BE INCLUDED IN
|
18 mike 1.11 // ALL COPIES OR SUBSTANTIAL PORTIONS OF THE SOFTWARE. THE SOFTWARE IS PROVIDED
19 // "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT
|
20 mike 1.12 // LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR
21 // PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
22 // HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
|
23 mike 1.11 // ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
24 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
25 //
26 //==============================================================================
|
27 schuur 1.49 //
|
28 mike 1.11 // Author: Mike Brasher (mbrasher@bmc.com)
29 //
|
30 mike 1.12 // Modified By: Roger Kumpf, Hewlett-Packard Company (roger_kumpf@hp.com)
|
31 karl 1.13 // Karl Schopmeyer, (k.schopmeyer@opengroup.org)
|
32 kumpf 1.36 // Carol Ann Krug Graves, Hewlett-Packard Company
33 // (carolann_graves@hp.com)
|
34 schuur 1.49 // Adriann Schuur (schuur@de.ibm.com) PEP 164
|
35 dave.sudlik 1.51 // Dave Sudlik, IBM (dsudlik@us.ibm.com)
|
36 mike 1.11 //
37 //%/////////////////////////////////////////////////////////////////////////////
38
39 #include <cstring>
40 #include <cstdio>
41 #include <cctype>
42 #include "CIMValue.h"
|
43 kumpf 1.26 #include "Union.h"
|
44 mike 1.11 #include "Indentor.h"
45 #include "XmlWriter.h"
|
46 david 1.44 #include "CommonUTF.h"
|
47 mike 1.11
|
48 schuur 1.49 #include "CIMValueRep.h"
49
|
50 mike 1.11 PEGASUS_NAMESPACE_BEGIN
51
52 #define PEGASUS_ARRAY_T CIMValue
53 # include "ArrayImpl.h"
54 #undef PEGASUS_ARRAY_T
55
56 ////////////////////////////////////////////////////////////////////////////////
|
57 a.arora 1.48
|
58 mike 1.11 //
|
59 kumpf 1.30 // _toString routines:
|
60 mike 1.11 //
61 ////////////////////////////////////////////////////////////////////////////////
62
|
63 mike 1.12 inline void _toString(Array<Sint8>& out, Boolean x)
|
64 mike 1.11 {
|
65 kumpf 1.29 XmlWriter::append(out, x);
|
66 mike 1.11 }
67
|
68 kumpf 1.29 inline void _toString(Array<Sint8>& out, Uint8 x) { XmlWriter::append(out, Uint32(x)); }
69 inline void _toString(Array<Sint8>& out, Sint8 x) { XmlWriter::append(out, Sint32(x)); }
70 inline void _toString(Array<Sint8>& out, Uint16 x) { XmlWriter::append(out, Uint32(x)); }
71 inline void _toString(Array<Sint8>& out, Sint16 x) { XmlWriter::append(out, Sint32(x)); }
72 inline void _toString(Array<Sint8>& out, Uint32 x) { XmlWriter::append(out, x); }
73 inline void _toString(Array<Sint8>& out, Sint32 x) { XmlWriter::append(out, x); }
74 inline void _toString(Array<Sint8>& out, Uint64 x) { XmlWriter::append(out, x); }
75 inline void _toString(Array<Sint8>& out, Sint64 x) { XmlWriter::append(out, x); }
76 inline void _toString(Array<Sint8>& out, Real32 x) { XmlWriter::append(out, Real64(x)); }
77 inline void _toString(Array<Sint8>& out, Real64 x) { XmlWriter::append(out, x); }
|
78 kumpf 1.22
|
79 mike 1.12 inline void _toString(Array<Sint8>& out, Char16 x)
80 {
|
81 david 1.44 // We need to convert the Char16 to UTF8 then append the UTF8
82 // character into the array.
83 // NOTE: The UTF8 character could be several bytes long.
84 // WARNING: This function will put in replacement character for
85 // all characters that have surogate pairs.
86
87 char str[6];
88 memset(str,0x00,sizeof(str));
89 char* charIN = (char *)&x;
90
91 const Uint16 *strsrc = (Uint16 *)charIN;
92 Uint16 *endsrc = (Uint16 *)&charIN[1];
93
94 Uint8 *strtgt = (Uint8 *)str;
95 Uint8 *endtgt = (Uint8 *)&str[5];
96
97 UTF16toUTF8(&strsrc,
98 endsrc,
99 &strtgt,
100 endtgt);
101
|
102 chuck 1.46 out.append((Sint8 *)str, UTF_8_COUNT_TRAIL_BYTES(str[0]) +1);
|
103 mike 1.12 }
104
105 inline void _toString(Array<Sint8>& out, const String& x)
106 {
107 out << x;
108 }
|
109 mike 1.11
|
110 mike 1.12 inline void _toString(Array<Sint8>& out, const CIMDateTime& x)
|
111 mike 1.11 {
|
112 kumpf 1.38 out << x.toString();
|
113 mike 1.11 }
114
|
115 kumpf 1.31 inline void _toString(Array<Sint8>& out, const CIMObjectPath& x)
|
116 kumpf 1.15 {
117 out << x.toString();
118 }
119
|
120 dave.sudlik 1.51 inline void _toString(Array<Sint8>& out, const CIMObject& x)
121 {
122 out << x.toString();
123 }
124
|
125 mike 1.12 template<class T>
126 void _toString(Array<Sint8>& out, const T* p, Uint32 size)
127 {
128 while (size--)
129 {
|
130 kumpf 1.26 _toString(out, *p++);
131 out << " ";
|
132 mike 1.12 }
133 }
134
|
135 mike 1.11
136 ////////////////////////////////////////////////////////////////////////////////
137 //
|
138 kumpf 1.26 // CIMValue
139 //
140 ////////////////////////////////////////////////////////////////////////////////
|
141 mike 1.11
|
142 a.arora 1.48 CIMValue::CIMValue()
|
143 kumpf 1.26 {
|
144 a.arora 1.48 _rep = new CIMValueRep();
|
145 mike 1.11 }
146
|
147 a.arora 1.48 CIMValue::CIMValue(CIMType type, Boolean isArray, Uint32 arraySize)
|
148 mike 1.11 {
|
149 a.arora 1.48 _rep = new CIMValueRep();
150 setNullValue(type, isArray, arraySize);
|
151 mike 1.11 }
152
|
153 a.arora 1.48 CIMValue::CIMValue(Boolean x)
|
154 mike 1.12 {
|
155 a.arora 1.48 _rep = new CIMValueRep();
|
156 kumpf 1.26 set(x);
|
157 mike 1.12 }
158
|
159 a.arora 1.48 CIMValue::CIMValue(Uint8 x)
|
160 mike 1.12 {
|
161 a.arora 1.48 _rep = new CIMValueRep();
162 set(x);
|
163 mike 1.12 }
164
|
165 a.arora 1.48 CIMValue::CIMValue(Sint8 x)
|
166 mike 1.11 {
|
167 a.arora 1.48 _rep = new CIMValueRep();
|
168 kumpf 1.26 set(x);
|
169 mike 1.11 }
170
|
171 a.arora 1.48 CIMValue::CIMValue(Uint16 x)
|
172 mike 1.11 {
|
173 a.arora 1.48 _rep = new CIMValueRep();
|
174 kumpf 1.26 set(x);
|
175 mike 1.11 }
176
|
177 a.arora 1.48 CIMValue::CIMValue(Sint16 x)
|
178 mike 1.11 {
|
179 a.arora 1.48 _rep = new CIMValueRep();
|
180 kumpf 1.26 set(x);
|
181 mike 1.11 }
182
|
183 a.arora 1.48 CIMValue::CIMValue(Uint32 x)
|
184 mike 1.11 {
|
185 a.arora 1.48 _rep = new CIMValueRep();
|
186 kumpf 1.26 set(x);
|
187 mike 1.11 }
188
|
189 a.arora 1.48 CIMValue::CIMValue(Sint32 x)
|
190 mike 1.11 {
|
191 a.arora 1.48 _rep = new CIMValueRep();
|
192 kumpf 1.26 set(x);
|
193 mike 1.11 }
194
|
195 a.arora 1.48 CIMValue::CIMValue(Uint64 x)
|
196 mike 1.11 {
|
197 a.arora 1.48 _rep = new CIMValueRep();
|
198 kumpf 1.26 set(x);
|
199 mike 1.11 }
200
|
201 a.arora 1.48 CIMValue::CIMValue(Sint64 x)
|
202 mike 1.11 {
|
203 a.arora 1.48 _rep = new CIMValueRep();
204 set(x);
|
205 mike 1.11 }
206
|
207 a.arora 1.48 CIMValue::CIMValue(Real32 x)
|
208 mike 1.11 {
|
209 a.arora 1.48 _rep = new CIMValueRep();
210 set(x);
|
211 mike 1.11 }
212
|
213 a.arora 1.48 CIMValue::CIMValue(Real64 x)
|
214 mike 1.11 {
|
215 a.arora 1.48 _rep = new CIMValueRep();
216 set(x);
|
217 mike 1.11 }
218
|
219 a.arora 1.48 CIMValue::CIMValue(const Char16& x)
|
220 mike 1.11 {
|
221 a.arora 1.48 _rep = new CIMValueRep();
|
222 kumpf 1.26 set(x);
|
223 mike 1.11 }
224
|
225 a.arora 1.48 CIMValue::CIMValue(const String& x)
|
226 mike 1.11 {
|
227 a.arora 1.48 _rep = new CIMValueRep();
228 set(x);
|
229 mike 1.11 }
230
|
231 a.arora 1.48 CIMValue::CIMValue(const CIMDateTime& x)
|
232 mike 1.11 {
|
233 a.arora 1.48 _rep = new CIMValueRep();
234 set(x);
|
235 mike 1.11 }
236
|
237 a.arora 1.48 CIMValue::CIMValue(const CIMObjectPath& x)
|
238 mike 1.11 {
|
239 a.arora 1.48 _rep = new CIMValueRep();
|
240 kumpf 1.26 set(x);
|
241 mike 1.11 }
242
|
243 dave.sudlik 1.51 CIMValue::CIMValue(const CIMObject& x)
244 {
245 _rep = new CIMValueRep();
246 set(x);
247 }
248
|
249 a.arora 1.48 CIMValue::CIMValue(const Array<Boolean>& x)
|
250 mike 1.12 {
|
251 a.arora 1.48 _rep = new CIMValueRep();
252 set(x);
|
253 mike 1.11 }
254
|
255 a.arora 1.48 CIMValue::CIMValue(const Array<Uint8>& x)
|
256 mike 1.11 {
|
257 a.arora 1.48 _rep = new CIMValueRep();
|
258 kumpf 1.26 set(x);
|
259 mike 1.11 }
260
|
261 a.arora 1.48 CIMValue::CIMValue(const Array<Sint8>& x)
|
262 mike 1.11 {
|
263 a.arora 1.48 _rep = new CIMValueRep();
|
264 kumpf 1.26 set(x);
|
265 mike 1.11 }
266
|
267 a.arora 1.48 CIMValue::CIMValue(const Array<Uint16>& x)
|
268 mike 1.11 {
|
269 a.arora 1.48 _rep = new CIMValueRep();
|
270 kumpf 1.26 set(x);
|
271 mike 1.11 }
272
|
273 a.arora 1.48 CIMValue::CIMValue(const Array<Sint16>& x)
|
274 mike 1.11 {
|
275 a.arora 1.48 _rep = new CIMValueRep();
|
276 kumpf 1.26 set(x);
|
277 mike 1.11 }
278
|
279 a.arora 1.48 CIMValue::CIMValue(const Array<Uint32>& x)
|
280 mike 1.11 {
|
281 a.arora 1.48 _rep = new CIMValueRep();
|
282 kumpf 1.26 set(x);
|
283 mike 1.11 }
284
|
285 a.arora 1.48 CIMValue::CIMValue(const Array<Sint32>& x)
|
286 mike 1.11 {
|
287 a.arora 1.48 _rep = new CIMValueRep();
|
288 kumpf 1.26 set(x);
|
289 mike 1.11 }
290
|
291 a.arora 1.48 CIMValue::CIMValue(const Array<Uint64>& x)
|
292 mike 1.11 {
|
293 a.arora 1.48 _rep = new CIMValueRep();
|
294 kumpf 1.26 set(x);
|
295 mike 1.11 }
296
|
297 a.arora 1.48 CIMValue::CIMValue(const Array<Sint64>& x)
|
298 mike 1.11 {
|
299 a.arora 1.48 _rep = new CIMValueRep();
|
300 kumpf 1.26 set(x);
|
301 mike 1.11 }
302
|
303 a.arora 1.48 CIMValue::CIMValue(const Array<Real32>& x)
|
304 mike 1.11 {
|
305 a.arora 1.48 _rep = new CIMValueRep();
|
306 kumpf 1.26 set(x);
|
307 mike 1.11 }
308
|
309 a.arora 1.48 CIMValue::CIMValue(const Array<Real64>& x)
|
310 mike 1.11 {
|
311 a.arora 1.48 _rep = new CIMValueRep();
|
312 kumpf 1.26 set(x);
|
313 mike 1.11 }
314
|
315 a.arora 1.48 CIMValue::CIMValue(const Array<Char16>& x)
|
316 mike 1.11 {
|
317 a.arora 1.48 _rep = new CIMValueRep();
|
318 kumpf 1.26 set(x);
|
319 mike 1.11 }
320
|
321 a.arora 1.48 CIMValue::CIMValue(const Array<String>& x)
|
322 mike 1.11 {
|
323 a.arora 1.48 _rep = new CIMValueRep();
|
324 kumpf 1.26 set(x);
|
325 mike 1.11 }
326
|
327 a.arora 1.48 CIMValue::CIMValue(const Array<CIMDateTime>& x)
|
328 mike 1.11 {
|
329 a.arora 1.48 _rep = new CIMValueRep();
|
330 kumpf 1.26 set(x);
|
331 mike 1.11 }
332
|
333 a.arora 1.48 CIMValue::CIMValue(const Array<CIMObjectPath>& x)
|
334 mike 1.11 {
|
335 a.arora 1.48 _rep = new CIMValueRep();
|
336 kumpf 1.26 set(x);
|
337 mike 1.11 }
338
|
339 dave.sudlik 1.51 CIMValue::CIMValue(const Array<CIMObject>& x)
340 {
341 _rep = new CIMValueRep();
342 set(x);
343 }
344
|
345 a.arora 1.48 CIMValue::CIMValue(const CIMValue& x)
|
346 mike 1.11 {
|
347 a.arora 1.48 _rep = new CIMValueRep();
|
348 kumpf 1.26 assign(x);
|
349 mike 1.12 }
|
350 mike 1.11
|
351 kumpf 1.26 CIMValue::~CIMValue()
|
352 mike 1.11 {
353 clear();
|
354 a.arora 1.48 delete _rep;
|
355 mike 1.11 }
356
|
357 kumpf 1.26 CIMValue& CIMValue::operator=(const CIMValue& x)
|
358 kumpf 1.15 {
|
359 kumpf 1.26 assign(x);
360 return *this;
|
361 kumpf 1.15 }
362
|
363 kumpf 1.26 void CIMValue::assign(const CIMValue& x)
|
364 mike 1.11 {
|
365 kumpf 1.26 if (this == &x)
366 return;
|
367 mike 1.11
|
368 kumpf 1.26 clear();
|
369 mike 1.11
|
370 kumpf 1.26 _rep->_type = x._rep->_type;
371 _rep->_isArray = x._rep->_isArray;
372 _rep->_isNull = x._rep->_isNull;
373
374 if (_rep->_isArray)
375 {
376 switch (_rep->_type)
377 {
|
378 kumpf 1.36 case CIMTYPE_BOOLEAN:
|
379 kumpf 1.32 _rep->_u._booleanArray =
380 new Array<Boolean>(*(x._rep->_u._booleanArray));
|
381 kumpf 1.26 break;
|
382 mike 1.11
|
383 kumpf 1.36 case CIMTYPE_UINT8:
|
384 kumpf 1.32 _rep->_u._uint8Array =
385 new Array<Uint8>(*(x._rep->_u._uint8Array));
|
386 kumpf 1.26 break;
|
387 mike 1.11
|
388 kumpf 1.36 case CIMTYPE_SINT8:
|
389 kumpf 1.32 _rep->_u._sint8Array =
390 new Array<Sint8>(*(x._rep->_u._sint8Array));
|
391 kumpf 1.26 break;
|
392 mike 1.11
|
393 kumpf 1.36 case CIMTYPE_UINT16:
|
394 kumpf 1.32 _rep->_u._uint16Array =
395 new Array<Uint16>(*(x._rep->_u._uint16Array));
|
396 kumpf 1.26 break;
|
397 mike 1.11
|
398 kumpf 1.36 case CIMTYPE_SINT16:
|
399 kumpf 1.32 _rep->_u._sint16Array =
400 new Array<Sint16>(*(x._rep->_u._sint16Array));
|
401 kumpf 1.26 break;
|
402 mike 1.11
|
403 kumpf 1.36 case CIMTYPE_UINT32:
|
404 kumpf 1.32 _rep->_u._uint32Array =
405 new Array<Uint32>(*(x._rep->_u._uint32Array));
|
406 kumpf 1.26 break;
|
407 mike 1.11
|
408 kumpf 1.36 case CIMTYPE_SINT32:
|
409 kumpf 1.32 _rep->_u._sint32Array =
410 new Array<Sint32>(*(x._rep->_u._sint32Array));
|
411 kumpf 1.26 break;
|
412 mike 1.11
|
413 kumpf 1.36 case CIMTYPE_UINT64:
|
414 kumpf 1.32 _rep->_u._uint64Array =
415 new Array<Uint64>(*(x._rep->_u._uint64Array));
|
416 kumpf 1.26 break;
417
|
418 kumpf 1.36 case CIMTYPE_SINT64:
|
419 kumpf 1.32 _rep->_u._sint64Array =
420 new Array<Sint64>(*(x._rep->_u._sint64Array));
|
421 kumpf 1.26 break;
422
|
423 kumpf 1.36 case CIMTYPE_REAL32:
|
424 kumpf 1.32 _rep->_u._real32Array =
425 new Array<Real32>(*(x._rep->_u._real32Array));
|
426 kumpf 1.26 break;
427
|
428 kumpf 1.36 case CIMTYPE_REAL64:
|
429 kumpf 1.32 _rep->_u._real64Array =
430 new Array<Real64>(*(x._rep->_u._real64Array));
|
431 kumpf 1.26 break;
432
|
433 kumpf 1.36 case CIMTYPE_CHAR16:
|
434 kumpf 1.32 _rep->_u._char16Array =
435 new Array<Char16>(*(x._rep->_u._char16Array));
|
436 kumpf 1.26 break;
437
|
438 kumpf 1.36 case CIMTYPE_STRING:
|
439 kumpf 1.32 _rep->_u._stringArray =
440 new Array<String>(*(x._rep->_u._stringArray));
|
441 kumpf 1.26 break;
442
|
443 kumpf 1.36 case CIMTYPE_DATETIME:
|
444 kumpf 1.32 _rep->_u._dateTimeArray =
445 new Array<CIMDateTime>(*(x._rep->_u._dateTimeArray));
|
446 kumpf 1.26 break;
447
|
448 kumpf 1.36 case CIMTYPE_REFERENCE:
|
449 kumpf 1.32 _rep->_u._referenceArray =
450 new Array<CIMObjectPath>(*(x._rep->_u._referenceArray));
|
451 kumpf 1.26 break;
|
452 kumpf 1.42
|
453 dave.sudlik 1.51 case CIMTYPE_OBJECT:
454 _rep->_u._objectArray =
455 new Array<CIMObject>(*(x._rep->_u._objectArray));
456 break;
457
|
458 kumpf 1.26 default:
|
459 kumpf 1.42 PEGASUS_ASSERT(false);
|
460 kumpf 1.26 }
461 }
462 else
463 {
464 switch (_rep->_type)
465 {
|
466 kumpf 1.36 case CIMTYPE_BOOLEAN:
|
467 kumpf 1.26 _rep->_u._booleanValue = x._rep->_u._booleanValue;
468 break;
469
|
470 kumpf 1.36 case CIMTYPE_UINT8:
|
471 kumpf 1.26 _rep->_u._uint8Value = x._rep->_u._uint8Value;
472 break;
473
|
474 kumpf 1.36 case CIMTYPE_SINT8:
|
475 kumpf 1.26 _rep->_u._sint8Value = x._rep->_u._sint8Value;
476 break;
477
|
478 kumpf 1.36 case CIMTYPE_UINT16:
|
479 kumpf 1.26 _rep->_u._uint16Value = x._rep->_u._uint16Value;
480 break;
481
|
482 kumpf 1.36 case CIMTYPE_SINT16:
|
483 kumpf 1.26 _rep->_u._sint16Value = x._rep->_u._sint16Value;
484 break;
485
|
486 kumpf 1.36 case CIMTYPE_UINT32:
|
487 kumpf 1.26 _rep->_u._uint32Value = x._rep->_u._uint32Value;
488 break;
489
|
490 kumpf 1.36 case CIMTYPE_SINT32:
|
491 kumpf 1.26 _rep->_u._sint32Value = x._rep->_u._sint32Value;
492 break;
493
|
494 kumpf 1.36 case CIMTYPE_UINT64:
|
495 kumpf 1.26 _rep->_u._uint64Value = x._rep->_u._uint64Value;
496 break;
497
|
498 kumpf 1.36 case CIMTYPE_SINT64:
|
499 kumpf 1.26 _rep->_u._sint64Value = x._rep->_u._sint64Value;
500 break;
501
|
502 kumpf 1.36 case CIMTYPE_REAL32:
|
503 kumpf 1.26 _rep->_u._real32Value = x._rep->_u._real32Value;
504 break;
505
|
506 kumpf 1.36 case CIMTYPE_REAL64:
|
507 kumpf 1.26 _rep->_u._real64Value = x._rep->_u._real64Value;
508 break;
509
|
510 kumpf 1.36 case CIMTYPE_CHAR16:
|
511 kumpf 1.26 _rep->_u._char16Value = x._rep->_u._char16Value;
512 break;
513
|
514 kumpf 1.36 case CIMTYPE_STRING:
|
515 kumpf 1.26 _rep->_u._stringValue = new String(*(x._rep->_u._stringValue));
516 break;
517
|
518 kumpf 1.36 case CIMTYPE_DATETIME:
|
519 kumpf 1.26 _rep->_u._dateTimeValue =
520 new CIMDateTime(*(x._rep->_u._dateTimeValue));
521 break;
522
|
523 kumpf 1.36 case CIMTYPE_REFERENCE:
|
524 kumpf 1.26 _rep->_u._referenceValue =
|
525 kumpf 1.31 new CIMObjectPath(*(x._rep->_u._referenceValue));
|
526 kumpf 1.26 break;
527
|
528 dave.sudlik 1.51 case CIMTYPE_OBJECT:
529 _rep->_u._objectValue =
530 new CIMObject(x._rep->_u._objectValue->clone());
531 break;
532
|
533 kumpf 1.26 // Should never get here. testing complete enum
534 default:
|
535 kumpf 1.42 PEGASUS_ASSERT(false);
|
536 kumpf 1.26 }
537 }
538 }
539
540 void CIMValue::clear()
541 {
542 if (_rep->_isArray)
543 {
544 switch (_rep->_type)
545 {
|
546 kumpf 1.36 case CIMTYPE_BOOLEAN:
|
547 kumpf 1.32 delete _rep->_u._booleanArray;
|
548 kumpf 1.26 break;
549
|
550 kumpf 1.36 case CIMTYPE_UINT8:
|
551 kumpf 1.32 delete _rep->_u._uint8Array;
|
552 kumpf 1.26 break;
553
|
554 kumpf 1.36 case CIMTYPE_SINT8:
|
555 kumpf 1.32 delete _rep->_u._sint8Array;
|
556 kumpf 1.26 break;
557
|
558 kumpf 1.36 case CIMTYPE_UINT16:
|
559 kumpf 1.32 delete _rep->_u._uint16Array;
|
560 kumpf 1.26 break;
561
|
562 kumpf 1.36 case CIMTYPE_SINT16:
|
563 kumpf 1.32 delete _rep->_u._sint16Array;
|
564 kumpf 1.26 break;
565
|
566 kumpf 1.36 case CIMTYPE_UINT32:
|
567 kumpf 1.32 delete _rep->_u._uint32Array;
|
568 kumpf 1.26 break;
569
|
570 kumpf 1.36 case CIMTYPE_SINT32:
|
571 kumpf 1.32 delete _rep->_u._sint32Array;
|
572 kumpf 1.26 break;
573
|
574 kumpf 1.36 case CIMTYPE_UINT64:
|
575 kumpf 1.32 delete _rep->_u._uint64Array;
|
576 kumpf 1.26 break;
577
|
578 kumpf 1.36 case CIMTYPE_SINT64:
|
579 kumpf 1.32 delete _rep->_u._sint64Array;
|
580 kumpf 1.26 break;
581
|
582 kumpf 1.36 case CIMTYPE_REAL32:
|
583 kumpf 1.32 delete _rep->_u._real32Array;
|
584 kumpf 1.26 break;
585
|
586 kumpf 1.36 case CIMTYPE_REAL64:
|
587 kumpf 1.32 delete _rep->_u._real64Array;
|
588 kumpf 1.26 break;
589
|
590 kumpf 1.36 case CIMTYPE_CHAR16:
|
591 kumpf 1.32 delete _rep->_u._char16Array;
|
592 kumpf 1.26 break;
593
|
594 kumpf 1.36 case CIMTYPE_STRING:
|
595 kumpf 1.32 delete _rep->_u._stringArray;
|
596 kumpf 1.26 break;
597
|
598 kumpf 1.36 case CIMTYPE_DATETIME:
|
599 kumpf 1.32 delete _rep->_u._dateTimeArray;
|
600 kumpf 1.26 break;
601
|
602 kumpf 1.36 case CIMTYPE_REFERENCE:
|
603 kumpf 1.32 delete _rep->_u._referenceArray;
|
604 kumpf 1.26 break;
605
|
606 dave.sudlik 1.51 case CIMTYPE_OBJECT:
607 delete _rep->_u._objectArray;
608 break;
609
|
610 kumpf 1.42 default:
611 PEGASUS_ASSERT(false);
|
612 kumpf 1.26 }
613 }
614 else
615 {
616 switch (_rep->_type)
617 {
|
618 kumpf 1.36 case CIMTYPE_BOOLEAN:
619 case CIMTYPE_UINT8:
620 case CIMTYPE_SINT8:
621 case CIMTYPE_UINT16:
622 case CIMTYPE_SINT16:
623 case CIMTYPE_UINT32:
624 case CIMTYPE_SINT32:
625 case CIMTYPE_UINT64:
626 case CIMTYPE_SINT64:
627 case CIMTYPE_REAL32:
628 case CIMTYPE_REAL64:
629 case CIMTYPE_CHAR16:
|
630 kumpf 1.26 break;
631
|
632 kumpf 1.36 case CIMTYPE_STRING:
|
633 kumpf 1.26 delete _rep->_u._stringValue;
634 break;
635
|
636 kumpf 1.36 case CIMTYPE_DATETIME:
|
637 kumpf 1.26 delete _rep->_u._dateTimeValue;
638 break;
639
|
640 kumpf 1.36 case CIMTYPE_REFERENCE:
|
641 kumpf 1.26 delete _rep->_u._referenceValue;
642 break;
|
643 kumpf 1.42
|
644 dave.sudlik 1.51 case CIMTYPE_OBJECT:
645 delete _rep->_u._objectValue;
646 break;
647
|
648 kumpf 1.42 default:
649 PEGASUS_ASSERT(false);
|
650 kumpf 1.26 }
651 }
652
653 _rep->reset();
654 }
655
656 Boolean CIMValue::typeCompatible(const CIMValue& x) const
657 {
|
658 kumpf 1.35 return (_rep->_type == x._rep->_type &&
659 _rep->_isArray == x._rep->_isArray);
660 // getArraySize() == x.getArraySize());
|
661 kumpf 1.26 }
662
663 Boolean CIMValue::isArray() const
664 {
665 return _rep->_isArray;
666 }
667
668 Boolean CIMValue::isNull() const
669 {
670 return _rep->_isNull;
671 }
672
673 Uint32 CIMValue::getArraySize() const
674 {
675 if (!_rep->_isArray)
676 return 0;
677
678 switch (_rep->_type)
679 {
|
680 kumpf 1.36 case CIMTYPE_BOOLEAN:
|
681 kumpf 1.32 return _rep->_u._booleanArray->size();
|
682 kumpf 1.26 break;
683
|
684 kumpf 1.36 case CIMTYPE_UINT8:
|
685 kumpf 1.32 return _rep->_u._uint8Array->size();
|
686 kumpf 1.26 break;
687
|
688 kumpf 1.36 case CIMTYPE_SINT8:
|
689 kumpf 1.32 return _rep->_u._sint8Array->size();
|
690 kumpf 1.26 break;
691
|
692 kumpf 1.36 case CIMTYPE_UINT16:
|
693 kumpf 1.32 return _rep->_u._uint16Array->size();
|
694 kumpf 1.26 break;
695
|
696 kumpf 1.36 case CIMTYPE_SINT16:
|
697 kumpf 1.32 return _rep->_u._sint16Array->size();
|
698 kumpf 1.26 break;
699
|
700 kumpf 1.36 case CIMTYPE_UINT32:
|
701 kumpf 1.32 return _rep->_u._uint32Array->size();
|
702 kumpf 1.26 break;
703
|
704 kumpf 1.36 case CIMTYPE_SINT32:
|
705 kumpf 1.32 return _rep->_u._sint32Array->size();
|
706 kumpf 1.26 break;
707
|
708 kumpf 1.36 case CIMTYPE_UINT64:
|
709 kumpf 1.32 return _rep->_u._uint64Array->size();
|
710 kumpf 1.26 break;
711
|
712 kumpf 1.36 case CIMTYPE_SINT64:
|
713 kumpf 1.32 return _rep->_u._sint64Array->size();
|
714 kumpf 1.26 break;
715
|
716 kumpf 1.36 case CIMTYPE_REAL32:
|
717 kumpf 1.32 return _rep->_u._real32Array->size();
|
718 kumpf 1.26 break;
719
|
720 kumpf 1.36 case CIMTYPE_REAL64:
|
721 kumpf 1.32 return _rep->_u._real64Array->size();
|
722 kumpf 1.26 break;
723
|
724 kumpf 1.36 case CIMTYPE_CHAR16:
|
725 kumpf 1.32 return _rep->_u._char16Array->size();
|
726 kumpf 1.26 break;
727
|
728 kumpf 1.36 case CIMTYPE_STRING:
|
729 kumpf 1.32 return _rep->_u._stringArray->size();
|
730 kumpf 1.26 break;
731
|
732 kumpf 1.36 case CIMTYPE_DATETIME:
|
733 kumpf 1.32 return _rep->_u._dateTimeArray->size();
|
734 kumpf 1.26 break;
735
|
736 kumpf 1.36 case CIMTYPE_REFERENCE:
|
737 kumpf 1.32 return _rep->_u._referenceArray->size();
|
738 kumpf 1.26 break;
|
739 kumpf 1.42
|
740 dave.sudlik 1.51 case CIMTYPE_OBJECT:
741 return _rep->_u._objectArray->size();
742 break;
743
|
744 kumpf 1.42 //default: // Handled below
|
745 kumpf 1.26 }
746
747 // Unreachable!
748 PEGASUS_ASSERT(false);
749 return 0;
750 }
751
752 CIMType CIMValue::getType() const
753 {
754 return CIMType(_rep->_type);
755 }
756
757 void CIMValue::setNullValue(CIMType type, Boolean isArray, Uint32 arraySize)
758 {
759 clear();
760
761 if (isArray)
762 {
763 switch (type)
764 {
|
765 kumpf 1.36 case CIMTYPE_BOOLEAN:
|
766 kumpf 1.26 set(Array<Boolean>(arraySize));
767 break;
768
|
769 kumpf 1.36 case CIMTYPE_UINT8:
|
770 kumpf 1.26 set(Array<Uint8>(arraySize));
771 break;
772
|
773 kumpf 1.36 case CIMTYPE_SINT8:
|
774 kumpf 1.26 set(Array<Sint8>(arraySize));
775 break;
776
|
777 kumpf 1.36 case CIMTYPE_UINT16:
|
778 kumpf 1.26 set(Array<Uint16>(arraySize));
779 break;
780
|
781 kumpf 1.36 case CIMTYPE_SINT16:
|
782 kumpf 1.26 set(Array<Sint16>(arraySize));
783 break;
784
|
785 kumpf 1.36 case CIMTYPE_UINT32:
|
786 kumpf 1.26 set(Array<Uint32>(arraySize));
787 break;
788
|
789 kumpf 1.36 case CIMTYPE_SINT32:
|
790 kumpf 1.26 set(Array<Sint32>(arraySize));
791 break;
792
|
793 kumpf 1.36 case CIMTYPE_UINT64:
|
794 kumpf 1.26 set(Array<Uint64>(arraySize));
795 break;
796
|
797 kumpf 1.36 case CIMTYPE_SINT64:
|
798 kumpf 1.26 set(Array<Sint64>(arraySize));
799 break;
800
|
801 kumpf 1.36 case CIMTYPE_REAL32:
|
802 kumpf 1.26 set(Array<Real32>(arraySize));
803 break;
804
|
805 kumpf 1.36 case CIMTYPE_REAL64:
|
806 kumpf 1.26 set(Array<Real64>(arraySize));
807 break;
808
|
809 kumpf 1.36 case CIMTYPE_CHAR16:
|
810 kumpf 1.26 set(Array<Char16>(arraySize));
811 break;
812
|
813 kumpf 1.36 case CIMTYPE_STRING:
|
814 kumpf 1.26 set(Array<String>(arraySize));
815 break;
816
|
817 kumpf 1.36 case CIMTYPE_DATETIME:
|
818 kumpf 1.26 set(Array<CIMDateTime>(arraySize));
819 break;
820
|
821 kumpf 1.36 case CIMTYPE_REFERENCE:
|
822 kumpf 1.31 set(Array<CIMObjectPath>(arraySize));
|
823 kumpf 1.26 break;
|
824 kumpf 1.42
|
825 dave.sudlik 1.51 case CIMTYPE_OBJECT:
826 set(Array<CIMObject>(arraySize));
827 break;
828
|
829 kumpf 1.26 default:
|
830 kumpf 1.43 throw TypeMismatchException();
|
831 kumpf 1.26 }
832 }
833 else
834 {
835 switch (type)
836 {
|
837 kumpf 1.36 case CIMTYPE_BOOLEAN:
|
838 kumpf 1.26 set(false);
839 break;
840
|
841 kumpf 1.36 case CIMTYPE_UINT8:
|
842 kumpf 1.26 set(Uint8(0));
843 break;
844
|
845 kumpf 1.36 case CIMTYPE_SINT8:
|
846 kumpf 1.26 set(Sint8(0));
847 break;
848
|
849 kumpf 1.36 case CIMTYPE_UINT16:
|
850 kumpf 1.26 set(Uint16(0));
851 break;
852
|
853 kumpf 1.36 case CIMTYPE_SINT16:
|
854 kumpf 1.26 set(Sint16(0));
855 break;
856
|
857 kumpf 1.36 case CIMTYPE_UINT32:
|
858 kumpf 1.26 set(Uint32(0));
859 break;
860
|
861 kumpf 1.36 case CIMTYPE_SINT32:
|
862 kumpf 1.26 set(Sint32(0));
863 break;
864
|
865 kumpf 1.36 case CIMTYPE_UINT64:
|
866 kumpf 1.26 set(Uint64(0));
867 break;
868
|
869 kumpf 1.36 case CIMTYPE_SINT64:
|
870 kumpf 1.26 set(Sint64(0));
871 break;
872
|
873 kumpf 1.36 case CIMTYPE_REAL32:
|
874 kumpf 1.26 set(Real32(0.0));
875 break;
876
|
877 kumpf 1.36 case CIMTYPE_REAL64:
|
878 kumpf 1.26 set(Real64(0.0));
879 break;
880
|
881 kumpf 1.36 case CIMTYPE_CHAR16:
|
882 kumpf 1.26 set(Char16(0));
883 break;
884
|
885 kumpf 1.36 case CIMTYPE_STRING:
|
886 kumpf 1.26 set(String());
887 break;
888
|
889 kumpf 1.36 case CIMTYPE_DATETIME:
|
890 kumpf 1.26 set(CIMDateTime());
891 break;
892
|
893 kumpf 1.36 case CIMTYPE_REFERENCE:
|
894 kumpf 1.31 set(CIMObjectPath());
|
895 kumpf 1.26 break;
|
896 kumpf 1.42
|
897 dave.sudlik 1.51 case CIMTYPE_OBJECT:
898 set(CIMObject());
899 break;
900
|
901 kumpf 1.26 default:
|
902 kumpf 1.43 throw TypeMismatchException();
|
903 kumpf 1.26 }
904 }
905
906 // Set the Null attribute. Note that this must be after the set
907 // because the set functions sets the _isNull.
908
909 _rep->_isNull = true;
910 }
911
912 void CIMValue::set(Boolean x)
913 {
914 clear();
915 _rep->_u._booleanValue = (Uint8)x;
|
916 kumpf 1.36 _rep->_type = CIMTYPE_BOOLEAN;
|
917 kumpf 1.26 _rep->_isNull = false;
918 }
919
920 void CIMValue::set(Uint8 x)
921 {
922 clear();
923 _rep->_u._uint8Value = x;
|
924 kumpf 1.36 _rep->_type = CIMTYPE_UINT8;
|
925 kumpf 1.26 _rep->_isNull = false;
926 }
927
928 void CIMValue::set(Sint8 x)
929 {
930 clear();
931 _rep->_u._sint8Value = x;
|
932 kumpf 1.36 _rep->_type = CIMTYPE_SINT8;
|
933 kumpf 1.26 _rep->_isNull = false;
934 }
935
936 void CIMValue::set(Uint16 x)
937 {
938 clear();
939 _rep->_u._uint16Value = x;
|
940 kumpf 1.36 _rep->_type = CIMTYPE_UINT16;
|
941 kumpf 1.26 _rep->_isNull = false;
942 }
943
944 void CIMValue::set(Sint16 x)
945 {
946 clear();
947 _rep->_u._sint16Value = x;
|
948 kumpf 1.36 _rep->_type = CIMTYPE_SINT16;
|
949 kumpf 1.26 _rep->_isNull = false;
950 }
951
952 void CIMValue::set(Uint32 x)
953 {
954 clear();
955 _rep->_u._uint32Value = x;
|
956 kumpf 1.36 _rep->_type = CIMTYPE_UINT32;
|
957 kumpf 1.26 _rep->_isNull = false;
958 }
959
960 void CIMValue::set(Sint32 x)
961 {
962 clear();
963 _rep->_u._sint32Value = x;
|
964 kumpf 1.36 _rep->_type = CIMTYPE_SINT32;
|
965 kumpf 1.26 _rep->_isNull = false;
966 }
967
968 void CIMValue::set(Uint64 x)
969 {
970 clear();
971 _rep->_u._uint64Value = x;
|
972 kumpf 1.36 _rep->_type = CIMTYPE_UINT64;
|
973 kumpf 1.26 _rep->_isNull = false;
974 }
975
976 void CIMValue::set(Sint64 x)
977 {
978 clear();
979 _rep->_u._sint64Value = x;
|
980 kumpf 1.36 _rep->_type = CIMTYPE_SINT64;
|
981 kumpf 1.26 _rep->_isNull = false;
982 }
983
984 void CIMValue::set(Real32 x)
985 {
986 clear();
987 _rep->_u._real32Value = x;
|
988 kumpf 1.36 _rep->_type = CIMTYPE_REAL32;
|
989 kumpf 1.26 _rep->_isNull = false;
990 }
991
992 void CIMValue::set(Real64 x)
993 {
994 clear();
995 _rep->_u._real64Value = x;
|
996 kumpf 1.36 _rep->_type = CIMTYPE_REAL64;
|
997 kumpf 1.26 _rep->_isNull = false;
998 }
999
1000 void CIMValue::set(const Char16& x)
1001 {
1002 clear();
1003 _rep->_u._char16Value = x;
|
1004 kumpf 1.36 _rep->_type = CIMTYPE_CHAR16;
|
1005 kumpf 1.26 _rep->_isNull = false;
1006 }
1007
1008 void CIMValue::set(const String& x)
1009 {
1010 clear();
1011 _rep->_u._stringValue = new String(x);
|
1012 kumpf 1.36 _rep->_type = CIMTYPE_STRING;
|
1013 kumpf 1.26 _rep->_isNull = false;
1014 }
1015
1016 void CIMValue::set(const CIMDateTime& x)
1017 {
1018 clear();
1019 _rep->_u._dateTimeValue = new CIMDateTime(x);
|
1020 kumpf 1.36 _rep->_type = CIMTYPE_DATETIME;
|
1021 kumpf 1.26 _rep->_isNull = false;
1022 }
1023
|
1024 kumpf 1.31 void CIMValue::set(const CIMObjectPath& x)
|
1025 kumpf 1.26 {
1026 clear();
|
1027 kumpf 1.31 _rep->_u._referenceValue = new CIMObjectPath(x);
|
1028 kumpf 1.36 _rep->_type = CIMTYPE_REFERENCE;
|
1029 kumpf 1.26 _rep->_isNull = false;
1030 }
1031
|
1032 dave.sudlik 1.51 void CIMValue::set(const CIMObject& x)
1033 {
1034 clear();
1035 if (x.isUninitialized()) {
1036 // Don't need to clone since null CIMObjects aren't shared when created.
1037 // Doesn't work anyway, clone() throws an exception if null.
1038 _rep->_u._objectValue = new CIMObject(x);
1039 }
1040 else {
1041 _rep->_u._objectValue = new CIMObject(x.clone());
1042 }
1043 _rep->_type = CIMTYPE_OBJECT;
1044 _rep->_isNull = false;
1045 }
1046
|
1047 kumpf 1.26 void CIMValue::set(const Array<Boolean>& x)
1048 {
1049 clear();
|
1050 kumpf 1.32 _rep->_u._booleanArray = new Array<Boolean>(x);
|
1051 kumpf 1.36 _rep->_type = CIMTYPE_BOOLEAN;
|
1052 kumpf 1.26 _rep->_isArray = true;
1053 _rep->_isNull = false;
1054 }
1055
1056 void CIMValue::set(const Array<Uint8>& x)
1057 {
1058 clear();
|
1059 kumpf 1.32 _rep->_u._uint8Array = new Array<Uint8>(x);
|
1060 kumpf 1.36 _rep->_type = CIMTYPE_UINT8;
|
1061 kumpf 1.26 _rep->_isArray = true;
1062 _rep->_isNull = false;
1063 }
1064
1065 void CIMValue::set(const Array<Sint8>& x)
1066 {
1067 clear();
|
1068 kumpf 1.32 _rep->_u._sint8Array = new Array<Sint8>(x);
|
1069 kumpf 1.36 _rep->_type = CIMTYPE_SINT8;
|
1070 kumpf 1.26 _rep->_isArray = true;
1071 _rep->_isNull = false;
1072 }
1073
1074 void CIMValue::set(const Array<Uint16>& x)
1075 {
1076 clear();
|
1077 kumpf 1.32 _rep->_u._uint16Array = new Array<Uint16>(x);
|
1078 kumpf 1.36 _rep->_type = CIMTYPE_UINT16;
|
1079 kumpf 1.26 _rep->_isArray = true;
1080 _rep->_isNull = false;
1081 }
1082
1083 void CIMValue::set(const Array<Sint16>& x)
1084 {
1085 clear();
|
1086 kumpf 1.32 _rep->_u._sint16Array = new Array<Sint16>(x);
|
1087 kumpf 1.36 _rep->_type = CIMTYPE_SINT16;
|
1088 kumpf 1.26 _rep->_isArray = true;
1089 _rep->_isNull = false;
1090 }
1091
1092 void CIMValue::set(const Array<Uint32>& x)
1093 {
1094 clear();
|
1095 kumpf 1.32 _rep->_u._uint32Array = new Array<Uint32>(x);
|
1096 kumpf 1.36 _rep->_type = CIMTYPE_UINT32;
|
1097 kumpf 1.26 _rep->_isArray = true;
1098 _rep->_isNull = false;
1099 }
1100
1101 void CIMValue::set(const Array<Sint32>& x)
1102 {
1103 clear();
|
1104 kumpf 1.32 _rep->_u._sint32Array = new Array<Sint32>(x);
|
1105 kumpf 1.36 _rep->_type = CIMTYPE_SINT32;
|
1106 kumpf 1.26 _rep->_isArray = true;
1107 _rep->_isNull = false;
1108 }
1109
1110 void CIMValue::set(const Array<Uint64>& x)
1111 {
1112 clear();
|
1113 kumpf 1.32 _rep->_u._uint64Array = new Array<Uint64>(x);
|
1114 kumpf 1.36 _rep->_type = CIMTYPE_UINT64;
|
1115 kumpf 1.26 _rep->_isArray = true;
1116 _rep->_isNull = false;
1117 }
1118
1119 void CIMValue::set(const Array<Sint64>& x)
1120 {
1121 clear();
|
1122 kumpf 1.32 _rep->_u._sint64Array = new Array<Sint64>(x);
|
1123 kumpf 1.36 _rep->_type = CIMTYPE_SINT64;
|
1124 kumpf 1.26 _rep->_isArray = true;
1125 _rep->_isNull = false;
1126 }
1127
1128 void CIMValue::set(const Array<Real32>& x)
1129 {
1130 clear();
|
1131 kumpf 1.32 _rep->_u._real32Array = new Array<Real32>(x);
|
1132 kumpf 1.36 _rep->_type = CIMTYPE_REAL32;
|
1133 kumpf 1.26 _rep->_isArray = true;
1134 _rep->_isNull = false;
1135 }
1136
1137 void CIMValue::set(const Array<Real64>& x)
1138 {
1139 clear();
|
1140 kumpf 1.32 _rep->_u._real64Array = new Array<Real64>(x);
|
1141 kumpf 1.36 _rep->_type = CIMTYPE_REAL64;
|
1142 kumpf 1.26 _rep->_isArray = true;
1143 _rep->_isNull = false;
1144 }
1145
1146 void CIMValue::set(const Array<Char16>& x)
1147 {
1148 clear();
|
1149 kumpf 1.32 _rep->_u._char16Array = new Array<Char16>(x);
|
1150 kumpf 1.36 _rep->_type = CIMTYPE_CHAR16;
|
1151 kumpf 1.26 _rep->_isArray = true;
1152 _rep->_isNull = false;
1153 }
1154
1155 void CIMValue::set(const Array<String>& x)
1156 {
1157 clear();
|
1158 kumpf 1.32 _rep->_u._stringArray = new Array<String>(x);
|
1159 kumpf 1.36 _rep->_type = CIMTYPE_STRING;
|
1160 kumpf 1.26 _rep->_isArray = true;
1161 _rep->_isNull = false;
1162 }
1163
1164 void CIMValue::set(const Array<CIMDateTime>& x)
1165 {
1166 clear();
|
1167 kumpf 1.32 _rep->_u._dateTimeArray = new Array<CIMDateTime>(x);
|
1168 kumpf 1.36 _rep->_type = CIMTYPE_DATETIME;
|
1169 kumpf 1.26 _rep->_isArray = true;
1170 _rep->_isNull = false;
1171 }
1172
|
1173 kumpf 1.31 void CIMValue::set(const Array<CIMObjectPath>& x)
|
1174 kumpf 1.26 {
1175 clear();
|
1176 kumpf 1.32 _rep->_u._referenceArray = new Array<CIMObjectPath>(x);
|
1177 kumpf 1.36 _rep->_type = CIMTYPE_REFERENCE;
|
1178 kumpf 1.26 _rep->_isArray = true;
1179 _rep->_isNull = false;
1180 }
1181
|
1182 dave.sudlik 1.51 void CIMValue::set(const Array<CIMObject>& x)
1183 {
1184 clear();
1185 _rep->_u._objectArray = new Array<CIMObject>(x);
1186 _rep->_type = CIMTYPE_OBJECT;
1187 _rep->_isArray = true;
1188 _rep->_isNull = false;
1189 }
1190
|
1191 kumpf 1.26 void CIMValue::get(Boolean& x) const
1192 {
|
1193 kumpf 1.36 if (_rep->_type != CIMTYPE_BOOLEAN || _rep->_isArray)
|
1194 kumpf 1.39 throw TypeMismatchException();
|
1195 kumpf 1.26
|
1196 kumpf 1.41 if (!_rep->_isNull)
1197 x = _rep->_u._booleanValue != 0;
|
1198 kumpf 1.26 }
1199
1200 void CIMValue::get(Uint8& x) const
1201 {
|
1202 kumpf 1.36 if (_rep->_type != CIMTYPE_UINT8 || _rep->_isArray)
|
1203 kumpf 1.39 throw TypeMismatchException();
|
1204 kumpf 1.26
|
1205 kumpf 1.41 if (!_rep->_isNull)
1206 x = _rep->_u._uint8Value;
|
1207 kumpf 1.26 }
1208
1209 void CIMValue::get(Sint8& x) const
1210 {
|
1211 kumpf 1.36 if (_rep->_type != CIMTYPE_SINT8 || _rep->_isArray)
|
1212 kumpf 1.39 throw TypeMismatchException();
|
1213 kumpf 1.26
|
1214 kumpf 1.41 if (!_rep->_isNull)
1215 x = _rep->_u._sint8Value;
|
1216 kumpf 1.26 }
1217
1218 void CIMValue::get(Uint16& x) const
1219 {
|
1220 kumpf 1.36 if (_rep->_type != CIMTYPE_UINT16 || _rep->_isArray)
|
1221 kumpf 1.39 throw TypeMismatchException();
|
1222 kumpf 1.26
|
1223 kumpf 1.41 if (!_rep->_isNull)
1224 x = _rep->_u._uint16Value;
|
1225 kumpf 1.26 }
1226
1227 void CIMValue::get(Sint16& x) const
1228 {
|
1229 kumpf 1.36 if (_rep->_type != CIMTYPE_SINT16 || _rep->_isArray)
|
1230 kumpf 1.39 throw TypeMismatchException();
|
1231 kumpf 1.26
|
1232 kumpf 1.41 if (!_rep->_isNull)
1233 x = _rep->_u._sint16Value;
|
1234 kumpf 1.26 }
|
1235 mike 1.11
1236 void CIMValue::get(Uint32& x) const
1237 {
|
1238 kumpf 1.36 if (_rep->_type != CIMTYPE_UINT32 || _rep->_isArray)
|
1239 kumpf 1.39 throw TypeMismatchException();
|
1240 mike 1.11
|
1241 kumpf 1.41 if (!_rep->_isNull)
1242 x = _rep->_u._uint32Value;
|
1243 mike 1.11 }
1244
1245 void CIMValue::get(Sint32& x) const
1246 {
|
1247 kumpf 1.36 if (_rep->_type != CIMTYPE_SINT32 || _rep->_isArray)
|
1248 kumpf 1.39 throw TypeMismatchException();
|
1249 mike 1.11
|
1250 kumpf 1.41 if (!_rep->_isNull)
1251 x = _rep->_u._sint32Value;
|
1252 mike 1.11 }
1253
1254 void CIMValue::get(Uint64& x) const
1255 {
|
1256 kumpf 1.36 if (_rep->_type != CIMTYPE_UINT64 || _rep->_isArray)
|
1257 kumpf 1.39 throw TypeMismatchException();
|
1258 mike 1.11
|
1259 kumpf 1.41 if (!_rep->_isNull)
1260 x = _rep->_u._uint64Value;
|
1261 mike 1.11 }
1262
1263 void CIMValue::get(Sint64& x) const
1264 {
|
1265 kumpf 1.36 if (_rep->_type != CIMTYPE_SINT64 || _rep->_isArray)
|
1266 kumpf 1.39 throw TypeMismatchException();
|
1267 mike 1.11
|
1268 kumpf 1.41 if (!_rep->_isNull)
1269 x = _rep->_u._sint64Value;
|
1270 mike 1.11 }
1271
1272 void CIMValue::get(Real32& x) const
1273 {
|
1274 kumpf 1.36 if (_rep->_type != CIMTYPE_REAL32 || _rep->_isArray)
|
1275 kumpf 1.39 throw TypeMismatchException();
|
1276 mike 1.11
|
1277 kumpf 1.41 if (!_rep->_isNull)
1278 x = _rep->_u._real32Value;
|
1279 mike 1.11 }
1280
1281 void CIMValue::get(Real64& x) const
1282 {
|
1283 kumpf 1.36 if (_rep->_type != CIMTYPE_REAL64 || _rep->_isArray)
|
1284 kumpf 1.39 throw TypeMismatchException();
|
1285 mike 1.11
|
1286 kumpf 1.41 if (!_rep->_isNull)
1287 x = _rep->_u._real64Value;
|
1288 mike 1.11 }
1289
1290 void CIMValue::get(Char16& x) const
1291 {
|
1292 kumpf 1.36 if (_rep->_type != CIMTYPE_CHAR16 || _rep->_isArray)
|
1293 kumpf 1.39 throw TypeMismatchException();
|
1294 mike 1.11
|
1295 kumpf 1.41 if (!_rep->_isNull)
1296 x = _rep->_u._char16Value;
|
1297 mike 1.11 }
1298
1299 void CIMValue::get(String& x) const
1300 {
|
1301 kumpf 1.36 if (_rep->_type != CIMTYPE_STRING || _rep->_isArray)
|
1302 kumpf 1.39 throw TypeMismatchException();
|
1303 mike 1.11
|
1304 kumpf 1.41 if (!_rep->_isNull)
1305 x = *_rep->_u._stringValue;
|
1306 mike 1.11 }
1307
1308 void CIMValue::get(CIMDateTime& x) const
1309 {
|
1310 kumpf 1.36 if (_rep->_type != CIMTYPE_DATETIME || _rep->_isArray)
|
1311 kumpf 1.39 throw TypeMismatchException();
|
1312 mike 1.11
|
1313 kumpf 1.41 if (!_rep->_isNull)
1314 x = *_rep->_u._dateTimeValue;
|
1315 mike 1.11 }
1316
|
1317 kumpf 1.31 void CIMValue::get(CIMObjectPath& x) const
|
1318 mike 1.11 {
|
1319 kumpf 1.36 if (_rep->_type != CIMTYPE_REFERENCE || _rep->_isArray)
|
1320 kumpf 1.39 throw TypeMismatchException();
|
1321 mike 1.11
|
1322 kumpf 1.41 if (!_rep->_isNull)
1323 x = *_rep->_u._referenceValue;
|
1324 mike 1.11 }
1325
|
1326 dave.sudlik 1.51 void CIMValue::get(CIMObject& x) const
1327 {
1328 if (_rep->_type != CIMTYPE_OBJECT || _rep->_isArray)
1329 throw TypeMismatchException();
1330
1331 if (!_rep->_isNull)
1332 x = *_rep->_u._objectValue;
1333 }
1334
|
1335 mike 1.11 void CIMValue::get(Array<Boolean>& x) const
1336 {
|
1337 kumpf 1.36 if (_rep->_type != CIMTYPE_BOOLEAN || !_rep->_isArray)
|
1338 kumpf 1.39 throw TypeMismatchException();
|
1339 mike 1.11
|
1340 kumpf 1.41 if (!_rep->_isNull)
1341 x = *_rep->_u._booleanArray;
|
1342 mike 1.11 }
1343
1344 void CIMValue::get(Array<Uint8>& x) const
1345 {
|
1346 kumpf 1.36 if (_rep->_type != CIMTYPE_UINT8 || !_rep->_isArray)
|
1347 kumpf 1.39 throw TypeMismatchException();
|
1348 mike 1.11
|
1349 kumpf 1.41 if (!_rep->_isNull)
1350 x = *_rep->_u._uint8Array;
|
1351 mike 1.11 }
1352
1353 void CIMValue::get(Array<Sint8>& x) const
1354 {
|
1355 kumpf 1.36 if (_rep->_type != CIMTYPE_SINT8 || !_rep->_isArray)
|
1356 kumpf 1.39 throw TypeMismatchException();
|
1357 mike 1.11
|
1358 kumpf 1.41 if (!_rep->_isNull)
1359 x = *_rep->_u._sint8Array;
|
1360 mike 1.11 }
1361
1362 void CIMValue::get(Array<Uint16>& x) const
1363 {
|
1364 kumpf 1.36 if (_rep->_type != CIMTYPE_UINT16 || !_rep->_isArray)
|
1365 kumpf 1.39 throw TypeMismatchException();
|
1366 mike 1.11
|
1367 kumpf 1.41 if (!_rep->_isNull)
1368 x = *_rep->_u._uint16Array;
|
1369 mike 1.11 }
1370
1371 void CIMValue::get(Array<Sint16>& x) const
1372 {
|
1373 kumpf 1.36 if (_rep->_type != CIMTYPE_SINT16 || !_rep->_isArray)
|
1374 kumpf 1.39 throw TypeMismatchException();
|
1375 mike 1.11
|
1376 kumpf 1.41 if (!_rep->_isNull)
1377 x = *_rep->_u._sint16Array;
|
1378 mike 1.11 }
1379
1380 void CIMValue::get(Array<Uint32>& x) const
1381 {
|
1382 kumpf 1.36 if (_rep->_type != CIMTYPE_UINT32 || !_rep->_isArray)
|
1383 kumpf 1.39 throw TypeMismatchException();
|
1384 mike 1.11
|
1385 kumpf 1.41 if (!_rep->_isNull)
1386 x = *_rep->_u._uint32Array;
|
1387 mike 1.11 }
1388
1389 void CIMValue::get(Array<Sint32>& x) const
1390 {
|
1391 kumpf 1.36 if (_rep->_type != CIMTYPE_SINT32 || !_rep->_isArray)
|
1392 kumpf 1.39 throw TypeMismatchException();
|
1393 mike 1.11
|
1394 kumpf 1.41 if (!_rep->_isNull)
1395 x = *_rep->_u._sint32Array;
|
1396 mike 1.11 }
1397
1398 void CIMValue::get(Array<Uint64>& x) const
1399 {
|
1400 kumpf 1.36 if (_rep->_type != CIMTYPE_UINT64 || !_rep->_isArray)
|
1401 kumpf 1.39 throw TypeMismatchException();
|
1402 mike 1.11
|
1403 kumpf 1.41 if (!_rep->_isNull)
1404 x = *_rep->_u._uint64Array;
|
1405 mike 1.11 }
1406
1407 void CIMValue::get(Array<Sint64>& x) const
1408 {
|
1409 kumpf 1.36 if (_rep->_type != CIMTYPE_SINT64 || !_rep->_isArray)
|
1410 kumpf 1.39 throw TypeMismatchException();
|
1411 mike 1.11
|
1412 kumpf 1.41 if (!_rep->_isNull)
1413 x = *_rep->_u._sint64Array;
|
1414 mike 1.11 }
1415
1416 void CIMValue::get(Array<Real32>& x) const
1417 {
|
1418 kumpf 1.36 if (_rep->_type != CIMTYPE_REAL32 || !_rep->_isArray)
|
1419 kumpf 1.39 throw TypeMismatchException();
|
1420 mike 1.11
|
1421 kumpf 1.41 if (!_rep->_isNull)
1422 x = *_rep->_u._real32Array;
|
1423 mike 1.11 }
1424
1425 void CIMValue::get(Array<Real64>& x) const
1426 {
|
1427 kumpf 1.36 if (_rep->_type != CIMTYPE_REAL64 || !_rep->_isArray)
|
1428 kumpf 1.39 throw TypeMismatchException();
|
1429 mike 1.11
|
1430 kumpf 1.41 if (!_rep->_isNull)
1431 x = *_rep->_u._real64Array;
|
1432 mike 1.11 }
1433
1434 void CIMValue::get(Array<Char16>& x) const
1435 {
|
1436 kumpf 1.36 if (_rep->_type != CIMTYPE_CHAR16 || !_rep->_isArray)
|
1437 kumpf 1.39 throw TypeMismatchException();
|
1438 mike 1.11
|
1439 kumpf 1.41 if (!_rep->_isNull)
1440 x = *_rep->_u._char16Array;
|
1441 mike 1.11 }
1442
1443 void CIMValue::get(Array<String>& x) const
1444 {
|
1445 kumpf 1.36 if (_rep->_type != CIMTYPE_STRING || !_rep->_isArray)
|
1446 kumpf 1.39 throw TypeMismatchException();
|
1447 mike 1.11
|
1448 kumpf 1.41 if (!_rep->_isNull)
1449 x = *_rep->_u._stringArray;
|
1450 mike 1.11 }
1451
1452 void CIMValue::get(Array<CIMDateTime>& x) const
1453 {
|
1454 kumpf 1.36 if (_rep->_type != CIMTYPE_DATETIME || !_rep->_isArray)
|
1455 kumpf 1.39 throw TypeMismatchException();
|
1456 mike 1.11
|
1457 kumpf 1.41 if (!_rep->_isNull)
1458 x = *_rep->_u._dateTimeArray;
|
1459 mike 1.11 }
1460
|
1461 kumpf 1.31 void CIMValue::get(Array<CIMObjectPath>& x) const
|
1462 kumpf 1.15 {
|
1463 kumpf 1.36 if (_rep->_type != CIMTYPE_REFERENCE || !_rep->_isArray)
|
1464 kumpf 1.39 throw TypeMismatchException();
|
1465 kumpf 1.15
|
1466 kumpf 1.41 if (!_rep->_isNull)
1467 x = *_rep->_u._referenceArray;
|
1468 kumpf 1.15 }
1469
|
1470 dave.sudlik 1.51 void CIMValue::get(Array<CIMObject>& x) const
1471 {
1472 if (_rep->_type != CIMTYPE_OBJECT || !_rep->_isArray)
1473 throw TypeMismatchException();
1474
1475 if (!_rep->_isNull)
1476 x = *_rep->_u._objectArray;
1477 }
1478
|
1479 kumpf 1.35 Boolean CIMValue::equal(const CIMValue& x) const
|
1480 kumpf 1.28 {
|
1481 kumpf 1.35 if (!typeCompatible(x))
1482 return false;
1483
1484 if (_rep->_isNull != x._rep->_isNull)
1485 return false;
1486
1487 if (_rep->_isArray)
1488 {
1489 switch (_rep->_type)
1490 {
|
1491 kumpf 1.36 case CIMTYPE_BOOLEAN:
|
1492 kumpf 1.35 return (*_rep->_u._booleanArray) ==
1493 (*x._rep->_u._booleanArray);
1494
|
1495 kumpf 1.36 case CIMTYPE_UINT8:
|
1496 kumpf 1.35 return (*_rep->_u._uint8Array) ==
1497 (*x._rep->_u._uint8Array);
1498
|
1499 kumpf 1.36 case CIMTYPE_SINT8:
|
1500 kumpf 1.35 return (*_rep->_u._sint8Array) ==
1501 (*x._rep->_u._sint8Array);
1502
|
1503 kumpf 1.36 case CIMTYPE_UINT16:
|
1504 kumpf 1.35 return (*_rep->_u._uint16Array) ==
1505 (*x._rep->_u._uint16Array);
1506
|
1507 kumpf 1.36 case CIMTYPE_SINT16:
|
1508 kumpf 1.35 return (*_rep->_u._sint16Array) ==
1509 (*x._rep->_u._sint16Array);
1510
|
1511 kumpf 1.36 case CIMTYPE_UINT32:
|
1512 kumpf 1.35 return (*_rep->_u._uint32Array) ==
1513 (*x._rep->_u._uint32Array);
1514
|
1515 kumpf 1.36 case CIMTYPE_SINT32:
|
1516 kumpf 1.35 return (*_rep->_u._sint32Array) ==
1517 (*x._rep->_u._sint32Array);
1518
|
1519 kumpf 1.36 case CIMTYPE_UINT64:
|
1520 kumpf 1.35 return (*_rep->_u._uint64Array) ==
1521 (*x._rep->_u._uint64Array);
1522
|
1523 kumpf 1.36 case CIMTYPE_SINT64:
|
1524 kumpf 1.35 return (*_rep->_u._sint64Array) ==
1525 (*x._rep->_u._sint64Array);
1526
|
1527 kumpf 1.36 case CIMTYPE_REAL32:
|
1528 kumpf 1.35 return (*_rep->_u._real32Array) ==
1529 (*x._rep->_u._real32Array);
1530
|
1531 kumpf 1.36 case CIMTYPE_REAL64:
|
1532 kumpf 1.35 return (*_rep->_u._real64Array) ==
1533 (*x._rep->_u._real64Array);
1534
|
1535 kumpf 1.36 case CIMTYPE_CHAR16:
|
1536 kumpf 1.35 return (*_rep->_u._char16Array) ==
1537 (*x._rep->_u._char16Array);
1538
|
1539 kumpf 1.36 case CIMTYPE_STRING:
|
1540 kumpf 1.35 return (*_rep->_u._stringArray) ==
1541 (*x._rep->_u._stringArray);
1542
|
1543 kumpf 1.36 case CIMTYPE_DATETIME:
|
1544 kumpf 1.35 return (*_rep->_u._dateTimeArray) ==
1545 (*x._rep->_u._dateTimeArray);
1546
|
1547 kumpf 1.36 case CIMTYPE_REFERENCE:
|
1548 kumpf 1.35 return (*_rep->_u._referenceArray) ==
1549 (*x._rep->_u._referenceArray);
|
1550 kumpf 1.42
|
1551 dave.sudlik 1.51 case CIMTYPE_OBJECT:
1552 return (*_rep->_u._objectArray) ==
1553 (*x._rep->_u._objectArray);
1554
|
1555 kumpf 1.35 default:
|
1556 kumpf 1.42 PEGASUS_ASSERT(false);
|
1557 kumpf 1.35 }
1558 }
1559 else
1560 {
1561 switch (_rep->_type)
1562 {
|
1563 kumpf 1.36 case CIMTYPE_BOOLEAN:
|
1564 kumpf 1.35 return _rep->_u._booleanValue == x._rep->_u._booleanValue;
1565
|
1566 kumpf 1.36 case CIMTYPE_UINT8:
|
1567 kumpf 1.35 return _rep->_u._uint8Value == x._rep->_u._uint8Value;
1568
|
1569 kumpf 1.36 case CIMTYPE_SINT8:
|
1570 kumpf 1.35 return _rep->_u._sint8Value == x._rep->_u._sint8Value;
1571
|
1572 kumpf 1.36 case CIMTYPE_UINT16:
|
1573 kumpf 1.35 return _rep->_u._uint16Value == x._rep->_u._uint16Value;
1574
|
1575 kumpf 1.36 case CIMTYPE_SINT16:
|
1576 kumpf 1.35 return _rep->_u._sint16Value == x._rep->_u._sint16Value;
1577
|
1578 kumpf 1.36 case CIMTYPE_UINT32:
|
1579 kumpf 1.35 return _rep->_u._uint32Value == x._rep->_u._uint32Value;
1580
|
1581 kumpf 1.36 case CIMTYPE_SINT32:
|
1582 kumpf 1.35 return _rep->_u._sint32Value == x._rep->_u._sint32Value;
1583
|
1584 kumpf 1.36 case CIMTYPE_UINT64:
|
1585 kumpf 1.35 return _rep->_u._uint64Value == x._rep->_u._uint64Value;
1586
|
1587 kumpf 1.36 case CIMTYPE_SINT64:
|
1588 kumpf 1.35 return _rep->_u._sint64Value == x._rep->_u._sint64Value;
1589
|
1590 kumpf 1.36 case CIMTYPE_REAL32:
|
1591 kumpf 1.35 return _rep->_u._real32Value == x._rep->_u._real32Value;
1592
|
1593 kumpf 1.36 case CIMTYPE_REAL64:
|
1594 kumpf 1.35 return _rep->_u._real64Value == x._rep->_u._real64Value;
1595
|
1596 kumpf 1.36 case CIMTYPE_CHAR16:
|
1597 kumpf 1.35 return _rep->_u._char16Value == x._rep->_u._char16Value;
1598
|
1599 kumpf 1.36 case CIMTYPE_STRING:
|
1600 kumpf 1.35 return String::equal(*_rep->_u._stringValue,
1601 *x._rep->_u._stringValue);
1602
|
1603 kumpf 1.36 case CIMTYPE_DATETIME:
|
1604 kumpf 1.35 return *_rep->_u._dateTimeValue == *x._rep->_u._dateTimeValue;
1605
|
1606 kumpf 1.36 case CIMTYPE_REFERENCE:
|
1607 kumpf 1.35 return *_rep->_u._referenceValue ==
1608 *x._rep->_u._referenceValue;
1609
|
1610 dave.sudlik 1.51 case CIMTYPE_OBJECT:
1611 return (*_rep->_u._objectValue).identical((*x._rep->_u._objectValue));
1612
|
1613 kumpf 1.35 default:
|
1614 kumpf 1.42 PEGASUS_ASSERT(false);
|
1615 kumpf 1.35 }
1616 }
1617
1618 // Unreachable!
1619 return false;
|
1620 mike 1.11 }
1621
1622 String CIMValue::toString() const
1623 {
1624 Array<Sint8> out;
1625
|
1626 karl 1.13 //ATTN: Not sure what we should do with getstring for Null CIMValues
1627 //Choice return empty string or exception out.
|
1628 kumpf 1.26 if (_rep->_isNull)
|
1629 kumpf 1.18 return String();
|
1630 karl 1.13
|
1631 kumpf 1.26 if (_rep->_isArray)
|
1632 mike 1.11 {
|
1633 kumpf 1.26 switch (_rep->_type)
1634 {
|
1635 kumpf 1.36 case CIMTYPE_BOOLEAN:
|
1636 kumpf 1.26 {
|
1637 kumpf 1.32 Uint32 size = _rep->_u._booleanArray->size();
|
1638 kumpf 1.26 for (Uint32 i = 0; i < size; i++)
1639 {
|
1640 kumpf 1.32 _toString(out, Boolean(_rep->_u._booleanArray->getData()[i]));
|
1641 kumpf 1.26 out << " ";
1642 }
1643 break;
1644 }
1645
|
1646 kumpf 1.36 case CIMTYPE_UINT8:
|
1647 kumpf 1.32 _toString(out, _rep->_u._uint8Array->getData(),
1648 _rep->_u._uint8Array->size());
|
1649 kumpf 1.26 break;
1650
|
1651 kumpf 1.36 case CIMTYPE_SINT8:
|
1652 kumpf 1.32 _toString(out, _rep->_u._sint8Array->getData(),
1653 _rep->_u._sint8Array->size());
|
1654 kumpf 1.26 break;
1655
|
1656 kumpf 1.36 case CIMTYPE_UINT16:
|
1657 kumpf 1.32 _toString(out, _rep->_u._uint16Array->getData(),
1658 _rep->_u._uint16Array->size());
|
1659 kumpf 1.26 break;
1660
|
1661 kumpf 1.36 case CIMTYPE_SINT16:
|
1662 kumpf 1.32 _toString(out, _rep->_u._sint16Array->getData(),
1663 _rep->_u._sint16Array->size());
|
1664 kumpf 1.26 break;
1665
|
1666 kumpf 1.36 case CIMTYPE_UINT32:
|
1667 kumpf 1.32 _toString(out, _rep->_u._uint32Array->getData(),
1668 _rep->_u._uint32Array->size());
|
1669 kumpf 1.26 break;
1670
|
1671 kumpf 1.36 case CIMTYPE_SINT32:
|
1672 kumpf 1.32 _toString(out, _rep->_u._sint32Array->getData(),
1673 _rep->_u._sint32Array->size());
|
1674 kumpf 1.26 break;
1675
|
1676 kumpf 1.36 case CIMTYPE_UINT64:
|
1677 kumpf 1.32 _toString(out, _rep->_u._uint64Array->getData(),
1678 _rep->_u._uint64Array->size());
|
1679 kumpf 1.26 break;
1680
|
1681 kumpf 1.36 case CIMTYPE_SINT64:
|
1682 kumpf 1.32 _toString(out, _rep->_u._sint64Array->getData(),
1683 _rep->_u._sint64Array->size());
|
1684 kumpf 1.26 break;
1685
|
1686 kumpf 1.36 case CIMTYPE_REAL32:
|
1687 kumpf 1.32 _toString(out, _rep->_u._real32Array->getData(),
1688 _rep->_u._real32Array->size());
|
1689 kumpf 1.26 break;
1690
|
1691 kumpf 1.36 case CIMTYPE_REAL64:
|
1692 kumpf 1.32 _toString(out, _rep->_u._real64Array->getData(),
1693 _rep->_u._real64Array->size());
|
1694 kumpf 1.26 break;
1695
|
1696 kumpf 1.36 case CIMTYPE_CHAR16:
|
1697 kumpf 1.32 _toString(out, _rep->_u._char16Array->getData(),
1698 _rep->_u._char16Array->size());
|
1699 kumpf 1.26 break;
1700
|
1701 kumpf 1.36 case CIMTYPE_STRING:
|
1702 kumpf 1.32 _toString(out, _rep->_u._stringArray->getData(),
1703 _rep->_u._stringArray->size());
|
1704 kumpf 1.26 break;
1705
|
1706 kumpf 1.36 case CIMTYPE_DATETIME:
|
1707 kumpf 1.32 _toString(out, _rep->_u._dateTimeArray->getData(),
1708 _rep->_u._dateTimeArray->size());
|
1709 kumpf 1.26 break;
1710
|
1711 kumpf 1.36 case CIMTYPE_REFERENCE:
|
1712 kumpf 1.32 _toString(out, _rep->_u._referenceArray->getData(),
1713 _rep->_u._referenceArray->size());
|
1714 kumpf 1.26 break;
|
1715 kumpf 1.15
|
1716 dave.sudlik 1.51 case CIMTYPE_OBJECT:
1717 _toString(out, _rep->_u._objectArray->getData(),
1718 _rep->_u._objectArray->size());
1719 break;
1720
|
1721 karl 1.13 default:
|
1722 kumpf 1.42 PEGASUS_ASSERT(false);
|
1723 kumpf 1.26 }
|
1724 mike 1.11 }
1725 else
1726 {
|
1727 kumpf 1.26 switch (_rep->_type)
1728 {
|
1729 kumpf 1.36 case CIMTYPE_BOOLEAN:
|
1730 kumpf 1.26 _toString(out, Boolean(_rep->_u._booleanValue != 0));
1731 break;
1732
|
1733 kumpf 1.36 case CIMTYPE_UINT8:
|
1734 kumpf 1.26 _toString(out, _rep->_u._uint8Value);
1735 break;
1736
|
1737 kumpf 1.36 case CIMTYPE_SINT8:
|
1738 kumpf 1.26 _toString(out, _rep->_u._sint8Value);
1739 break;
1740
|
1741 kumpf 1.36 case CIMTYPE_UINT16:
|
1742 kumpf 1.26 _toString(out, _rep->_u._uint16Value);
1743 break;
1744
|
1745 kumpf 1.36 case CIMTYPE_SINT16:
|
1746 kumpf 1.26 _toString(out, _rep->_u._sint16Value);
1747 break;
1748
|
1749 kumpf 1.36 case CIMTYPE_UINT32:
|
1750 kumpf 1.26 _toString(out, _rep->_u._uint32Value);
1751 break;
1752
|
1753 kumpf 1.36 case CIMTYPE_SINT32:
|
1754 kumpf 1.26 _toString(out, _rep->_u._sint32Value);
1755 break;
1756
|
1757 kumpf 1.36 case CIMTYPE_UINT64:
|
1758 kumpf 1.26 _toString(out, _rep->_u._uint64Value);
1759 break;
1760
|
1761 kumpf 1.36 case CIMTYPE_SINT64:
|
1762 kumpf 1.26 _toString(out, _rep->_u._sint64Value);
1763 break;
1764
|
1765 kumpf 1.36 case CIMTYPE_REAL32:
|
1766 kumpf 1.26 _toString(out, _rep->_u._real32Value);
1767 break;
1768
|
1769 kumpf 1.36 case CIMTYPE_REAL64:
|
1770 kumpf 1.26 _toString(out, _rep->_u._real64Value);
1771 break;
1772
|
1773 kumpf 1.36 case CIMTYPE_CHAR16:
|
1774 kumpf 1.26 _toString(out, Char16(_rep->_u._char16Value));
1775 break;
1776
|
1777 kumpf 1.36 case CIMTYPE_STRING:
|
1778 kumpf 1.26 _toString(out, *_rep->_u._stringValue);
1779 break;
1780
|
1781 kumpf 1.36 case CIMTYPE_DATETIME:
|
1782 kumpf 1.26 _toString(out, *_rep->_u._dateTimeValue);
1783 break;
1784
|
1785 kumpf 1.36 case CIMTYPE_REFERENCE:
|
1786 kumpf 1.26 _toString(out, *_rep->_u._referenceValue);
1787 break;
|
1788 kumpf 1.15
|
1789 dave.sudlik 1.51 case CIMTYPE_OBJECT:
1790 _toString(out, *_rep->_u._objectValue);
1791 break;
1792
|
1793 karl 1.13 default:
|
1794 kumpf 1.42 PEGASUS_ASSERT(false);
|
1795 kumpf 1.26 }
|
1796 mike 1.11 }
1797
1798 out.append('\0');
1799 return out.getData();
|
1800 kumpf 1.26 }
1801
1802
1803 Boolean operator==(const CIMValue& x, const CIMValue& y)
1804 {
|
1805 kumpf 1.35 return x.equal(y);
|
1806 kumpf 1.26 }
1807
1808 Boolean operator!=(const CIMValue& x, const CIMValue& y)
1809 {
|
1810 kumpf 1.35 return !x.equal(y);
|
1811 mike 1.11 }
1812
1813 PEGASUS_NAMESPACE_END
|