Class: Node::DASGN
- Defined in:
- ext/internal/node/nodeinfo.c,
ext/internal/node/nodeinfo.c,
ext/cached/ruby-1.8.4/internal/node/nodeinfo.c,
ext/cached/ruby-1.8.4/internal/node/nodeinfo.c,
ext/cached/ruby-1.8.5/internal/node/nodeinfo.c,
ext/cached/ruby-1.8.5/internal/node/nodeinfo.c,
ext/cached/ruby-1.8.6/internal/node/nodeinfo.c,
ext/cached/ruby-1.8.6/internal/node/nodeinfo.c,
ext/cached/ruby-1.8.7/internal/node/nodeinfo.c,
ext/cached/ruby-1.8.7/internal/node/nodeinfo.c,
ext/cached/ruby-1.9.1/internal/node/nodeinfo.c,
ext/cached/ruby-1.9.1/internal/node/nodeinfo.c,
ext/cached/ruby-1.9.2/internal/node/nodeinfo.c,
ext/cached/ruby-1.9.2/internal/node/nodeinfo.c,
ext/cached/ruby-1.9.3/internal/node/nodeinfo.c,
ext/cached/ruby-1.9.3/internal/node/nodeinfo.c
Overview
Represents dynamic local variable assignment. Dynamic assignment differs from static assignment in that the slots for static local variables are allocated when the method is called, wereas slots for dynamic variables are allocated when the variable is first assigned to. When searching for the variable, dynamic assignment searches backward up the stack to see if the variable exists in any previous block in the current frame; if it does, it assigns to the slot found in that block, otherwise it creates a new variable slot. As a result, dynamic assignment is typically much slower than static assignment.
Class Method Summary collapse
-
.members ⇒ Array
Return an array of strings containing the names of the node class’s members.
Instance Method Summary collapse
-
#value ⇒ Object
Return the Node’s value member.
-
#vid ⇒ Object
Return the Node’s vid member.
Methods inherited from Node
#[], #_dump, _load, #address, #as_code, #as_expression, #as_paren_expression, #bytecode_compile, compile_string, define_code, define_expression, #eval, #flags, #inspect, #members, #nd_file, #nd_line, #nd_type, #obfusc, #pretty_print, #swap, #to_a, #tree, type
Class Method Details
.members ⇒ Array
Return an array of strings containing the names of the node class’s members.
2793 2794 2795 2796 |
# File 'ext/internal/node/nodeinfo.c', line 2793
VALUE node_s_members(VALUE klass)
{
return rb_iv_get(klass, "__member__");
}
|
Instance Method Details
#value ⇒ Object
Return the Node’s value member. The return type is either a Node or an Object.
2714 2715 2716 2717 2718 2719 2720 2721 2722 2723 2724 2725 2726 2727 2728 2729 2730 2731 2732 2733 2734 2735 2736 |
# File 'ext/internal/node/nodeinfo.c', line 2714
static VALUE node_value(VALUE self)
{
NODE * n;
Data_Get_Struct(self, NODE, n);
if(TYPE(n->nd_value) == T_NODE)
{
if(0 && nd_type(n) == NODE_OP_ASGN2)
{
return wrap_node_as(
(NODE *)n->nd_value,
rb_cNodeSubclass[NODE_OP_ASGN2_ARG]);
}
else
{
return wrap_node((NODE *)n->nd_value);
}
}
else
{
return (VALUE)n->nd_value;
}
}
|
#vid ⇒ Object
Return the Node’s vid member. The return type is a Symbol.
2768 2769 2770 2771 2772 2773 2774 2775 2776 2777 2778 2779 2780 2781 2782 2783 2784 |
# File 'ext/internal/node/nodeinfo.c', line 2768
static VALUE node_vid(VALUE self)
{
NODE * n;
Data_Get_Struct(self, NODE, n);
if(n->nd_vid == 0)
{
return Qfalse;
}
else if(n->nd_vid == 1)
{
return Qtrue;
}
else
{
return ID2SYM(n->nd_vid);
}
}
|