version 1.24, 2007/07/25 07:16:00
|
version 1.25, 2007/09/02 16:41:52
|
|
|
| |
#include "CMPI_Object.h" | #include "CMPI_Object.h" |
#include "CMPI_Ftabs.h" | #include "CMPI_Ftabs.h" |
|
#include <Pegasus/Common/Tracer.h> |
#include <string.h> | #include <string.h> |
| |
PEGASUS_USING_STD; | PEGASUS_USING_STD; |
|
|
| |
PEGASUS_STATIC CMPIStatus arrayRelease(CMPIArray* eArray) | PEGASUS_STATIC CMPIStatus arrayRelease(CMPIArray* eArray) |
{ | { |
|
PEG_METHOD_ENTER( |
|
TRC_CMPIPROVIDERINTERFACE, |
|
"CMPI_Array:arrayRelease()"); |
|
|
CMPIData *dta = (CMPIData*)eArray->hdl; | CMPIData *dta = (CMPIData*)eArray->hdl; |
if (dta) | if (dta) |
{ | { |
delete[] dta; | delete[] dta; |
reinterpret_cast<CMPI_Object*>(eArray)->unlinkAndDelete(); | reinterpret_cast<CMPI_Object*>(eArray)->unlinkAndDelete(); |
|
PEG_METHOD_EXIT(); |
CMReturn(CMPI_RC_OK); | CMReturn(CMPI_RC_OK); |
} | } |
|
PEG_METHOD_EXIT(); |
CMReturn(CMPI_RC_ERR_INVALID_HANDLE); | CMReturn(CMPI_RC_ERR_INVALID_HANDLE); |
} | } |
| |
|
|
const CMPIArray* eArray, | const CMPIArray* eArray, |
CMPIStatus* rc) | CMPIStatus* rc) |
{ | { |
|
PEG_METHOD_ENTER( |
|
TRC_CMPIPROVIDERINTERFACE, |
|
"CMPI_Array:arrayClone()"); |
CMPIData* dta=(CMPIData*)eArray->hdl; | CMPIData* dta=(CMPIData*)eArray->hdl; |
| |
if (!dta) | if (!dta) |
{ | { |
CMSetStatus(rc, CMPI_RC_ERR_INVALID_HANDLE); | CMSetStatus(rc, CMPI_RC_ERR_INVALID_HANDLE); |
|
PEG_METHOD_EXIT(); |
return NULL; | return NULL; |
} | } |
CMPIData* nDta = new CMPIData[dta->value.uint32+1]; | CMPIData* nDta = new CMPIData[dta->value.uint32+1]; |
|
|
{ | { |
*rc=rrc; | *rc=rrc; |
} | } |
|
PEG_METHOD_EXIT(); |
return NULL; | return NULL; |
} | } |
} | } |
} | } |
CMSetStatus(rc,CMPI_RC_OK); | CMSetStatus(rc,CMPI_RC_OK); |
|
PEG_METHOD_EXIT(); |
return nArray; | return nArray; |
} | } |
| |
|
|
const CMPIValue *val, | const CMPIValue *val, |
CMPIType type) | CMPIType type) |
{ | { |
|
PEG_METHOD_ENTER( |
|
TRC_CMPIPROVIDERINTERFACE, |
|
"CMPI_Array:arraySetElementAt()"); |
CMPIData *dta = (CMPIData*)eArray->hdl; | CMPIData *dta = (CMPIData*)eArray->hdl; |
if (!dta) | if (!dta) |
{ | { |
|
PEG_METHOD_EXIT(); |
CMReturn(CMPI_RC_ERR_INVALID_HANDLE); | CMReturn(CMPI_RC_ERR_INVALID_HANDLE); |
} | } |
if (!val) | if (!val) |
{ | { |
|
PEG_METHOD_EXIT(); |
CMReturn( CMPI_RC_ERR_INVALID_PARAMETER); | CMReturn( CMPI_RC_ERR_INVALID_PARAMETER); |
} | } |
if (pos<dta->value.uint32) | if (pos<dta->value.uint32) |
|
|
{ | { |
dta[pos+1].state=CMPI_goodValue; | dta[pos+1].state=CMPI_goodValue; |
dta[pos+1].value=*val; | dta[pos+1].value=*val; |
|
PEG_METHOD_EXIT(); |
CMReturn(CMPI_RC_OK); | CMReturn(CMPI_RC_OK); |
} | } |
else | else |
|
|
sprintf(msg,"arraySetElementAt(): CMPI_RC_ERR_TYPE_MISMATCH." | sprintf(msg,"arraySetElementAt(): CMPI_RC_ERR_TYPE_MISMATCH." |
" Is %p - should be %p", | " Is %p - should be %p", |
(void*)(long)type, (void*)(long)dta->type); | (void*)(long)type, (void*)(long)dta->type); |
|
PEG_METHOD_EXIT(); |
CMReturnWithString( | CMReturnWithString( |
CMPI_RC_ERR_TYPE_MISMATCH, | CMPI_RC_ERR_TYPE_MISMATCH, |
reinterpret_cast<CMPIString*>(new CMPI_Object(msg))); | reinterpret_cast<CMPIString*>(new CMPI_Object(msg))); |
} | } |
} | } |
|
PEG_METHOD_EXIT(); |
CMReturn(CMPI_RC_ERR_NO_SUCH_PROPERTY); | CMReturn(CMPI_RC_ERR_NO_SUCH_PROPERTY); |
} | } |
| |