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