(file) Return to CMPI_Value.cpp CVS log (file) (dir) Up to [Pegasus] / pegasus / src / Pegasus / ProviderManager2 / CMPI

Diff for /pegasus/src/Pegasus/ProviderManager2/CMPI/CMPI_Value.cpp between version 1.35.4.8 and 1.35.4.9

version 1.35.4.8, 2009/10/27 18:38:12 version 1.35.4.9, 2009/10/30 15:51:52
Line 833 
Line 833 
     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
  


Legend:
Removed from v.1.35.4.8  
changed lines
  Added in v.1.35.4.9

No CVS admin address has been configured
Powered by
ViewCVS 0.9.2