version 1.35.4.8, 2009/10/27 18:38:12
|
version 1.35.4.9, 2009/10/30 15:51:52
|
|
|
return(CMPIType)t; | return(CMPIType)t; |
} | } |
| |
//Function to convert a key string into CMPIData |
|
// Note: For a key of type reference, the key parameter is expected |
|
// to point to an SCMOInstance rather than just a string!!! |
|
CMPIrc scmoKey2CMPIData(const char* key, CIMKeyBinding::Type t, CMPIData *data) |
|
{ |
|
data->state=CMPI_keyValue; |
|
switch( t ) |
|
{ |
|
case CIMKeyBinding::NUMERIC: |
|
{ |
|
data->value.sint64 = 0; |
|
if( *(key)=='-' ) |
|
{ |
|
sscanf(key, |
|
"%" PEGASUS_64BIT_CONVERSION_WIDTH "d", |
|
&data->value.sint64); |
|
data->type=CMPI_sint64; |
|
} |
|
else |
|
{ |
|
sscanf(key, |
|
"%" PEGASUS_64BIT_CONVERSION_WIDTH "u", |
|
&data->value.uint64); |
|
data->type=CMPI_uint64; |
|
} |
|
} |
|
break; |
|
|
|
case CIMKeyBinding::STRING: |
|
data->value.string=string2CMPIString(key); |
|
data->type=CMPI_string; |
|
break; |
|
|
|
case CIMKeyBinding::BOOLEAN: |
|
data->value.boolean= |
|
System::strncasecmp(key,strlen(key),STRLIT_ARGS("true")); |
|
data->type=CMPI_boolean; |
|
break; |
|
|
|
case CIMKeyBinding::REFERENCE: |
|
{ |
|
// TBD: Verify that the SCMOInstance.getKeyBinding really |
|
// returns references a pointer to SCMOInstance !!! |
|
SCMOInstance* orgRef = (SCMOInstance*)key; |
|
SCMOInstance* newRef = new SCMOInstance(orgRef->clone(true)); |
|
data->value.ref= |
|
reinterpret_cast<CMPIObjectPath*> |
|
(new CMPI_Object(newRef,CMPI_Object::ObjectTypeObjectPath)); |
|
data->type=CMPI_ref; |
|
} |
|
break; |
|
|
|
default: |
|
return CMPI_RC_ERR_NOT_SUPPORTED; |
|
} |
|
return CMPI_RC_OK; |
|
} |
|
|
|
|
|
//Function to convert CIMKeyBindings to CMPIData |
|
CMPIrc key2CMPIData(const String& v, CIMKeyBinding::Type t, CMPIData *data) |
|
{ |
|
data->state=CMPI_keyValue; |
|
switch( t ) |
|
{ |
|
case CIMKeyBinding::NUMERIC: |
|
{ |
|
CString vp=v.getCString(); |
|
|
|
data->value.sint64 = 0; |
|
if( *((const char*)vp)=='-' ) |
|
{ |
|
sscanf( |
|
(const char*)vp, |
|
"%" PEGASUS_64BIT_CONVERSION_WIDTH "d", |
|
&data->value.sint64); |
|
data->type=CMPI_sint64; |
|
} |
|
else |
|
{ |
|
sscanf( |
|
(const char*)vp, |
|
"%" PEGASUS_64BIT_CONVERSION_WIDTH "u", |
|
&data->value.uint64); |
|
data->type=CMPI_uint64; |
|
} |
|
} |
|
break; |
|
|
|
case CIMKeyBinding::STRING: |
|
data->value.string=string2CMPIString(v); |
|
data->type=CMPI_string; |
|
break; |
|
|
|
case CIMKeyBinding::BOOLEAN: |
|
data->value.boolean=(String::equalNoCase(v,"true")); |
|
data->type=CMPI_boolean; |
|
break; |
|
|
|
case CIMKeyBinding::REFERENCE: |
|
data->value.ref=reinterpret_cast<CMPIObjectPath*>( |
|
new CMPI_Object(new CIMObjectPath(v))); |
|
data->type=CMPI_ref; |
|
break; |
|
|
|
default: |
|
return CMPI_RC_ERR_NOT_SUPPORTED; |
|
} |
|
return CMPI_RC_OK; |
|
} |
|
|
|
PEGASUS_NAMESPACE_END | PEGASUS_NAMESPACE_END |
| |