Class: Rubydex::SingletonClassDefinition
- Inherits:
-
Definition
- Object
- Definition
- Rubydex::SingletonClassDefinition
- Defined in:
- ext/rubydex/definition.c
Instance Method Summary collapse
-
#mixins ⇒ Object
Definition#mixins -> [Rubydex::Mixin].
Methods inherited from Definition
#comments, #deprecated?, #initialize, #location, #name, #name_location
Constructor Details
This class inherits a constructor from Rubydex::Definition
Instance Method Details
#mixins ⇒ Object
Definition#mixins -> [Rubydex::Mixin]
215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 |
# File 'ext/rubydex/definition.c', line 215
static VALUE rdxr_definition_mixins(VALUE self) {
HandleData *data;
TypedData_Get_Struct(self, HandleData, &handle_type, data);
void *graph;
TypedData_Get_Struct(data->graph_obj, void *, &graph_type, graph);
MixinsIter *iter = rdx_definition_mixins(graph, data->id);
if (iter == NULL) {
rb_raise(rb_eRuntimeError, "Tried to get mixins for a definition that isn't a namespace");
}
size_t len = rdx_mixins_iter_len(iter);
VALUE ary = rb_ary_new_capa((long)len);
CMixin entry;
while (rdx_mixins_iter_next(iter, &entry)) {
VALUE constant_ref = rdxi_build_constant_reference(data->graph_obj, &entry.constant_reference);
VALUE mixin_class = rdxi_mixin_class_for_kind(entry.kind);
VALUE mixin = rb_class_new_instance(1, &constant_ref, mixin_class);
rb_ary_push(ary, mixin);
}
rdx_mixins_iter_free(iter);
return ary;
}
|