sfcc 0.1.2 → 0.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/CHANGELOG.rdoc +24 -0
- data/README.rdoc +16 -0
- data/ext/sfcc/cim_class.c +147 -58
- data/ext/sfcc/cim_class.h +1 -1
- data/ext/sfcc/cim_client.c +187 -198
- data/ext/sfcc/cim_client.h +1 -1
- data/ext/sfcc/cim_enumeration.c +109 -21
- data/ext/sfcc/cim_enumeration.h +1 -1
- data/ext/sfcc/cim_instance.c +70 -77
- data/ext/sfcc/cim_instance.h +1 -1
- data/ext/sfcc/cim_object_path.c +141 -122
- data/ext/sfcc/cim_object_path.h +1 -1
- data/ext/sfcc/cim_string.c +9 -13
- data/ext/sfcc/cim_string.h +1 -1
- data/ext/sfcc/extconf.rb +8 -4
- data/ext/sfcc/sfcc.c +163 -105
- data/ext/sfcc/sfcc.h +15 -40
- data/lib/sfcc.rb +75 -12
- data/lib/sfcc/version.rb +1 -1
- metadata +68 -95
    
        data/ext/sfcc/cim_client.h
    CHANGED
    
    
    
        data/ext/sfcc/cim_enumeration.c
    CHANGED
    
    | @@ -1,12 +1,12 @@ | |
| 1 1 |  | 
| 2 | 
            -
            #include "sfcc.h"
         | 
| 3 2 | 
             
            #include "cim_enumeration.h"
         | 
| 4 3 | 
             
            #include "cim_object_path.h"
         | 
| 5 4 |  | 
| 6 5 | 
             
            static void
         | 
| 7 | 
            -
            dealloc( | 
| 6 | 
            +
            dealloc(CIMCEnumeration *enm)
         | 
| 8 7 | 
             
            {
         | 
| 9 | 
            -
               | 
| 8 | 
            +
            /*  fprintf(stderr, "Sfcc_dealloc_cim_enumeration %p\n", enm); */
         | 
| 9 | 
            +
              enm->ft->release(enm);
         | 
| 10 10 | 
             
            }
         | 
| 11 11 |  | 
| 12 12 | 
             
            /**
         | 
| @@ -20,34 +20,119 @@ dealloc(CMPIEnumeration *enm) | |
| 20 20 | 
             
             */
         | 
| 21 21 | 
             
            static VALUE each(VALUE self)
         | 
| 22 22 | 
             
            {
         | 
| 23 | 
            -
               | 
| 24 | 
            -
               | 
| 25 | 
            -
               | 
| 26 | 
            -
               | 
| 23 | 
            +
              CIMCStatus status;
         | 
| 24 | 
            +
              CIMCEnumeration *ptr;
         | 
| 25 | 
            +
              CIMCArray *ary;
         | 
| 26 | 
            +
              CIMCData data;
         | 
| 27 | 
            +
              Data_Get_Struct(self, CIMCEnumeration, ptr);
         | 
| 27 28 |  | 
| 28 | 
            -
               | 
| 29 | 
            -
             | 
| 29 | 
            +
              /* since getNext() changes the Enumeration, we cannot iterate
         | 
| 30 | 
            +
                 use Array representation instead */
         | 
| 31 | 
            +
              ary = ptr->ft->toArray(ptr, &status);
         | 
| 30 32 | 
             
              if (!status.rc) {
         | 
| 31 | 
            -
                 | 
| 32 | 
            -
             | 
| 33 | 
            -
             | 
| 34 | 
            -
                   | 
| 35 | 
            -
             | 
| 36 | 
            -
                   | 
| 37 | 
            -
             | 
| 38 | 
            -
                  rb_yield(cimclass);
         | 
| 33 | 
            +
                CIMCCount count = ary->ft->getSize(ary, NULL);
         | 
| 34 | 
            +
                CIMCCount idx;
         | 
| 35 | 
            +
                for (idx = 0; idx < count; ++idx) {
         | 
| 36 | 
            +
                  VALUE value;
         | 
| 37 | 
            +
                  data = ary->ft->getElementAt(ary, idx, NULL);
         | 
| 38 | 
            +
                  value = sfcc_cimdata_to_value(data);
         | 
| 39 | 
            +
                  rb_yield(value);
         | 
| 39 40 | 
             
                }
         | 
| 41 | 
            +
                return Qnil;
         | 
| 40 42 | 
             
              }
         | 
| 41 43 |  | 
| 42 | 
            -
              tmp->ft->release(tmp);
         | 
| 43 44 | 
             
              sfcc_rb_raise_if_error(status, "Can't iterate enumeration");
         | 
| 44 45 | 
             
              return Qnil;
         | 
| 45 46 | 
             
            }
         | 
| 46 47 |  | 
| 48 | 
            +
             | 
| 49 | 
            +
            /**
         | 
| 50 | 
            +
             * call-seq:
         | 
| 51 | 
            +
             *   enumeration.to_a -> Array
         | 
| 52 | 
            +
             *
         | 
| 53 | 
            +
             * returns an Array representation of the enumeration
         | 
| 54 | 
            +
             *
         | 
| 55 | 
            +
             */
         | 
| 56 | 
            +
            static VALUE to_a(VALUE self)
         | 
| 57 | 
            +
            {
         | 
| 58 | 
            +
              CIMCStatus status;
         | 
| 59 | 
            +
              CIMCEnumeration *ptr;
         | 
| 60 | 
            +
              CIMCArray *ary;
         | 
| 61 | 
            +
              Data_Get_Struct(self, CIMCEnumeration, ptr);
         | 
| 62 | 
            +
             | 
| 63 | 
            +
              ary = ptr->ft->toArray(ptr, &status);
         | 
| 64 | 
            +
              if (!status.rc) {
         | 
| 65 | 
            +
                CIMCData data;
         | 
| 66 | 
            +
                CIMCCount count = ary->ft->getSize(ary, NULL);
         | 
| 67 | 
            +
                VALUE array = rb_ary_new2(count);
         | 
| 68 | 
            +
                CIMCCount idx;
         | 
| 69 | 
            +
                for (idx = 0; idx < count; ++idx) {
         | 
| 70 | 
            +
                  VALUE value;
         | 
| 71 | 
            +
                  data = ary->ft->getElementAt(ary, idx, NULL);
         | 
| 72 | 
            +
                  value = sfcc_cimdata_to_value(data);
         | 
| 73 | 
            +
                  rb_ary_store(array, idx, value);
         | 
| 74 | 
            +
                }
         | 
| 75 | 
            +
                return array;
         | 
| 76 | 
            +
              }
         | 
| 77 | 
            +
             | 
| 78 | 
            +
              sfcc_rb_raise_if_error(status, "Can't convert enumeration to Array");
         | 
| 79 | 
            +
              return Qnil;
         | 
| 80 | 
            +
            }
         | 
| 81 | 
            +
             | 
| 82 | 
            +
             | 
| 83 | 
            +
            /**
         | 
| 84 | 
            +
             * call-seq:
         | 
| 85 | 
            +
             *   enumeration.size -> int
         | 
| 86 | 
            +
             *
         | 
| 87 | 
            +
             * returns the size (number of elements) of the enumeration
         | 
| 88 | 
            +
             *
         | 
| 89 | 
            +
             */
         | 
| 90 | 
            +
            static VALUE size(VALUE self)
         | 
| 91 | 
            +
            {
         | 
| 92 | 
            +
              CIMCStatus status;
         | 
| 93 | 
            +
              CIMCEnumeration *ptr;
         | 
| 94 | 
            +
              CIMCArray *ary;
         | 
| 95 | 
            +
              Data_Get_Struct(self, CIMCEnumeration, ptr);
         | 
| 96 | 
            +
             | 
| 97 | 
            +
              ary = ptr->ft->toArray(ptr, &status);
         | 
| 98 | 
            +
              if (!status.rc) {
         | 
| 99 | 
            +
                CIMCCount count = ary->ft->getSize(ary, NULL);
         | 
| 100 | 
            +
                return INT2NUM(count);
         | 
| 101 | 
            +
              }
         | 
| 102 | 
            +
             | 
| 103 | 
            +
              sfcc_rb_raise_if_error(status, "Can't get enumeration size");
         | 
| 104 | 
            +
              return Qnil;
         | 
| 105 | 
            +
            }
         | 
| 106 | 
            +
             | 
| 107 | 
            +
             | 
| 108 | 
            +
            /**
         | 
| 109 | 
            +
             * call-seq:
         | 
| 110 | 
            +
             *   enumeration.simple_type -> int
         | 
| 111 | 
            +
             *
         | 
| 112 | 
            +
             * returns the element type of the enumeration elements
         | 
| 113 | 
            +
             *
         | 
| 114 | 
            +
             */
         | 
| 115 | 
            +
            static VALUE simple_type(VALUE self)
         | 
| 116 | 
            +
            {
         | 
| 117 | 
            +
              CIMCStatus status;
         | 
| 118 | 
            +
              CIMCEnumeration *ptr;
         | 
| 119 | 
            +
              CIMCArray *ary;
         | 
| 120 | 
            +
              Data_Get_Struct(self, CIMCEnumeration, ptr);
         | 
| 121 | 
            +
             | 
| 122 | 
            +
              ary = ptr->ft->toArray(ptr, &status);
         | 
| 123 | 
            +
              if (!status.rc) {
         | 
| 124 | 
            +
                CIMCType type = ary->ft->getSimpleType(ary, NULL);
         | 
| 125 | 
            +
                return INT2NUM(type);
         | 
| 126 | 
            +
              }
         | 
| 127 | 
            +
              
         | 
| 128 | 
            +
              sfcc_rb_raise_if_error(status, "Can't get enumeration type");
         | 
| 129 | 
            +
              return Qnil;
         | 
| 130 | 
            +
            }
         | 
| 131 | 
            +
             | 
| 132 | 
            +
             | 
| 47 133 | 
             
            VALUE
         | 
| 48 | 
            -
            Sfcc_wrap_cim_enumeration( | 
| 134 | 
            +
            Sfcc_wrap_cim_enumeration(CIMCEnumeration *enm)
         | 
| 49 135 | 
             
            {
         | 
| 50 | 
            -
              SFCC_INC_REFCOUNT(enm);
         | 
| 51 136 | 
             
              return Data_Wrap_Struct(cSfccCimEnumeration, NULL, dealloc, enm);
         | 
| 52 137 | 
             
            }
         | 
| 53 138 |  | 
| @@ -60,6 +145,9 @@ void init_cim_enumeration() | |
| 60 145 | 
             
              VALUE klass = rb_define_class_under(cimc, "Enumeration", rb_cObject);
         | 
| 61 146 | 
             
              cSfccCimEnumeration = klass;
         | 
| 62 147 |  | 
| 148 | 
            +
              rb_include_module(klass, rb_const_get(rb_cObject, rb_intern("Enumerable")));
         | 
| 63 149 | 
             
              rb_define_method(klass, "each", each, 0);
         | 
| 64 | 
            -
               | 
| 150 | 
            +
              rb_define_method(klass, "to_a", to_a, 0);
         | 
| 151 | 
            +
              rb_define_method(klass, "size", size, 0);
         | 
| 152 | 
            +
              rb_define_method(klass, "simple_type", simple_type, 0);
         | 
| 65 153 | 
             
            }
         | 
    
        data/ext/sfcc/cim_enumeration.h
    CHANGED
    
    
    
        data/ext/sfcc/cim_instance.c
    CHANGED
    
    | @@ -3,9 +3,10 @@ | |
| 3 3 | 
             
            #include "cim_object_path.h"
         | 
| 4 4 |  | 
| 5 5 | 
             
            static void
         | 
| 6 | 
            -
            dealloc( | 
| 6 | 
            +
            dealloc(CIMCInstance *inst)
         | 
| 7 7 | 
             
            {
         | 
| 8 | 
            -
               | 
| 8 | 
            +
            /*  fprintf(stderr, "Sfcc_dealloc_cim_instance %p\n", inst); */
         | 
| 9 | 
            +
              inst->ft->release(inst);
         | 
| 9 10 | 
             
            }
         | 
| 10 11 |  | 
| 11 12 | 
             
            /**
         | 
| @@ -16,15 +17,14 @@ dealloc(CMPIInstance *instance) | |
| 16 17 | 
             
             */
         | 
| 17 18 | 
             
            static VALUE property(VALUE self, VALUE name)
         | 
| 18 19 | 
             
            {
         | 
| 19 | 
            -
               | 
| 20 | 
            -
               | 
| 21 | 
            -
               | 
| 22 | 
            -
              Data_Get_Struct(self,  | 
| 23 | 
            -
              data = ptr->ft->getProperty(ptr,  | 
| 20 | 
            +
              CIMCInstance *ptr;
         | 
| 21 | 
            +
              CIMCStatus status;
         | 
| 22 | 
            +
              CIMCData data;
         | 
| 23 | 
            +
              Data_Get_Struct(self, CIMCInstance, ptr);
         | 
| 24 | 
            +
              data = ptr->ft->getProperty(ptr, to_charptr(name), &status);
         | 
| 24 25 | 
             
              if ( !status.rc )
         | 
| 25 26 | 
             
                return sfcc_cimdata_to_value(data);
         | 
| 26 | 
            -
             | 
| 27 | 
            -
              sfcc_rb_raise_if_error(status, "Can't retrieve property '%s'", StringValuePtr(name));
         | 
| 27 | 
            +
              sfcc_rb_raise_if_error(status, "Can't retrieve property '%s'", to_charptr(name));
         | 
| 28 28 | 
             
              return Qnil;
         | 
| 29 29 | 
             
            }
         | 
| 30 30 |  | 
| @@ -40,13 +40,13 @@ static VALUE property(VALUE self, VALUE name) | |
| 40 40 | 
             
             */
         | 
| 41 41 | 
             
            static VALUE each_property(VALUE self)
         | 
| 42 42 | 
             
            {
         | 
| 43 | 
            -
               | 
| 44 | 
            -
               | 
| 43 | 
            +
              CIMCInstance *ptr;
         | 
| 44 | 
            +
              CIMCStatus status;
         | 
| 45 45 | 
             
              int k=0;
         | 
| 46 46 | 
             
              int num_props=0;
         | 
| 47 | 
            -
               | 
| 48 | 
            -
               | 
| 49 | 
            -
              Data_Get_Struct(self,  | 
| 47 | 
            +
              CIMCString *property_name = NULL;
         | 
| 48 | 
            +
              CIMCData data;
         | 
| 49 | 
            +
              Data_Get_Struct(self, CIMCInstance, ptr);
         | 
| 50 50 |  | 
| 51 51 | 
             
              num_props = ptr->ft->getPropertyCount(ptr, &status);
         | 
| 52 52 | 
             
              if (!status.rc) {
         | 
| @@ -57,7 +57,7 @@ static VALUE each_property(VALUE self) | |
| 57 57 | 
             
                  }
         | 
| 58 58 | 
             
                  else {
         | 
| 59 59 | 
             
                    sfcc_rb_raise_if_error(status, "Can't retrieve property #%d", k);
         | 
| 60 | 
            -
                  } | 
| 60 | 
            +
                  }
         | 
| 61 61 | 
             
                  if (property_name) CMRelease(property_name);
         | 
| 62 62 | 
             
                }
         | 
| 63 63 | 
             
              }
         | 
| @@ -75,8 +75,8 @@ static VALUE each_property(VALUE self) | |
| 75 75 | 
             
             */
         | 
| 76 76 | 
             
            static VALUE property_count(VALUE self)
         | 
| 77 77 | 
             
            {
         | 
| 78 | 
            -
               | 
| 79 | 
            -
              Data_Get_Struct(self,  | 
| 78 | 
            +
              CIMCInstance *ptr;
         | 
| 79 | 
            +
              Data_Get_Struct(self, CIMCInstance, ptr);
         | 
| 80 80 | 
             
              return UINT2NUM(ptr->ft->getPropertyCount(ptr, NULL));
         | 
| 81 81 | 
             
            }
         | 
| 82 82 |  | 
| @@ -88,11 +88,11 @@ static VALUE property_count(VALUE self) | |
| 88 88 | 
             
             */
         | 
| 89 89 | 
             
            static VALUE set_property(VALUE self, VALUE name, VALUE value)
         | 
| 90 90 | 
             
            {
         | 
| 91 | 
            -
               | 
| 92 | 
            -
               | 
| 93 | 
            -
              Data_Get_Struct(self,  | 
| 91 | 
            +
              CIMCInstance *ptr;
         | 
| 92 | 
            +
              CIMCData data;
         | 
| 93 | 
            +
              Data_Get_Struct(self, CIMCInstance, ptr);
         | 
| 94 94 | 
             
              data = sfcc_value_to_cimdata(value);
         | 
| 95 | 
            -
              ptr->ft->setProperty(ptr,  | 
| 95 | 
            +
              ptr->ft->setProperty(ptr, to_charptr(name), &data.value, data.type);
         | 
| 96 96 |  | 
| 97 97 | 
             
              return value;
         | 
| 98 98 | 
             
            }
         | 
| @@ -106,21 +106,18 @@ static VALUE set_property(VALUE self, VALUE name, VALUE value) | |
| 106 106 | 
             
             */
         | 
| 107 107 | 
             
            static VALUE object_path(VALUE self)
         | 
| 108 108 | 
             
            {
         | 
| 109 | 
            -
               | 
| 110 | 
            -
               | 
| 111 | 
            -
               | 
| 112 | 
            -
              Data_Get_Struct(self, CMPIInstance, ptr);
         | 
| 109 | 
            +
              CIMCInstance *ptr;
         | 
| 110 | 
            +
              CIMCObjectPath *op;
         | 
| 111 | 
            +
              Data_Get_Struct(self, CIMCInstance, ptr);
         | 
| 113 112 | 
             
              op = ptr->ft->getObjectPath(ptr, NULL);
         | 
| 114 | 
            -
               | 
| 115 | 
            -
              op->ft->release(op);
         | 
| 116 | 
            -
              return Sfcc_wrap_cim_object_path(newop);
         | 
| 113 | 
            +
              return Sfcc_wrap_cim_object_path(op);
         | 
| 117 114 | 
             
            }
         | 
| 118 115 |  | 
| 119 116 | 
             
            /**
         | 
| 120 117 | 
             
             * call-seq:
         | 
| 121 118 | 
             
             *   set_property_filter(property_list, keys)
         | 
| 122 119 | 
             
             *
         | 
| 123 | 
            -
             * Directs  | 
| 120 | 
            +
             * Directs CIMC to ignore any setProperty operations for this
         | 
| 124 121 | 
             
             * instance for any properties not in this list.
         | 
| 125 122 | 
             
             *
         | 
| 126 123 | 
             
             * +property_list+ If not nil, the members of the array define one
         | 
| @@ -132,12 +129,12 @@ static VALUE object_path(VALUE self) | |
| 132 129 | 
             
             */
         | 
| 133 130 | 
             
            static VALUE set_property_filter(VALUE self, VALUE property_list, VALUE keys)
         | 
| 134 131 | 
             
            {
         | 
| 135 | 
            -
               | 
| 136 | 
            -
               | 
| 132 | 
            +
              CIMCStatus status;
         | 
| 133 | 
            +
              CIMCInstance *ptr;
         | 
| 137 134 | 
             
              char **prop_a;
         | 
| 138 135 | 
             
              char **key_a;
         | 
| 139 136 |  | 
| 140 | 
            -
              Data_Get_Struct(self,  | 
| 137 | 
            +
              Data_Get_Struct(self, CIMCInstance, ptr);
         | 
| 141 138 |  | 
| 142 139 | 
             
              prop_a = sfcc_value_array_to_string_array(property_list);
         | 
| 143 140 | 
             
              key_a = sfcc_value_array_to_string_array(keys);
         | 
| @@ -158,16 +155,16 @@ static VALUE set_property_filter(VALUE self, VALUE property_list, VALUE keys) | |
| 158 155 | 
             
             */
         | 
| 159 156 | 
             
            static VALUE qualifier(VALUE self, VALUE name)
         | 
| 160 157 | 
             
            {
         | 
| 161 | 
            -
               | 
| 162 | 
            -
               | 
| 163 | 
            -
               | 
| 164 | 
            -
              memset(&status, 0, sizeof( | 
| 165 | 
            -
              Data_Get_Struct(self,  | 
| 166 | 
            -
              data = ptr->ft->getQualifier(ptr,  | 
| 158 | 
            +
              CIMCInstance *ptr;
         | 
| 159 | 
            +
              CIMCStatus status;
         | 
| 160 | 
            +
              CIMCData data;
         | 
| 161 | 
            +
              memset(&status, 0, sizeof(CIMCStatus));
         | 
| 162 | 
            +
              Data_Get_Struct(self, CIMCInstance, ptr);
         | 
| 163 | 
            +
              data = ptr->ft->getQualifier(ptr, to_charptr(name), &status);
         | 
| 167 164 | 
             
              if ( !status.rc )
         | 
| 168 165 | 
             
                return sfcc_cimdata_to_value(data);
         | 
| 169 166 |  | 
| 170 | 
            -
              sfcc_rb_raise_if_error(status, "Can't retrieve qualifier '%s'",  | 
| 167 | 
            +
              sfcc_rb_raise_if_error(status, "Can't retrieve qualifier '%s'", to_charptr(name));
         | 
| 171 168 | 
             
              return Qnil;
         | 
| 172 169 | 
             
            }
         | 
| 173 170 |  | 
| @@ -183,13 +180,13 @@ static VALUE qualifier(VALUE self, VALUE name) | |
| 183 180 | 
             
             */
         | 
| 184 181 | 
             
            static VALUE each_qualifier(VALUE self)
         | 
| 185 182 | 
             
            {
         | 
| 186 | 
            -
               | 
| 187 | 
            -
               | 
| 183 | 
            +
              CIMCInstance *ptr;
         | 
| 184 | 
            +
              CIMCStatus status;
         | 
| 188 185 | 
             
              int k=0;
         | 
| 189 186 | 
             
              int num_props=0;
         | 
| 190 | 
            -
               | 
| 191 | 
            -
               | 
| 192 | 
            -
              Data_Get_Struct(self,  | 
| 187 | 
            +
              CIMCString *qualifier_name = NULL;
         | 
| 188 | 
            +
              CIMCData data;
         | 
| 189 | 
            +
              Data_Get_Struct(self, CIMCInstance, ptr);
         | 
| 193 190 |  | 
| 194 191 | 
             
              num_props = ptr->ft->getQualifierCount(ptr, &status);
         | 
| 195 192 | 
             
              if (!status.rc) {
         | 
| @@ -200,7 +197,7 @@ static VALUE each_qualifier(VALUE self) | |
| 200 197 | 
             
                  }
         | 
| 201 198 | 
             
                  else {
         | 
| 202 199 | 
             
                    sfcc_rb_raise_if_error(status, "Can't retrieve qualifier #%d", k);
         | 
| 203 | 
            -
                  } | 
| 200 | 
            +
                  }
         | 
| 204 201 | 
             
                  if (qualifier_name) CMRelease(qualifier_name);
         | 
| 205 202 | 
             
                }
         | 
| 206 203 | 
             
              }
         | 
| @@ -218,8 +215,8 @@ static VALUE each_qualifier(VALUE self) | |
| 218 215 | 
             
             */
         | 
| 219 216 | 
             
            static VALUE qualifier_count(VALUE self)
         | 
| 220 217 | 
             
            {
         | 
| 221 | 
            -
               | 
| 222 | 
            -
              Data_Get_Struct(self,  | 
| 218 | 
            +
              CIMCInstance *ptr;
         | 
| 219 | 
            +
              Data_Get_Struct(self, CIMCInstance, ptr);
         | 
| 223 220 | 
             
              return UINT2NUM(ptr->ft->getQualifierCount(ptr, NULL));
         | 
| 224 221 | 
             
            }
         | 
| 225 222 |  | 
| @@ -231,17 +228,17 @@ static VALUE qualifier_count(VALUE self) | |
| 231 228 | 
             
             */
         | 
| 232 229 | 
             
            static VALUE property_qualifier(VALUE self, VALUE property_name, VALUE qualifier_name)
         | 
| 233 230 | 
             
            {
         | 
| 234 | 
            -
               | 
| 235 | 
            -
               | 
| 236 | 
            -
               | 
| 237 | 
            -
              memset(&status, 0, sizeof( | 
| 238 | 
            -
              Data_Get_Struct(self,  | 
| 239 | 
            -
              data = ptr->ft->getPropertyQualifier(ptr,  | 
| 240 | 
            -
                                                     | 
| 231 | 
            +
              CIMCInstance *ptr;
         | 
| 232 | 
            +
              CIMCStatus status;
         | 
| 233 | 
            +
              CIMCData data;
         | 
| 234 | 
            +
              memset(&status, 0, sizeof(CIMCStatus));
         | 
| 235 | 
            +
              Data_Get_Struct(self, CIMCInstance, ptr);
         | 
| 236 | 
            +
              data = ptr->ft->getPropertyQualifier(ptr, to_charptr(property_name),
         | 
| 237 | 
            +
                                                    to_charptr(qualifier_name), &status);
         | 
| 241 238 | 
             
              if ( !status.rc )
         | 
| 242 239 | 
             
                return sfcc_cimdata_to_value(data);
         | 
| 243 240 |  | 
| 244 | 
            -
              sfcc_rb_raise_if_error(status, "Can't retrieve property qualifier '%s'",  | 
| 241 | 
            +
              sfcc_rb_raise_if_error(status, "Can't retrieve property qualifier '%s'", to_charptr(qualifier_name));
         | 
| 245 242 | 
             
              return Qnil;
         | 
| 246 243 | 
             
            }
         | 
| 247 244 |  | 
| @@ -257,24 +254,24 @@ static VALUE property_qualifier(VALUE self, VALUE property_name, VALUE qualifier | |
| 257 254 | 
             
             */
         | 
| 258 255 | 
             
            static VALUE each_property_qualifier(VALUE self, VALUE property_name)
         | 
| 259 256 | 
             
            {
         | 
| 260 | 
            -
               | 
| 261 | 
            -
               | 
| 257 | 
            +
              CIMCInstance *ptr;
         | 
| 258 | 
            +
              CIMCStatus status;
         | 
| 262 259 | 
             
              int k=0;
         | 
| 263 260 | 
             
              int num_props=0;
         | 
| 264 | 
            -
               | 
| 265 | 
            -
               | 
| 266 | 
            -
              Data_Get_Struct(self,  | 
| 261 | 
            +
              CIMCString *property_qualifier_name = NULL;
         | 
| 262 | 
            +
              CIMCData data;
         | 
| 263 | 
            +
              Data_Get_Struct(self, CIMCInstance, ptr);
         | 
| 267 264 |  | 
| 268 | 
            -
              num_props = ptr->ft->getPropertyQualifierCount(ptr,  | 
| 265 | 
            +
              num_props = ptr->ft->getPropertyQualifierCount(ptr, to_charptr(property_name), &status);
         | 
| 269 266 | 
             
              if (!status.rc) {
         | 
| 270 267 | 
             
                for (; k < num_props; ++k) {
         | 
| 271 | 
            -
                  data = ptr->ft->getPropertyQualifierAt(ptr,  | 
| 268 | 
            +
                  data = ptr->ft->getPropertyQualifierAt(ptr, to_charptr(property_name), k, &property_qualifier_name, &status);
         | 
| 272 269 | 
             
                  if (!status.rc) {
         | 
| 273 270 | 
             
                    rb_yield_values(2, (property_qualifier_name ? rb_str_new2(property_qualifier_name->ft->getCharPtr(property_qualifier_name, NULL)) : Qnil), sfcc_cimdata_to_value(data));
         | 
| 274 271 | 
             
                  }
         | 
| 275 272 | 
             
                  else {
         | 
| 276 273 | 
             
                    sfcc_rb_raise_if_error(status, "Can't retrieve property qualifier #%d", k);
         | 
| 277 | 
            -
                  } | 
| 274 | 
            +
                  }
         | 
| 278 275 | 
             
                  if (property_qualifier_name) CMRelease(property_qualifier_name);
         | 
| 279 276 | 
             
                }
         | 
| 280 277 | 
             
              }
         | 
| @@ -292,9 +289,9 @@ static VALUE each_property_qualifier(VALUE self, VALUE property_name) | |
| 292 289 | 
             
             */
         | 
| 293 290 | 
             
            static VALUE property_qualifier_count(VALUE self, VALUE property_name)
         | 
| 294 291 | 
             
            {
         | 
| 295 | 
            -
               | 
| 296 | 
            -
              Data_Get_Struct(self,  | 
| 297 | 
            -
              return UINT2NUM(ptr->ft->getPropertyQualifierCount(ptr,  | 
| 292 | 
            +
              CIMCInstance *ptr;
         | 
| 293 | 
            +
              Data_Get_Struct(self, CIMCInstance, ptr);
         | 
| 294 | 
            +
              return UINT2NUM(ptr->ft->getPropertyQualifierCount(ptr, to_charptr(property_name), NULL));
         | 
| 298 295 | 
             
            }
         | 
| 299 296 |  | 
| 300 297 | 
             
            /**
         | 
| @@ -306,26 +303,22 @@ static VALUE property_qualifier_count(VALUE self, VALUE property_name) | |
| 306 303 | 
             
             */
         | 
| 307 304 | 
             
            static VALUE new(VALUE klass, VALUE object_path)
         | 
| 308 305 | 
             
            {
         | 
| 309 | 
            -
               | 
| 310 | 
            -
               | 
| 311 | 
            -
               | 
| 312 | 
            -
              CMPIObjectPath *op;
         | 
| 306 | 
            +
              CIMCStatus status;
         | 
| 307 | 
            +
              CIMCInstance *ptr;
         | 
| 308 | 
            +
              CIMCObjectPath *op;
         | 
| 313 309 |  | 
| 314 | 
            -
              Data_Get_Struct(object_path,  | 
| 315 | 
            -
              ptr =  | 
| 316 | 
            -
              newins = ptr->ft->clone(ptr, &status);
         | 
| 317 | 
            -
              ptr->ft->release(ptr);
         | 
| 310 | 
            +
              Data_Get_Struct(object_path, CIMCObjectPath, op);
         | 
| 311 | 
            +
              ptr = cimcEnv->ft->newInstance(cimcEnv, op, &status);
         | 
| 318 312 |  | 
| 319 313 | 
             
              if (!status.rc)
         | 
| 320 | 
            -
                return Sfcc_wrap_cim_instance( | 
| 314 | 
            +
                return Sfcc_wrap_cim_instance(ptr);
         | 
| 321 315 | 
             
              sfcc_rb_raise_if_error(status, "Can't create instance");
         | 
| 322 316 | 
             
              return Qnil;
         | 
| 323 317 | 
             
            }
         | 
| 324 318 |  | 
| 325 319 | 
             
            VALUE
         | 
| 326 | 
            -
            Sfcc_wrap_cim_instance( | 
| 320 | 
            +
            Sfcc_wrap_cim_instance(CIMCInstance *instance)
         | 
| 327 321 | 
             
            {
         | 
| 328 | 
            -
              SFCC_INC_REFCOUNT(instance);
         | 
| 329 322 | 
             
              return Data_Wrap_Struct(cSfccCimInstance, NULL, dealloc, instance);
         | 
| 330 323 | 
             
            }
         | 
| 331 324 |  |