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