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