(file) Return to CIMValue.cpp CVS log (file) (dir) Up to [Pegasus] / pegasus / src / Pegasus / Common

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

No CVS admin address has been configured
Powered by
ViewCVS 0.9.2