Class: Rubydex::Method

Inherits:
Declaration show all
Includes:
Visibility
Defined in:
lib/rubydex/declaration.rb,
ext/rubydex/declaration.c

Instance Method Summary collapse

Methods included from Visibility

#private?, #protected?, #public?

Methods inherited from Declaration

#definitions, #initialize, #name, #owner, #unqualified_name

Constructor Details

This class inherits a constructor from Rubydex::Declaration

Instance Method Details

#referencesEnumerator[Rubydex::MethodReference]

Returns an enumerator that yields method references to this declaration.

Returns:



386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
# File 'ext/rubydex/declaration.c', line 386

static VALUE rdxr_method_declaration_references(VALUE self) {
    if (!rb_block_given_p()) {
        return rb_enumeratorize_with_size(self, rb_str_new2("references"), 0, NULL,
                                          method_declaration_references_size);
    }

    HandleData *data;
    void *graph = rdxi_graph_from_handle(self, &data);

    void *iter = rdx_declaration_method_references_iter_new(graph, data->id);
    if (iter == NULL) {
        rb_raise(rb_eRuntimeError, "Declaration not found");
    }

    VALUE args = rb_ary_new_from_args(2, data->graph_obj, ULL2NUM((uintptr_t)iter));
    rb_ensure(rdxi_method_references_yield, args, rdxi_method_references_ensure, args);

    return self;
}

#visibilitySymbol

Returns the declaration visibility.

Returns:

  • (Symbol)


435
436
437
438
439
440
441
442
443
444
445
446
447
448
# File 'ext/rubydex/declaration.c', line 435

static VALUE rdxr_declaration_visibility(VALUE self) {
    HandleData *data;
    void *graph = rdxi_graph_from_handle(self, &data);

    const CVisibility *visibility = rdx_graph_visibility(graph, data->id);
    if (visibility == NULL) {
        rb_raise(rb_eRuntimeError, "declaration has no visibility");
    }

    VALUE symbol = rdxi_visibility_to_symbol(*visibility);
    free_c_visibility(visibility);

    return symbol;
}