class cmpi::CMPIInstance
* */
Public Instance Methods
get a named property value Property access in Ruby: data = instance # access by name (symbol) data = instance[“propname” # access by name (string) data = instance # access by index
See #get_property_at to retrieve property name and value
VALUE get(VALUE property) { CMPIStatus st = { CMPI_RC_OK, NULL }; CMPIData data; if (FIXNUM_P(property)) { data = CMGetPropertyAt($self, FIX2ULONG(property), NULL, &st); } else { const char *name; name = target_charptr(property); data = CMGetProperty($self, name, &st); } RAISE_IF(st); return data_value(&data); } #if defined (SWIGRUBY) VALUE #endif #if defined (SWIGPYTHON) PyObject* #endif #if defined (SWIGPERL) SV * #endif /** Gets a Property name and value defined by its index. * index: Position in the internal Data array. */ __type get_property_at(int index) { Target_Type tdata; Target_Type result; CMPIString *s = NULL; CMPIStatus st = { CMPI_RC_OK, NULL }; CMPIData data = CMGetPropertyAt($self, index, &s, &st); if (st.rc) { RAISE_IF(st); result = Target_Null; Target_INCREF(result); return result; } /* fprintf(stderr, "CMGetPropertyAt(%d) -> name %s, data type %x, state %x, value %p\n", index, CMGetCharPtr(s), data.type, data.state, data.value); fflush(stderr); */ TARGET_THREAD_BEGIN_BLOCK; tdata = data_data(&data); #if defined (SWIGPYTHON) result = PyTuple_New(2); PyTuple_SetItem(result, 0, tdata); PyTuple_SetItem(result, 1, PyString_FromString(CMGetCharPtr(s))); #else result = Target_SizedArray(2); Target_Append(result, tdata); Target_Append(result, Target_String(CMGetCharPtr(s))); #endif TARGET_THREAD_END_BLOCK; CMRelease(s); return result; } %alias property_count "size"; /* Gets the number of properties contained in this Instance. */ int property_count() { int result; CMPIStatus st = { CMPI_RC_OK, NULL }; result = CMGetPropertyCount($self, &st); RAISE_IF(st); return result; } /* Generates an ObjectPath out of the namespace, classname and * key propeties of this Instance. */ CMPIObjectPath *objectpath() { CMPIStatus st = { CMPI_RC_OK, NULL }; CMPIObjectPath* result; result = CMGetObjectPath($self, &st); RAISE_IF(st); /* fprintf(stderr, "<%p>.objectpath = %p\n", $self, result); */ return result; } %alias set_objectpath "objectpath="; /* Replaces the ObjectPath of the instance. * The passed objectpath shall contain the namespace, classname, * as well as all keys for the specified instance. */ void set_objectpath(const CMPIObjectPath *path) { RAISE_IF(CMSetObjectPath($self, path)); } /* Directs CMPI to ignore any setProperty operations for this * instance for any properties not in this list. * properties: If not NULL, the members of the array define one * or more Property names to be accepted by setProperty operations. */ void set_property_filter(const char **properties) { CMPIStatus st = { CMPI_RC_OK, NULL }; CMPIObjectPath* cop; CMPICount n; CMPICount i; char** props; /* Make copy of property list (we may modify it) */ props = string_array_clone((char**)properties); #if 0 string_array_print(props); #endif /* Pegasus requires that the keys be in the property list, else it * throws an exception. To work around, add key properties to property * list. */ if (!(cop = CMGetObjectPath($self, &st)) || st.rc) { st.rc = CMPI_RC_ERR_FAILED; RAISE_IF(st); string_array_free(props); return; } n = CMGetKeyCount(cop, &st); if (st.rc) { RAISE_IF(st); string_array_free(props); return; } for (i = 0; i < n; i++) { CMPIString* pn = NULL; const char* str; (void)CMGetKeyAt(cop, i, &pn, &st); /* get key name at i */ if (st.rc) { RAISE_IF(st); string_array_free(props); return; } str = CMGetCharsPtr(pn, &st); if (st.rc) { RAISE_IF(st); string_array_free(props); return; } if (string_array_find_ignore_case(props, str) == NULL) props = string_array_append(props, str); } #if 0 string_array_print(props); #endif RAISE_IF(CMSetPropertyFilter($self, (const char**)props, NULL)); string_array_free(props); } /* Add/replace a named Property value and origin * name: is a string containing the Property name. * value: points to a CMPIValue structure containing the value * to be assigned to the Property. * type: is a CMPIType structure defining the type of the value. * origin: specifies the instance origin. If NULL, then no origin is attached to the property */ void set_property_with_origin( const char *name, const CMPIValue *value, CMPIType type, const char* origin) { RAISE_IF(CMSetPropertyWithOrigin($self, name, value, type, origin)); } }
Gets a Property name and value defined by its index.
index: Position in the internal Data array.
__type get_property_at(int index) { Target_Type tdata; Target_Type result; CMPIString *s = NULL; CMPIStatus st = { CMPI_RC_OK, NULL }; CMPIData data = CMGetPropertyAt($self, index, &s, &st); if (st.rc) { RAISE_IF(st); result = Target_Null; Target_INCREF(result); return result; } /* fprintf(stderr, "CMGetPropertyAt(%d) -> name %s, data type %x, state %x, value %p\n", index, CMGetCharPtr(s), data.type, data.state, data.value); fflush(stderr); */ TARGET_THREAD_BEGIN_BLOCK; tdata = data_data(&data); #if defined (SWIGPYTHON) result = PyTuple_New(2); PyTuple_SetItem(result, 0, tdata); PyTuple_SetItem(result, 1, PyString_FromString(CMGetCharPtr(s))); #else result = Target_SizedArray(2); Target_Append(result, tdata); Target_Append(result, Target_String(CMGetCharPtr(s))); #endif TARGET_THREAD_END_BLOCK; CMRelease(s); return result; } %alias property_count "size"; /* Gets the number of properties contained in this Instance. */ int property_count() { int result; CMPIStatus st = { CMPI_RC_OK, NULL }; result = CMGetPropertyCount($self, &st); RAISE_IF(st); return result; } /* Generates an ObjectPath out of the namespace, classname and * key propeties of this Instance. */ CMPIObjectPath *objectpath() { CMPIStatus st = { CMPI_RC_OK, NULL }; CMPIObjectPath* result; result = CMGetObjectPath($self, &st); RAISE_IF(st); /* fprintf(stderr, "<%p>.objectpath = %p\n", $self, result); */ return result; } %alias set_objectpath "objectpath="; /* Replaces the ObjectPath of the instance. * The passed objectpath shall contain the namespace, classname, * as well as all keys for the specified instance. */ void set_objectpath(const CMPIObjectPath *path) { RAISE_IF(CMSetObjectPath($self, path)); } /* Directs CMPI to ignore any setProperty operations for this * instance for any properties not in this list. * properties: If not NULL, the members of the array define one * or more Property names to be accepted by setProperty operations. */ void set_property_filter(const char **properties) { CMPIStatus st = { CMPI_RC_OK, NULL }; CMPIObjectPath* cop; CMPICount n; CMPICount i; char** props; /* Make copy of property list (we may modify it) */ props = string_array_clone((char**)properties); #if 0 string_array_print(props); #endif /* Pegasus requires that the keys be in the property list, else it * throws an exception. To work around, add key properties to property * list. */ if (!(cop = CMGetObjectPath($self, &st)) || st.rc) { st.rc = CMPI_RC_ERR_FAILED; RAISE_IF(st); string_array_free(props); return; } n = CMGetKeyCount(cop, &st); if (st.rc) { RAISE_IF(st); string_array_free(props); return; } for (i = 0; i < n; i++) { CMPIString* pn = NULL; const char* str; (void)CMGetKeyAt(cop, i, &pn, &st); /* get key name at i */ if (st.rc) { RAISE_IF(st); string_array_free(props); return; } str = CMGetCharsPtr(pn, &st); if (st.rc) { RAISE_IF(st); string_array_free(props); return; } if (string_array_find_ignore_case(props, str) == NULL) props = string_array_append(props, str); } #if 0 string_array_print(props); #endif RAISE_IF(CMSetPropertyFilter($self, (const char**)props, NULL)); string_array_free(props); } /* Add/replace a named Property value and origin * name: is a string containing the Property name. * value: points to a CMPIValue structure containing the value * to be assigned to the Property. * type: is a CMPIType structure defining the type of the value. * origin: specifies the instance origin. If NULL, then no origin is attached to the property */ void set_property_with_origin( const char *name, const CMPIValue *value, CMPIType type, const char* origin) { RAISE_IF(CMSetPropertyWithOrigin($self, name, value, type, origin)); } }
Generates an ObjectPath out of the namespace, classname and
key propeties of this Instance.
CMPIObjectPath *objectpath() { CMPIStatus st = { CMPI_RC_OK, NULL }; CMPIObjectPath* result; result = CMGetObjectPath($self, &st); RAISE_IF(st); /* fprintf(stderr, "<%p>.objectpath = %p\n", $self, result); */ return result; } %alias set_objectpath "objectpath="; /* Replaces the ObjectPath of the instance. * The passed objectpath shall contain the namespace, classname, * as well as all keys for the specified instance. */ void set_objectpath(const CMPIObjectPath *path) { RAISE_IF(CMSetObjectPath($self, path)); } /* Directs CMPI to ignore any setProperty operations for this * instance for any properties not in this list. * properties: If not NULL, the members of the array define one * or more Property names to be accepted by setProperty operations. */ void set_property_filter(const char **properties) { CMPIStatus st = { CMPI_RC_OK, NULL }; CMPIObjectPath* cop; CMPICount n; CMPICount i; char** props; /* Make copy of property list (we may modify it) */ props = string_array_clone((char**)properties); #if 0 string_array_print(props); #endif /* Pegasus requires that the keys be in the property list, else it * throws an exception. To work around, add key properties to property * list. */ if (!(cop = CMGetObjectPath($self, &st)) || st.rc) { st.rc = CMPI_RC_ERR_FAILED; RAISE_IF(st); string_array_free(props); return; } n = CMGetKeyCount(cop, &st); if (st.rc) { RAISE_IF(st); string_array_free(props); return; } for (i = 0; i < n; i++) { CMPIString* pn = NULL; const char* str; (void)CMGetKeyAt(cop, i, &pn, &st); /* get key name at i */ if (st.rc) { RAISE_IF(st); string_array_free(props); return; } str = CMGetCharsPtr(pn, &st); if (st.rc) { RAISE_IF(st); string_array_free(props); return; } if (string_array_find_ignore_case(props, str) == NULL) props = string_array_append(props, str); } #if 0 string_array_print(props); #endif RAISE_IF(CMSetPropertyFilter($self, (const char**)props, NULL)); string_array_free(props); } /* Add/replace a named Property value and origin * name: is a string containing the Property name. * value: points to a CMPIValue structure containing the value * to be assigned to the Property. * type: is a CMPIType structure defining the type of the value. * origin: specifies the instance origin. If NULL, then no origin is attached to the property */ void set_property_with_origin( const char *name, const CMPIValue *value, CMPIType type, const char* origin) { RAISE_IF(CMSetPropertyWithOrigin($self, name, value, type, origin)); } }
Gets the number of properties contained in this Instance.
int property_count() { int result; CMPIStatus st = { CMPI_RC_OK, NULL }; result = CMGetPropertyCount($self, &st); RAISE_IF(st); return result; } /* Generates an ObjectPath out of the namespace, classname and * key propeties of this Instance. */ CMPIObjectPath *objectpath() { CMPIStatus st = { CMPI_RC_OK, NULL }; CMPIObjectPath* result; result = CMGetObjectPath($self, &st); RAISE_IF(st); /* fprintf(stderr, "<%p>.objectpath = %p\n", $self, result); */ return result; } %alias set_objectpath "objectpath="; /* Replaces the ObjectPath of the instance. * The passed objectpath shall contain the namespace, classname, * as well as all keys for the specified instance. */ void set_objectpath(const CMPIObjectPath *path) { RAISE_IF(CMSetObjectPath($self, path)); } /* Directs CMPI to ignore any setProperty operations for this * instance for any properties not in this list. * properties: If not NULL, the members of the array define one * or more Property names to be accepted by setProperty operations. */ void set_property_filter(const char **properties) { CMPIStatus st = { CMPI_RC_OK, NULL }; CMPIObjectPath* cop; CMPICount n; CMPICount i; char** props; /* Make copy of property list (we may modify it) */ props = string_array_clone((char**)properties); #if 0 string_array_print(props); #endif /* Pegasus requires that the keys be in the property list, else it * throws an exception. To work around, add key properties to property * list. */ if (!(cop = CMGetObjectPath($self, &st)) || st.rc) { st.rc = CMPI_RC_ERR_FAILED; RAISE_IF(st); string_array_free(props); return; } n = CMGetKeyCount(cop, &st); if (st.rc) { RAISE_IF(st); string_array_free(props); return; } for (i = 0; i < n; i++) { CMPIString* pn = NULL; const char* str; (void)CMGetKeyAt(cop, i, &pn, &st); /* get key name at i */ if (st.rc) { RAISE_IF(st); string_array_free(props); return; } str = CMGetCharsPtr(pn, &st); if (st.rc) { RAISE_IF(st); string_array_free(props); return; } if (string_array_find_ignore_case(props, str) == NULL) props = string_array_append(props, str); } #if 0 string_array_print(props); #endif RAISE_IF(CMSetPropertyFilter($self, (const char**)props, NULL)); string_array_free(props); } /* Add/replace a named Property value and origin * name: is a string containing the Property name. * value: points to a CMPIValue structure containing the value * to be assigned to the Property. * type: is a CMPIType structure defining the type of the value. * origin: specifies the instance origin. If NULL, then no origin is attached to the property */ void set_property_with_origin( const char *name, const CMPIValue *value, CMPIType type, const char* origin) { RAISE_IF(CMSetPropertyWithOrigin($self, name, value, type, origin)); } }
Property setting in Ruby
set property of Instance by name and type
instance = data # set by name (symbol) instance[:propname, data] = CMPI::uint16 # set by name (symbol) instance = data # set by name (string)
CMPIStatus set(VALUE property, VALUE data, VALUE expected_type = Qnil) { const char *name; CMPIValue value; CMPIType actual_type; CMPIType type; CMPIStatus status; if (NIL_P(expected_type)) { type = CMPI_null; } else if (FIXNUM_P(expected_type)) { type = FIX2LONG(expected_type); } else { SWIG_exception(SWIG_ValueError, "bad expected_type"); } name = target_charptr(property); if (NIL_P(data)) { actual_type = type; /* prevent type error */ value.chars = NULL; } else { actual_type = target_to_value(data, &value, type); } /* fprintf(stderr, "CMPIInstance.%s <expected %04x, actual %04x>\n",name, type, actual_type); */ status = CMSetProperty($self, name, &value, actual_type); RAISE_IF(status); return status; } /* Adds/replaces a named Property. * name: Entry name. * value: Address of value structure. * type: Value type. */ void set_property( const char *name, const CMPIValue * value, const CMPIType type) { RAISE_IF(CMSetProperty($self, name, value, type)); } %alias get "[]"; /* * get a named property value * Property access in Ruby: * data = instance[:propname] # access by name (symbol) * data = instance["propname" # access by name (string) * data = instance[1] # access by index * * See get_property_at to retrieve property name and value */ VALUE get(VALUE property) { CMPIStatus st = { CMPI_RC_OK, NULL }; CMPIData data; if (FIXNUM_P(property)) { data = CMGetPropertyAt($self, FIX2ULONG(property), NULL, &st); } else { const char *name; name = target_charptr(property); data = CMGetProperty($self, name, &st); } RAISE_IF(st); return data_value(&data); } #if defined (SWIGRUBY) VALUE #endif #if defined (SWIGPYTHON) PyObject* #endif #if defined (SWIGPERL) SV * #endif /** Gets a Property name and value defined by its index. * index: Position in the internal Data array. */ __type get_property_at(int index) { Target_Type tdata; Target_Type result; CMPIString *s = NULL; CMPIStatus st = { CMPI_RC_OK, NULL }; CMPIData data = CMGetPropertyAt($self, index, &s, &st); if (st.rc) { RAISE_IF(st); result = Target_Null; Target_INCREF(result); return result; } /* fprintf(stderr, "CMGetPropertyAt(%d) -> name %s, data type %x, state %x, value %p\n", index, CMGetCharPtr(s), data.type, data.state, data.value); fflush(stderr); */ TARGET_THREAD_BEGIN_BLOCK; tdata = data_data(&data); #if defined (SWIGPYTHON) result = PyTuple_New(2); PyTuple_SetItem(result, 0, tdata); PyTuple_SetItem(result, 1, PyString_FromString(CMGetCharPtr(s))); #else result = Target_SizedArray(2); Target_Append(result, tdata); Target_Append(result, Target_String(CMGetCharPtr(s))); #endif TARGET_THREAD_END_BLOCK; CMRelease(s); return result; } %alias property_count "size"; /* Gets the number of properties contained in this Instance. */ int property_count() { int result; CMPIStatus st = { CMPI_RC_OK, NULL }; result = CMGetPropertyCount($self, &st); RAISE_IF(st); return result; } /* Generates an ObjectPath out of the namespace, classname and * key propeties of this Instance. */ CMPIObjectPath *objectpath() { CMPIStatus st = { CMPI_RC_OK, NULL }; CMPIObjectPath* result; result = CMGetObjectPath($self, &st); RAISE_IF(st); /* fprintf(stderr, "<%p>.objectpath = %p\n", $self, result); */ return result; } %alias set_objectpath "objectpath="; /* Replaces the ObjectPath of the instance. * The passed objectpath shall contain the namespace, classname, * as well as all keys for the specified instance. */ void set_objectpath(const CMPIObjectPath *path) { RAISE_IF(CMSetObjectPath($self, path)); } /* Directs CMPI to ignore any setProperty operations for this * instance for any properties not in this list. * properties: If not NULL, the members of the array define one * or more Property names to be accepted by setProperty operations. */ void set_property_filter(const char **properties) { CMPIStatus st = { CMPI_RC_OK, NULL }; CMPIObjectPath* cop; CMPICount n; CMPICount i; char** props; /* Make copy of property list (we may modify it) */ props = string_array_clone((char**)properties); #if 0 string_array_print(props); #endif /* Pegasus requires that the keys be in the property list, else it * throws an exception. To work around, add key properties to property * list. */ if (!(cop = CMGetObjectPath($self, &st)) || st.rc) { st.rc = CMPI_RC_ERR_FAILED; RAISE_IF(st); string_array_free(props); return; } n = CMGetKeyCount(cop, &st); if (st.rc) { RAISE_IF(st); string_array_free(props); return; } for (i = 0; i < n; i++) { CMPIString* pn = NULL; const char* str; (void)CMGetKeyAt(cop, i, &pn, &st); /* get key name at i */ if (st.rc) { RAISE_IF(st); string_array_free(props); return; } str = CMGetCharsPtr(pn, &st); if (st.rc) { RAISE_IF(st); string_array_free(props); return; } if (string_array_find_ignore_case(props, str) == NULL) props = string_array_append(props, str); } #if 0 string_array_print(props); #endif RAISE_IF(CMSetPropertyFilter($self, (const char**)props, NULL)); string_array_free(props); } /* Add/replace a named Property value and origin * name: is a string containing the Property name. * value: points to a CMPIValue structure containing the value * to be assigned to the Property. * type: is a CMPIType structure defining the type of the value. * origin: specifies the instance origin. If NULL, then no origin is attached to the property */ void set_property_with_origin( const char *name, const CMPIValue *value, CMPIType type, const char* origin) { RAISE_IF(CMSetPropertyWithOrigin($self, name, value, type, origin)); } }
Replaces the ObjectPath of the instance.
The passed objectpath shall contain the namespace, classname, as well as all keys for the specified instance.
void set_objectpath(const CMPIObjectPath *path) { RAISE_IF(CMSetObjectPath($self, path)); } /* Directs CMPI to ignore any setProperty operations for this * instance for any properties not in this list. * properties: If not NULL, the members of the array define one * or more Property names to be accepted by setProperty operations. */ void set_property_filter(const char **properties) { CMPIStatus st = { CMPI_RC_OK, NULL }; CMPIObjectPath* cop; CMPICount n; CMPICount i; char** props; /* Make copy of property list (we may modify it) */ props = string_array_clone((char**)properties); #if 0 string_array_print(props); #endif /* Pegasus requires that the keys be in the property list, else it * throws an exception. To work around, add key properties to property * list. */ if (!(cop = CMGetObjectPath($self, &st)) || st.rc) { st.rc = CMPI_RC_ERR_FAILED; RAISE_IF(st); string_array_free(props); return; } n = CMGetKeyCount(cop, &st); if (st.rc) { RAISE_IF(st); string_array_free(props); return; } for (i = 0; i < n; i++) { CMPIString* pn = NULL; const char* str; (void)CMGetKeyAt(cop, i, &pn, &st); /* get key name at i */ if (st.rc) { RAISE_IF(st); string_array_free(props); return; } str = CMGetCharsPtr(pn, &st); if (st.rc) { RAISE_IF(st); string_array_free(props); return; } if (string_array_find_ignore_case(props, str) == NULL) props = string_array_append(props, str); } #if 0 string_array_print(props); #endif RAISE_IF(CMSetPropertyFilter($self, (const char**)props, NULL)); string_array_free(props); } /* Add/replace a named Property value and origin * name: is a string containing the Property name. * value: points to a CMPIValue structure containing the value * to be assigned to the Property. * type: is a CMPIType structure defining the type of the value. * origin: specifies the instance origin. If NULL, then no origin is attached to the property */ void set_property_with_origin( const char *name, const CMPIValue *value, CMPIType type, const char* origin) { RAISE_IF(CMSetPropertyWithOrigin($self, name, value, type, origin)); } }
Adds/replaces a named Property.
name: Entry name. value: Address of value structure. type: Value type.
void set_property( const char *name, const CMPIValue * value, const CMPIType type) { RAISE_IF(CMSetProperty($self, name, value, type)); } %alias get "[]"; /* * get a named property value * Property access in Ruby: * data = instance[:propname] # access by name (symbol) * data = instance["propname" # access by name (string) * data = instance[1] # access by index * * See get_property_at to retrieve property name and value */ VALUE get(VALUE property) { CMPIStatus st = { CMPI_RC_OK, NULL }; CMPIData data; if (FIXNUM_P(property)) { data = CMGetPropertyAt($self, FIX2ULONG(property), NULL, &st); } else { const char *name; name = target_charptr(property); data = CMGetProperty($self, name, &st); } RAISE_IF(st); return data_value(&data); } #if defined (SWIGRUBY) VALUE #endif #if defined (SWIGPYTHON) PyObject* #endif #if defined (SWIGPERL) SV * #endif /** Gets a Property name and value defined by its index. * index: Position in the internal Data array. */ __type get_property_at(int index) { Target_Type tdata; Target_Type result; CMPIString *s = NULL; CMPIStatus st = { CMPI_RC_OK, NULL }; CMPIData data = CMGetPropertyAt($self, index, &s, &st); if (st.rc) { RAISE_IF(st); result = Target_Null; Target_INCREF(result); return result; } /* fprintf(stderr, "CMGetPropertyAt(%d) -> name %s, data type %x, state %x, value %p\n", index, CMGetCharPtr(s), data.type, data.state, data.value); fflush(stderr); */ TARGET_THREAD_BEGIN_BLOCK; tdata = data_data(&data); #if defined (SWIGPYTHON) result = PyTuple_New(2); PyTuple_SetItem(result, 0, tdata); PyTuple_SetItem(result, 1, PyString_FromString(CMGetCharPtr(s))); #else result = Target_SizedArray(2); Target_Append(result, tdata); Target_Append(result, Target_String(CMGetCharPtr(s))); #endif TARGET_THREAD_END_BLOCK; CMRelease(s); return result; } %alias property_count "size"; /* Gets the number of properties contained in this Instance. */ int property_count() { int result; CMPIStatus st = { CMPI_RC_OK, NULL }; result = CMGetPropertyCount($self, &st); RAISE_IF(st); return result; } /* Generates an ObjectPath out of the namespace, classname and * key propeties of this Instance. */ CMPIObjectPath *objectpath() { CMPIStatus st = { CMPI_RC_OK, NULL }; CMPIObjectPath* result; result = CMGetObjectPath($self, &st); RAISE_IF(st); /* fprintf(stderr, "<%p>.objectpath = %p\n", $self, result); */ return result; } %alias set_objectpath "objectpath="; /* Replaces the ObjectPath of the instance. * The passed objectpath shall contain the namespace, classname, * as well as all keys for the specified instance. */ void set_objectpath(const CMPIObjectPath *path) { RAISE_IF(CMSetObjectPath($self, path)); } /* Directs CMPI to ignore any setProperty operations for this * instance for any properties not in this list. * properties: If not NULL, the members of the array define one * or more Property names to be accepted by setProperty operations. */ void set_property_filter(const char **properties) { CMPIStatus st = { CMPI_RC_OK, NULL }; CMPIObjectPath* cop; CMPICount n; CMPICount i; char** props; /* Make copy of property list (we may modify it) */ props = string_array_clone((char**)properties); #if 0 string_array_print(props); #endif /* Pegasus requires that the keys be in the property list, else it * throws an exception. To work around, add key properties to property * list. */ if (!(cop = CMGetObjectPath($self, &st)) || st.rc) { st.rc = CMPI_RC_ERR_FAILED; RAISE_IF(st); string_array_free(props); return; } n = CMGetKeyCount(cop, &st); if (st.rc) { RAISE_IF(st); string_array_free(props); return; } for (i = 0; i < n; i++) { CMPIString* pn = NULL; const char* str; (void)CMGetKeyAt(cop, i, &pn, &st); /* get key name at i */ if (st.rc) { RAISE_IF(st); string_array_free(props); return; } str = CMGetCharsPtr(pn, &st); if (st.rc) { RAISE_IF(st); string_array_free(props); return; } if (string_array_find_ignore_case(props, str) == NULL) props = string_array_append(props, str); } #if 0 string_array_print(props); #endif RAISE_IF(CMSetPropertyFilter($self, (const char**)props, NULL)); string_array_free(props); } /* Add/replace a named Property value and origin * name: is a string containing the Property name. * value: points to a CMPIValue structure containing the value * to be assigned to the Property. * type: is a CMPIType structure defining the type of the value. * origin: specifies the instance origin. If NULL, then no origin is attached to the property */ void set_property_with_origin( const char *name, const CMPIValue *value, CMPIType type, const char* origin) { RAISE_IF(CMSetPropertyWithOrigin($self, name, value, type, origin)); } }
Directs CMPI to ignore any setProperty operations for this
instance for any properties not in this list. properties: If not NULL, the members of the array define one or more Property names to be accepted by setProperty operations.
void set_property_filter(const char **properties) { CMPIStatus st = { CMPI_RC_OK, NULL }; CMPIObjectPath* cop; CMPICount n; CMPICount i; char** props; /* Make copy of property list (we may modify it) */ props = string_array_clone((char**)properties); #if 0 string_array_print(props); #endif /* Pegasus requires that the keys be in the property list, else it * throws an exception. To work around, add key properties to property * list. */ if (!(cop = CMGetObjectPath($self, &st)) || st.rc) { st.rc = CMPI_RC_ERR_FAILED; RAISE_IF(st); string_array_free(props); return; } n = CMGetKeyCount(cop, &st); if (st.rc) { RAISE_IF(st); string_array_free(props); return; } for (i = 0; i < n; i++) { CMPIString* pn = NULL; const char* str; (void)CMGetKeyAt(cop, i, &pn, &st); /* get key name at i */ if (st.rc) { RAISE_IF(st); string_array_free(props); return; } str = CMGetCharsPtr(pn, &st); if (st.rc) { RAISE_IF(st); string_array_free(props); return; } if (string_array_find_ignore_case(props, str) == NULL) props = string_array_append(props, str); } #if 0 string_array_print(props); #endif RAISE_IF(CMSetPropertyFilter($self, (const char**)props, NULL)); string_array_free(props); } /* Add/replace a named Property value and origin * name: is a string containing the Property name. * value: points to a CMPIValue structure containing the value * to be assigned to the Property. * type: is a CMPIType structure defining the type of the value. * origin: specifies the instance origin. If NULL, then no origin is attached to the property */ void set_property_with_origin( const char *name, const CMPIValue *value, CMPIType type, const char* origin) { RAISE_IF(CMSetPropertyWithOrigin($self, name, value, type, origin)); } }
Add/replace a named Property value and origin
name: is a string containing the Property name. value: points to a CMPIValue structure containing the value to be assigned to the Property. type: is a CMPIType structure defining the type of the value. origin: specifies the instance origin. If NULL, then no origin is attached to the property
void set_property_with_origin( const char *name, const CMPIValue *value, CMPIType type, const char* origin) { RAISE_IF(CMSetPropertyWithOrigin($self, name, value, type, origin)); } }