Class: Rubydex::ConstantAlias
- Inherits:
-
Declaration
- Object
- Declaration
- Rubydex::ConstantAlias
- Includes:
- Visibility
- Defined in:
- lib/rubydex/declaration.rb,
ext/rubydex/declaration.c
Instance Method Summary collapse
-
#references ⇒ Enumerator[Rubydex::ConstantReference]
Returns an enumerator that yields constant references to this declaration.
-
#target ⇒ Rubydex::Declaration?
Returns the first resolved target declaration for this constant alias, or nil if none of its definitions resolved to a target.
-
#visibility ⇒ Symbol
Returns the declaration visibility.
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
#references ⇒ Enumerator[Rubydex::ConstantReference]
Returns an enumerator that yields constant references to this declaration.
345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 |
# File 'ext/rubydex/declaration.c', line 345
static VALUE rdxr_constant_declaration_references(VALUE self) {
if (!rb_block_given_p()) {
return rb_enumeratorize_with_size(self, rb_str_new2("references"), 0, NULL,
constant_declaration_references_size);
}
HandleData *data;
void *graph = rdxi_graph_from_handle(self, &data);
void *iter = rdx_declaration_constant_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_constant_references_yield, args, rdxi_constant_references_ensure, args);
return self;
}
|
#target ⇒ Rubydex::Declaration?
Returns the first resolved target declaration for this constant alias, or nil if none of its definitions resolved to a target.
457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 |
# File 'ext/rubydex/declaration.c', line 457
static VALUE rdxr_constant_alias_target(VALUE self) {
HandleData *data;
void *graph = rdxi_graph_from_handle(self, &data);
const CDeclaration *decl = rdx_constant_alias_target(graph, data->id);
if (decl == NULL) {
return Qnil;
}
VALUE decl_class = rdxi_declaration_class_for_kind(decl->kind);
VALUE argv[] = {data->graph_obj, ULL2NUM(decl->id)};
free_c_declaration(decl);
return rb_class_new_instance(2, argv, decl_class);
}
|
#visibility ⇒ Symbol
Returns the declaration visibility.
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;
}
|