class RubyVM::Shape
Constants
- SHAPE_BITS
- SHAPE_FLAG_SHIFT
- SHAPE_FROZEN
- SHAPE_IVAR
- SHAPE_IVAR_UNDEF
- SHAPE_ROOT
- SPECIAL_CONST_SHAPE_ID
Public Class Methods
find_by_id(p1)
click to toggle source
static VALUE rb_shape_find_by_id(VALUE mod, VALUE id) { shape_id_t shape_id = NUM2UINT(id); if (shape_id >= GET_VM()->next_shape_id) { rb_raise(rb_eArgError, "Shape ID %d is out of bounds\n", shape_id); } return rb_shape_t_to_rb_cShape(rb_shape_get_shape_by_id(shape_id)); }
next_shape_id()
click to toggle source
static VALUE next_shape_id(VALUE self) { return INT2NUM(GET_VM()->next_shape_id); }
of(p1)
click to toggle source
static VALUE rb_shape_debug_shape(VALUE self, VALUE obj) { return rb_shape_t_to_rb_cShape(rb_shape_get_shape(obj)); }
root_shape()
click to toggle source
static VALUE rb_shape_root_shape(VALUE self) { return rb_shape_t_to_rb_cShape(rb_shape_get_root_shape()); }
transition_tree()
click to toggle source
static VALUE shape_transition_tree(VALUE self) { return rb_obj_shape(rb_shape_get_root_shape()); }
Public Instance Methods
capacity()
click to toggle source
static VALUE rb_shape_capacity(VALUE self) { rb_shape_t * shape; TypedData_Get_Struct(self, rb_shape_t, &shape_data_type, shape); return INT2NUM(shape->capacity); }
depth()
click to toggle source
static VALUE rb_shape_export_depth(VALUE self) { rb_shape_t* shape; TypedData_Get_Struct(self, rb_shape_t, &shape_data_type, shape); unsigned int depth = 0; while (shape->parent_id != INVALID_SHAPE_ID) { depth++; shape = rb_shape_get_parent(shape); } return INT2NUM(depth); }
edge_name()
click to toggle source
static VALUE rb_shape_edge_name(VALUE self) { rb_shape_t* shape; TypedData_Get_Struct(self, rb_shape_t, &shape_data_type, shape); if ((shape->edge_name & (ID_INTERNAL)) == ID_INTERNAL) { return INT2NUM(shape->capacity); } else { if (shape->edge_name) { return ID2SYM(shape->edge_name); } else { return Qnil; } } }
edges()
click to toggle source
static VALUE rb_shape_edges(VALUE self) { rb_shape_t* shape; TypedData_Get_Struct(self, rb_shape_t, &shape_data_type, shape); VALUE hash = rb_hash_new(); if (shape->edges) { rb_id_table_foreach(shape->edges, rb_edges_to_hash, &hash); } return hash; }
id()
click to toggle source
static VALUE rb_wrapped_shape_id(VALUE self) { rb_shape_t * shape; TypedData_Get_Struct(self, rb_shape_t, &shape_data_type, shape); return INT2NUM(rb_shape_id(shape)); }
next_iv_index()
click to toggle source
static VALUE rb_shape_next_iv_index(VALUE self) { rb_shape_t* shape; TypedData_Get_Struct(self, rb_shape_t, &shape_data_type, shape); return INT2NUM(shape->next_iv_index); }
parent()
click to toggle source
static VALUE rb_shape_parent(VALUE self) { rb_shape_t * shape; TypedData_Get_Struct(self, rb_shape_t, &shape_data_type, shape); if (shape->parent_id != INVALID_SHAPE_ID) { return rb_shape_t_to_rb_cShape(rb_shape_get_parent(shape)); } else { return Qnil; } }
parent_id()
click to toggle source
static VALUE rb_shape_parent_id(VALUE self) { rb_shape_t * shape; TypedData_Get_Struct(self, rb_shape_t, &shape_data_type, shape); if (shape->parent_id != INVALID_SHAPE_ID) { return INT2NUM(shape->parent_id); } else { return Qnil; } }
size_pool_index()
click to toggle source
static VALUE rb_shape_size_pool_index(VALUE self) { rb_shape_t * shape; TypedData_Get_Struct(self, rb_shape_t, &shape_data_type, shape); return INT2NUM(shape->size_pool_index); }
type()
click to toggle source
static VALUE rb_shape_type(VALUE self) { rb_shape_t * shape; TypedData_Get_Struct(self, rb_shape_t, &shape_data_type, shape); return INT2NUM(shape->type); }