-//%/////////////////////////////////////////////////////////////////////////////
-//
-// Copyright (c) 2000 The Open Group, BMC Software, Tivoli Systems, IBM
-//
-// Permission is hereby granted, free of charge, to any person obtaining a
-// copy of this software and associated documentation files (the "Software"),
-// to deal in the Software without restriction, including without limitation
-// the rights to use, copy, modify, merge, publish, distribute, sublicense,
-// and/or sell copies of the Software, and to permit persons to whom the
-// Software is furnished to do so, subject to the following conditions:
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
-// THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
-// DEALINGS IN THE SOFTWARE.
-//
-//==============================================================================
-//
-// Author: Bob Blair (bblair@bmc.com)
-//
-// Modified By:
-//
-//%/////////////////////////////////////////////////////////////////////////////
-
-
-//
-// implementation of valueFactory
-//
-
-
-#include "valueFactory.h"
-#include "objname.h"
-#include "cimmofParser.h" /* unfortunately. Now that valueFactory needs
- to know about cimmofParser, it might as well
- be rolled into it. */
-#include <cstring>
-#include <cstdlib>
-#include <Pegasus/Common/String.h>
-
-#define min(a,b) ( a < b ? a : b )
-#define max(a,b) ( a > b ? a : b )
-
-unsigned long
-valueFactory::Stoi(const String &val) {
- unsigned int end = val.size();
- String s;
- for (unsigned int i = 0; i < end; i++) {
- switch(val[i]) {
- case '1': s += "1"; break;
- case '2': s += "2"; break;
- case '3': s += "3"; break;
- case '4': s += "4"; break;
- case '5': s += "5"; break;
- case '6': s += "6"; break;
- case '7': s += "7"; break;
- case '8': s += "8"; break;
- case '9': s += "9"; break;
- case '0': s += "0"; break;
- }
- }
- return atol(_CString(s));
-}
-
-static double
-Stof(const String &val) {
- unsigned int end = val.size();
- String s;
- for (unsigned int i = 0; i < end; i++) {
- switch(val[i]) {
- case '1': s += "1"; break;
- case '2': s += "2"; break;
- case '3': s += "3"; break;
- case '4': s += "4"; break;
- case '5': s += "5"; break;
- case '6': s += "6"; break;
- case '7': s += "7"; break;
- case '8': s += "8"; break;
- case '9': s += "9"; break;
- case '0': s += "0"; break;
- case '.': s += "."; break;
- case 'E':
- case 'e': s += "E"; break;
- }
- }
- return atof(_CString(s));
-}
-
-static CIMDateTime &
-StoDT(const String &val, CIMDateTime &dt) {
- unsigned int end = val.size();
- String s;
- for (unsigned int i = 0; i < end; i++) {
- switch(val[i]) {
- case '1': s += "1"; break;
- case '2': s += "2"; break;
- case '3': s += "3"; break;
- case '4': s += "4"; break;
- case '5': s += "5"; break;
- case '6': s += "6"; break;
- case '7': s += "7"; break;
- case '8': s += "8"; break;
- case '9': s += "9"; break;
- case '0': s += "0"; break;
- case '.': s += "."; break;
- case '+': s += "+"; break;
- case '-': s += "-"; break;
- }
- }
- if (s != "") {
- dt.set(_CString(s));
- }
- return dt;
-}
-
-//-------------------------------------------------------------------------
-// This is a parser for a comma-separated value String. It returns one
-// value per call. It handles quoted String and depends on the caller to
-// tell it where the end of the String is.
-//-------------------------------------------------------------------------
-static Uint32
-nextcsv(const String &csv, int sep, const Uint32 start,
- const Uint32 end, String &value)
-{
- enum parsestate {INDQUOTE, INSQUOTE, NOTINQUOTE};
- value = "";
- Uint32 maxend = min(csv.size(), end);
- Uint32 idx = start;
- parsestate state = NOTINQUOTE;
- while (idx < maxend) {
- char idxchar = csv[idx];
- switch (state) {
- case NOTINQUOTE:
- switch (idxchar) {
- case '\\':
- state = INSQUOTE;
- break;
- case '"':
- state = INDQUOTE;
- break;
- default:
- if (idxchar == sep)
- return idx + 1;
- else
- value += idxchar;
- break;
- }
- break;
- case INSQUOTE:
- value += idxchar;
- state = NOTINQUOTE;
- break;
- case INDQUOTE:
- switch (idxchar) {
- case '"':
- state = NOTINQUOTE;
- break;
- default:
- value += idxchar;
- break;
- }
- }
- idx++;
- } // end while
- return idx;
-}
-
-//-------------------------------------------------------------------
-// This builds a reference value from a String via the objname class
-//-------------------------------------------------------------------
-static
-CIMValue *
-build_reference_value(const String &rep)
-{
- objectName oname(rep);
- CIMReference *ref = cimmofParser::Instance()->newReference(oname);
- return new CIMValue(*ref);
-}
-
-// ------------------------------------------------------------------
-// When the value to be build is of Array type, this routine
-// parses out the comma-separated values and builds the array
-// -----------------------------------------------------------------
-static
-CIMValue *
-build_array_value(CIMType::Tag type, unsigned int arrayDimension,
- const String &rep)
-{
- String sval;
- Uint32 start = 0;
- Uint32 strsize = rep.size();
- Uint32 end = strsize - 1;
-
- switch (type) {
- case CIMType::BOOLEAN: {
- Array<Boolean> *a = new Array<Boolean>;
- while (strsize && (start = nextcsv(rep, ',', start, end, sval)) < end ) {
- if (sval[0] == 'T')
- a->append(1);
- else
- a->append(0);
- }
- return new CIMValue(*a);
- }
- case CIMType::UINT8: {
- Array<Uint8> *a = new Array<Uint8>;
- while (strsize && (start = nextcsv(rep, ',', start, end, sval)) < end ) {
- a->append((Uint8)valueFactory::Stoi(sval));
- }
- return new CIMValue(*a);
- }
- case CIMType::SINT8: {
- Array<Sint8> *a = new Array<Sint8>;
- while (strsize && (start = nextcsv(rep, ',', start, end, sval)) < end ) {
- a->append((Sint8)valueFactory::Stoi(sval));
- }
- return new CIMValue(*a);
- }
- case CIMType::UINT16: {
- Array<Uint16> *a = new Array<Uint16>;
- while (strsize && (start = nextcsv(rep, ',', start, end, sval)) < end ) {
- a->append((Uint16)valueFactory::Stoi(sval));
- }
- return new CIMValue(*a);
- }
- case CIMType::SINT16: {
- Array<Sint16> *a = new Array<Sint16>;
- while (strsize && (start = nextcsv(rep, ',', start, end, sval)) < end ) {
- a->append((Sint16)valueFactory::Stoi(sval));
- }
- return new CIMValue(*a);
- }
- case CIMType::UINT32: {
- Array<Uint32> *a = new Array<Uint32>;
- while (strsize && (start = nextcsv(rep, ',', start, end, sval)) < end ) {
- a->append((Uint32)valueFactory::Stoi(sval));
- }
- return new CIMValue(*a);
- }
- case CIMType::SINT32: {
- Array<Sint32> *a = new Array<Sint32>;
- while (strsize && (start = nextcsv(rep, ',', start, end, sval)) < end ) {
- a->append((Sint32)valueFactory::Stoi(sval));
- }
- return new CIMValue(*a);
- }
- case CIMType::UINT64: {
- Array<Uint64> *a = new Array<Uint64>;
- while (strsize && (start = nextcsv(rep, ',', start, end, sval)) < end ) {
- a->append((Uint64)valueFactory::Stoi(sval));
- }
- return new CIMValue(*a);
- }
- case CIMType::SINT64: {
- Array<Sint64> *a = new Array<Sint64>;
- while (strsize && (start = nextcsv(rep, ',', start, end, sval)) < end ) {
- a->append((Sint64)valueFactory::Stoi(sval));
- }
- return new CIMValue(*a);
- }
- case CIMType::REAL32: {
- Array<Real32> *a = new Array<Real32>;
- while (strsize && (start = nextcsv(rep, ',', start, end, sval)) < end ) {
- a->append((Real32)Stof(sval));
- }
- return new CIMValue(*a);
- }
- case CIMType::REAL64: {
- Array<Real64> *a = new Array<Real64>;
- while (strsize && (start = nextcsv(rep, ',', start, end, sval)) < end ) {
- a->append((Real64)Stof(sval));
- }
- return new CIMValue(*a);
- }
- case CIMType::CHAR16: {
- Array<Char16> *a = new Array<Char16>;
- while (strsize && (start = nextcsv(rep, ',', start, end, sval)) < end ) {
- a->append(sval[0]);
- }
- return new CIMValue(*a);
- }
- case CIMType::STRING: {
- Array<String> *a = new Array<String>;
- while (strsize && (start = nextcsv(rep, ',', start, end, sval)) < end ) {
- a->append(sval);
- }
- return new CIMValue(*a);
- }
- case CIMType::DATETIME: {
- Array<CIMDateTime> *a = new Array<CIMDateTime>;
- while (strsize && (start = nextcsv(rep, ',', start, end, sval)) < end ) {
- CIMDateTime dt;
- StoDT(sval, dt);
- a->append(dt);
- }
- return new CIMValue(*a);
- }
- case CIMType::REFERENCE:
- case CIMType::NONE:
- break;
- } // end switch
- return 0;
-}
-
-
-CIMValue *
-valueFactory::createValue(CIMType::Tag type, int arrayDimension,
- const String *repp)
-{
- const String &rep = *repp;
- CIMDateTime dt;
- if (arrayDimension == -1) { // this is not an array type
- switch(type) {
- case CIMType::UINT8: return new CIMValue((Uint8) valueFactory::Stoi(rep));
- case CIMType::SINT8: return new CIMValue((Sint8) valueFactory::Stoi(rep));
- case CIMType::UINT16: return new CIMValue((Uint16) valueFactory::Stoi(rep));
- case CIMType::SINT16: return new CIMValue((Sint16) valueFactory::Stoi(rep));
- case CIMType::UINT32: return new CIMValue((Uint32) valueFactory::Stoi(rep));
- case CIMType::SINT32: return new CIMValue((Sint32) valueFactory::Stoi(rep));
- case CIMType::UINT64: return new CIMValue((Uint64) valueFactory::Stoi(rep));
- case CIMType::SINT64: return new CIMValue((Sint64) valueFactory::Stoi(rep));
- case CIMType::REAL32: return new CIMValue((Real32) Stof(rep));
- case CIMType::REAL64: return new CIMValue((Real64) Stof(rep));
- case CIMType::CHAR16: return new CIMValue((Char16) rep[0]);
- case CIMType::BOOLEAN: return new CIMValue((Boolean) (rep[0] == 'T'?1:0));
- case CIMType::STRING: return new CIMValue(rep);
- case CIMType::DATETIME: return new CIMValue(StoDT(rep, dt));
- case CIMType::REFERENCE: return build_reference_value(rep);
- case CIMType::NONE: return(new CIMValue((Uint32) 0));
- }
- return(new CIMValue((Uint32) 0)); // default
- } else { // an array type, either fixed or variable
- return build_array_value(type, (unsigned int)arrayDimension, rep);
- }
-}
+//%/////////////////////////////////////////////////////////////////////////////\r
+//\r
+// Copyright (c) 2000, 2001 The Open group, BMC Software, Tivoli Systems, IBM\r
+//\r
+// Permission is hereby granted, free of charge, to any person obtaining a copy\r
+// of this software and associated documentation files (the "Software"), to \r
+// deal in the Software without restriction, including without limitation the \r
+// rights to use, copy, modify, merge, publish, distribute, sublicense, and/or \r
+// sell copies of the Software, and to permit persons to whom the Software is\r
+// furnished to do so, subject to the following conditions:\r
+// \r
+// THE ABOVE COPYRIGHT NOTICE AND THIS PERMISSION NOTICE SHALL BE INCLUDED IN \r
+// ALL COPIES OR SUBSTANTIAL PORTIONS OF THE SOFTWARE. THE SOFTWARE IS PROVIDED\r
+// "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT\r
+// LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR \r
+// PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT \r
+// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN \r
+// ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION\r
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\r
+//\r
+//==============================================================================\r
+//\r
+// Author: Bob Blair (bblair@bmc.com)\r
+//\r
+// Modified By:\r
+//\r
+//%/////////////////////////////////////////////////////////////////////////////\r
+\r
+\r
+//\r
+// implementation of valueFactory \r
+//\r
+\r
+\r
+#include "valueFactory.h"\r
+#include "objname.h"\r
+#include "cimmofParser.h" /* unfortunately. Now that valueFactory needs\r
+ to know about cimmofParser, it might as well\r
+ be rolled into it. */\r
+#include <cstring>\r
+#include <cstdlib>\r
+#include <Pegasus/Common/String.h>\r
+\r
+#define min(a,b) ( a < b ? a : b )\r
+#define max(a,b) ( a > b ? a : b )\r
+\r
+unsigned long\r
+valueFactory::Stoi(const String &val) {\r
+ unsigned int end = val.size();\r
+ String s;\r
+ for (unsigned int i = 0; i < end; i++) {\r
+ switch(val[i]) {\r
+ case '1': s += "1"; break;\r
+ case '2': s += "2"; break;\r
+ case '3': s += "3"; break;\r
+ case '4': s += "4"; break;\r
+ case '5': s += "5"; break;\r
+ case '6': s += "6"; break;\r
+ case '7': s += "7"; break;\r
+ case '8': s += "8"; break;\r
+ case '9': s += "9"; break;\r
+ case '0': s += "0"; break;\r
+ }\r
+ }\r
+ return atol(_CString(s));\r
+}\r
+\r
+static double\r
+Stof(const String &val) {\r
+ unsigned int end = val.size();\r
+ String s;\r
+ for (unsigned int i = 0; i < end; i++) {\r
+ switch(val[i]) {\r
+ case '1': s += "1"; break;\r
+ case '2': s += "2"; break;\r
+ case '3': s += "3"; break;\r
+ case '4': s += "4"; break;\r
+ case '5': s += "5"; break;\r
+ case '6': s += "6"; break;\r
+ case '7': s += "7"; break;\r
+ case '8': s += "8"; break;\r
+ case '9': s += "9"; break;\r
+ case '0': s += "0"; break;\r
+ case '.': s += "."; break;\r
+ case 'E':\r
+ case 'e': s += "E"; break;\r
+ }\r
+ }\r
+ return atof(_CString(s));\r
+}\r
+\r
+static CIMDateTime &\r
+StoDT(const String &val, CIMDateTime &dt) {\r
+ unsigned int end = val.size();\r
+ String s;\r
+ for (unsigned int i = 0; i < end; i++) {\r
+ switch(val[i]) {\r
+ case '1': s += "1"; break;\r
+ case '2': s += "2"; break;\r
+ case '3': s += "3"; break;\r
+ case '4': s += "4"; break;\r
+ case '5': s += "5"; break;\r
+ case '6': s += "6"; break;\r
+ case '7': s += "7"; break;\r
+ case '8': s += "8"; break;\r
+ case '9': s += "9"; break;\r
+ case '0': s += "0"; break;\r
+ case '.': s += "."; break;\r
+ case '+': s += "+"; break;\r
+ case '-': s += "-"; break;\r
+ }\r
+ }\r
+ if (s != "") {\r
+ dt.set(_CString(s));\r
+ }\r
+ return dt;\r
+}\r
+\r
+//-------------------------------------------------------------------------\r
+// This is a parser for a comma-separated value String. It returns one\r
+// value per call. It handles quoted String and depends on the caller to\r
+// tell it where the end of the String is.\r
+//-------------------------------------------------------------------------\r
+static Uint32\r
+nextcsv(const String &csv, int sep, const Uint32 start,\r
+ const Uint32 end, String &value)\r
+{\r
+ enum parsestate {INDQUOTE, INSQUOTE, NOTINQUOTE};\r
+ value = "";\r
+ Uint32 maxend = min(csv.size(), end);\r
+ Uint32 idx = start;\r
+ parsestate state = NOTINQUOTE;\r
+ while (idx < maxend) {\r
+ char idxchar = csv[idx];\r
+ switch (state) {\r
+ case NOTINQUOTE:\r
+ switch (idxchar) {\r
+ case '\\':\r
+ state = INSQUOTE;\r
+ break;\r
+ case '"':\r
+ state = INDQUOTE;\r
+ break;\r
+ default:\r
+ if (idxchar == sep)\r
+ return idx + 1;\r
+ else\r
+ value += idxchar;\r
+ break;\r
+ }\r
+ break;\r
+ case INSQUOTE:\r
+ value += idxchar;\r
+ state = NOTINQUOTE;\r
+ break;\r
+ case INDQUOTE:\r
+ switch (idxchar) {\r
+ case '"':\r
+ state = NOTINQUOTE;\r
+ break;\r
+ default:\r
+ value += idxchar;\r
+ break;\r
+ }\r
+ }\r
+ idx++;\r
+ } // end while\r
+ return idx;\r
+}\r
+\r
+//-------------------------------------------------------------------\r
+// This builds a reference value from a String via the objname class\r
+//-------------------------------------------------------------------\r
+static\r
+CIMValue *\r
+build_reference_value(const String &rep)\r
+{\r
+ objectName oname(rep);\r
+ CIMReference *ref = cimmofParser::Instance()->newReference(oname);\r
+ return new CIMValue(*ref);\r
+}\r
+\r
+// ------------------------------------------------------------------\r
+// When the value to be build is of Array type, this routine\r
+// parses out the comma-separated values and builds the array\r
+// ----------------------------------------------------------------- \r
+static\r
+CIMValue *\r
+build_array_value(CIMType::Tag type, unsigned int arrayDimension,\r
+ const String &rep)\r
+{\r
+ String sval;\r
+ Uint32 start = 0;\r
+ Uint32 strsize = rep.size();\r
+ Uint32 end = strsize - 1;\r
+ \r
+ switch (type) {\r
+ case CIMType::BOOLEAN: {\r
+ Array<Boolean> *a = new Array<Boolean>;\r
+ while (strsize && (start = nextcsv(rep, ',', start, end, sval)) < end ) {\r
+ if (sval[0] == 'T')\r
+ a->append(1);\r
+ else\r
+ a->append(0);\r
+ }\r
+ return new CIMValue(*a);\r
+ }\r
+ case CIMType::UINT8: {\r
+ Array<Uint8> *a = new Array<Uint8>;\r
+ while (strsize && (start = nextcsv(rep, ',', start, end, sval)) < end ) {\r
+ a->append((Uint8)valueFactory::Stoi(sval));\r
+ }\r
+ return new CIMValue(*a);\r
+ }\r
+ case CIMType::SINT8: {\r
+ Array<Sint8> *a = new Array<Sint8>;\r
+ while (strsize && (start = nextcsv(rep, ',', start, end, sval)) < end ) {\r
+ a->append((Sint8)valueFactory::Stoi(sval));\r
+ }\r
+ return new CIMValue(*a);\r
+ }\r
+ case CIMType::UINT16: {\r
+ Array<Uint16> *a = new Array<Uint16>;\r
+ while (strsize && (start = nextcsv(rep, ',', start, end, sval)) < end ) {\r
+ a->append((Uint16)valueFactory::Stoi(sval));\r
+ }\r
+ return new CIMValue(*a);\r
+ }\r
+ case CIMType::SINT16: {\r
+ Array<Sint16> *a = new Array<Sint16>;\r
+ while (strsize && (start = nextcsv(rep, ',', start, end, sval)) < end ) {\r
+ a->append((Sint16)valueFactory::Stoi(sval));\r
+ }\r
+ return new CIMValue(*a);\r
+ }\r
+ case CIMType::UINT32: {\r
+ Array<Uint32> *a = new Array<Uint32>;\r
+ while (strsize && (start = nextcsv(rep, ',', start, end, sval)) < end ) {\r
+ a->append((Uint32)valueFactory::Stoi(sval));\r
+ }\r
+ return new CIMValue(*a);\r
+ }\r
+ case CIMType::SINT32: {\r
+ Array<Sint32> *a = new Array<Sint32>;\r
+ while (strsize && (start = nextcsv(rep, ',', start, end, sval)) < end ) {\r
+ a->append((Sint32)valueFactory::Stoi(sval));\r
+ }\r
+ return new CIMValue(*a);\r
+ }\r
+ case CIMType::UINT64: {\r
+ Array<Uint64> *a = new Array<Uint64>;\r
+ while (strsize && (start = nextcsv(rep, ',', start, end, sval)) < end ) {\r
+ a->append((Uint64)valueFactory::Stoi(sval));\r
+ }\r
+ return new CIMValue(*a);\r
+ }\r
+ case CIMType::SINT64: {\r
+ Array<Sint64> *a = new Array<Sint64>;\r
+ while (strsize && (start = nextcsv(rep, ',', start, end, sval)) < end ) {\r
+ a->append((Sint64)valueFactory::Stoi(sval));\r
+ }\r
+ return new CIMValue(*a);\r
+ }\r
+ case CIMType::REAL32: {\r
+ Array<Real32> *a = new Array<Real32>;\r
+ while (strsize && (start = nextcsv(rep, ',', start, end, sval)) < end ) {\r
+ a->append((Real32)Stof(sval));\r
+ }\r
+ return new CIMValue(*a);\r
+ }\r
+ case CIMType::REAL64: {\r
+ Array<Real64> *a = new Array<Real64>;\r
+ while (strsize && (start = nextcsv(rep, ',', start, end, sval)) < end ) {\r
+ a->append((Real64)Stof(sval));\r
+ }\r
+ return new CIMValue(*a);\r
+ }\r
+ case CIMType::CHAR16: {\r
+ Array<Char16> *a = new Array<Char16>;\r
+ while (strsize && (start = nextcsv(rep, ',', start, end, sval)) < end ) {\r
+ a->append(sval[0]);\r
+ }\r
+ return new CIMValue(*a);\r
+ }\r
+ case CIMType::STRING: {\r
+ Array<String> *a = new Array<String>;\r
+ while (strsize && (start = nextcsv(rep, ',', start, end, sval)) < end ) {\r
+ a->append(sval);\r
+ }\r
+ return new CIMValue(*a);\r
+ }\r
+ case CIMType::DATETIME: {\r
+ Array<CIMDateTime> *a = new Array<CIMDateTime>;\r
+ while (strsize && (start = nextcsv(rep, ',', start, end, sval)) < end ) {\r
+ CIMDateTime dt;\r
+ StoDT(sval, dt);\r
+ a->append(dt);\r
+ }\r
+ return new CIMValue(*a);\r
+ }\r
+ case CIMType::REFERENCE:\r
+ case CIMType::NONE:\r
+ break;\r
+ } // end switch\r
+ return 0;\r
+}\r
+\r
+\r
+CIMValue *\r
+valueFactory::createValue(CIMType::Tag type, int arrayDimension,\r
+ const String *repp)\r
+{\r
+ const String &rep = *repp;\r
+ CIMDateTime dt;\r
+ if (arrayDimension == -1) { // this is not an array type\r
+ switch(type) {\r
+ case CIMType::UINT8: return new CIMValue((Uint8) valueFactory::Stoi(rep));\r
+ case CIMType::SINT8: return new CIMValue((Sint8) valueFactory::Stoi(rep));\r
+ case CIMType::UINT16: return new CIMValue((Uint16) valueFactory::Stoi(rep));\r
+ case CIMType::SINT16: return new CIMValue((Sint16) valueFactory::Stoi(rep));\r
+ case CIMType::UINT32: return new CIMValue((Uint32) valueFactory::Stoi(rep));\r
+ case CIMType::SINT32: return new CIMValue((Sint32) valueFactory::Stoi(rep));\r
+ case CIMType::UINT64: return new CIMValue((Uint64) valueFactory::Stoi(rep));\r
+ case CIMType::SINT64: return new CIMValue((Sint64) valueFactory::Stoi(rep));\r
+ case CIMType::REAL32: return new CIMValue((Real32) Stof(rep));\r
+ case CIMType::REAL64: return new CIMValue((Real64) Stof(rep));\r
+ case CIMType::CHAR16: return new CIMValue((Char16) rep[0]);\r
+ case CIMType::BOOLEAN: return new CIMValue((Boolean) (rep[0] == 'T'?1:0));\r
+ case CIMType::STRING: return new CIMValue(rep);\r
+ case CIMType::DATETIME: return new CIMValue(StoDT(rep, dt));\r
+ case CIMType::REFERENCE: return build_reference_value(rep);\r
+ case CIMType::NONE: return(new CIMValue((Uint32) 0));\r
+ }\r
+ return(new CIMValue((Uint32) 0)); // default\r
+ } else { // an array type, either fixed or variable\r
+ return build_array_value(type, (unsigned int)arrayDimension, rep);\r
+ }\r
+}\r