ruby-internal 0.7.3 → 0.8.0
Sign up to get free protection for your applications and to get access to all the features.
- data/bin/ruby-internal-node-dump +1 -1
- data/bin/ruby-internal-obfuscate +1 -1
- data/ext/cached/ruby-1.8.4/internal/method/{method.h → internal_method.h} +12 -0
- data/ext/cached/ruby-1.8.4/internal/module/getcfp.h +13 -0
- data/ext/cached/ruby-1.8.4/internal/node/global_entry.h +94 -0
- data/ext/cached/ruby-1.8.4/internal/node/node_type_descrip.c +41 -41
- data/ext/cached/ruby-1.8.4/internal/node/nodeinfo.c +288 -273
- data/ext/cached/ruby-1.8.4/internal/vm/instruction/insns_info.c +3 -0
- data/ext/cached/ruby-1.8.4/internal/vm/iseq/iseq_load.inc +21 -2
- data/ext/cached/{ruby-1.8.3/internal/method/method.h → ruby-1.8.5/internal/method/internal_method.h} +12 -0
- data/ext/cached/ruby-1.8.5/internal/module/getcfp.h +13 -0
- data/ext/cached/ruby-1.8.5/internal/node/global_entry.h +94 -0
- data/ext/cached/ruby-1.8.5/internal/node/node_type_descrip.c +45 -45
- data/ext/cached/ruby-1.8.5/internal/node/nodeinfo.c +310 -295
- data/ext/cached/ruby-1.8.5/internal/vm/instruction/insns_info.c +3 -0
- data/ext/cached/ruby-1.8.5/internal/vm/iseq/iseq_load.inc +21 -2
- data/ext/cached/{ruby-1.8.5/internal/method/method.h → ruby-1.8.6/internal/method/internal_method.h} +12 -0
- data/ext/cached/ruby-1.8.6/internal/module/getcfp.h +13 -0
- data/ext/cached/ruby-1.8.6/internal/node/global_entry.h +94 -0
- data/ext/cached/ruby-1.8.6/internal/node/node_type_descrip.c +48 -48
- data/ext/cached/ruby-1.8.6/internal/node/nodeinfo.c +323 -308
- data/ext/cached/ruby-1.8.6/internal/vm/instruction/insns_info.c +3 -0
- data/ext/cached/ruby-1.8.6/internal/vm/iseq/iseq_load.inc +21 -2
- data/ext/cached/{ruby-1.8.6/internal/method/method.h → ruby-1.8.7/internal/method/internal_method.h} +12 -0
- data/ext/cached/ruby-1.8.7/internal/module/getcfp.h +13 -0
- data/ext/cached/ruby-1.8.7/internal/node/global_entry.h +98 -0
- data/ext/cached/ruby-1.8.7/internal/node/node_type_descrip.c +42 -42
- data/ext/cached/ruby-1.8.7/internal/node/nodeinfo.c +276 -261
- data/ext/cached/ruby-1.8.7/internal/vm/instruction/insns_info.c +3 -0
- data/ext/cached/ruby-1.8.7/internal/vm/iseq/iseq_load.inc +21 -2
- data/ext/cached/{ruby-1.9.0/internal/method/method.h → ruby-1.9.1/internal/method/internal_method.h} +12 -0
- data/ext/cached/ruby-1.9.1/internal/module/classpath.c +12 -14
- data/ext/cached/ruby-1.9.1/internal/module/getcfp.h +25 -0
- data/ext/cached/ruby-1.9.1/internal/node/global_entry.h +86 -0
- data/ext/cached/ruby-1.9.1/internal/node/node_type_descrip.c +46 -48
- data/ext/cached/ruby-1.9.1/internal/node/nodeinfo.c +311 -412
- data/ext/cached/ruby-1.9.1/internal/vm/instruction/insns_info.c +3 -0
- data/ext/cached/ruby-1.9.1/internal/vm/iseq/iseq_load.inc +28 -6
- data/ext/cached/ruby-1.9.1/internal/yarv-headers/iseq.h +1 -0
- data/ext/cached/ruby-1.9.1/internal/yarv-headers/parse.h +6 -6
- data/ext/cached/ruby-1.9.1/internal/yarv-headers/revision.h +1 -1
- data/ext/cached/ruby-1.9.1/internal/yarv-headers/version.h +6 -5
- data/ext/cached/ruby-1.9.1/internal/yarv-headers/vm_core.h +3 -2
- data/ext/cached/ruby-1.9.1/internal/yarv-headers/vm_insnhelper.h +1 -0
- data/ext/cached/{ruby-1.9.0 → ruby-1.9.2}/internal/binding/block.h +0 -0
- data/ext/cached/{ruby-1.9.1/internal/method/method.h → ruby-1.9.2/internal/method/internal_method.h} +16 -5
- data/ext/cached/ruby-1.9.2/internal/module/classpath.c +40 -0
- data/ext/cached/{ruby-1.9.0 → ruby-1.9.2}/internal/module/classpath.h +0 -0
- data/ext/cached/ruby-1.9.2/internal/module/getcfp.h +25 -0
- data/ext/cached/{ruby-1.9.0 → ruby-1.9.2}/internal/node/block.h +0 -0
- data/ext/cached/ruby-1.9.2/internal/node/global_entry.h +93 -0
- data/ext/cached/{ruby-1.9.0 → ruby-1.9.2}/internal/node/node_type_descrip.c +44 -48
- data/ext/cached/{ruby-1.9.0 → ruby-1.9.2}/internal/node/nodeinfo.c +291 -439
- data/ext/cached/{ruby-1.9.0 → ruby-1.9.2}/internal/node/nodeinfo.h +0 -0
- data/ext/cached/{ruby-1.9.0 → ruby-1.9.2}/internal/proc/block.h +0 -0
- data/ext/cached/{ruby-1.9.0 → ruby-1.9.2}/internal/tag/tag.h +0 -0
- data/ext/cached/{ruby-1.9.0 → ruby-1.9.2}/internal/vm/instruction/insns_info.c +141 -64
- data/ext/cached/{ruby-1.9.0 → ruby-1.9.2}/internal/vm/instruction/insns_info.h +88 -80
- data/ext/cached/{ruby-1.9.0 → ruby-1.9.2}/internal/vm/iseq/insns_info.inc +77 -70
- data/ext/cached/ruby-1.9.2/internal/vm/iseq/iseq_load.inc +426 -0
- data/ext/cached/{ruby-1.9.0 → ruby-1.9.2}/internal/yarv-headers/debug.h +1 -1
- data/ext/cached/{ruby-1.9.0 → ruby-1.9.2}/internal/yarv-headers/dln.h +3 -3
- data/ext/cached/{ruby-1.9.0 → ruby-1.9.2}/internal/yarv-headers/encdb.h +18 -2
- data/ext/cached/{ruby-1.9.0 → ruby-1.9.2}/internal/yarv-headers/eval_intern.h +39 -28
- data/ext/cached/{ruby-1.9.0 → ruby-1.9.2}/internal/yarv-headers/gc.h +7 -5
- data/ext/cached/ruby-1.9.2/internal/yarv-headers/id.h +170 -0
- data/ext/cached/{ruby-1.9.0 → ruby-1.9.2}/internal/yarv-headers/iseq.h +20 -10
- data/ext/cached/ruby-1.9.2/internal/yarv-headers/method.h +103 -0
- data/ext/cached/{ruby-1.9.0 → ruby-1.9.2}/internal/yarv-headers/node.h +14 -47
- data/ext/cached/{ruby-1.9.0 → ruby-1.9.2}/internal/yarv-headers/parse.h +31 -148
- data/ext/cached/{ruby-1.9.0 → ruby-1.9.2}/internal/yarv-headers/regenc.h +7 -3
- data/ext/cached/{ruby-1.9.0 → ruby-1.9.2}/internal/yarv-headers/regint.h +16 -17
- data/ext/cached/{ruby-1.9.0 → ruby-1.9.2}/internal/yarv-headers/regparse.h +4 -1
- data/ext/cached/ruby-1.9.2/internal/yarv-headers/revision.h +1 -0
- data/ext/cached/{ruby-1.9.0 → ruby-1.9.2}/internal/yarv-headers/thread_pthread.h +4 -1
- data/ext/cached/{ruby-1.9.0 → ruby-1.9.2}/internal/yarv-headers/thread_win32.h +1 -1
- data/ext/cached/ruby-1.9.2/internal/yarv-headers/timev.h +21 -0
- data/ext/cached/{ruby-1.9.0 → ruby-1.9.2}/internal/yarv-headers/transcode_data.h +20 -10
- data/ext/cached/ruby-1.9.2/internal/yarv-headers/transdb.h +179 -0
- data/ext/cached/ruby-1.9.2/internal/yarv-headers/version.h +55 -0
- data/ext/cached/{ruby-1.9.0 → ruby-1.9.2}/internal/yarv-headers/vm_core.h +127 -84
- data/ext/cached/{ruby-1.9.0 → ruby-1.9.2}/internal/yarv-headers/vm_exec.h +4 -7
- data/ext/cached/{ruby-1.9.0 → ruby-1.9.2}/internal/yarv-headers/vm_insnhelper.h +53 -36
- data/ext/cached/{ruby-1.9.0 → ruby-1.9.2}/internal/yarv-headers/vm_opts.h +1 -1
- data/ext/cached/ruby-1.9.3/internal/binding/block.h +12 -0
- data/ext/cached/ruby-1.9.3/internal/method/internal_method.h +32 -0
- data/ext/cached/ruby-1.9.3/internal/module/classpath.c +40 -0
- data/ext/cached/{ruby-1.8.0 → ruby-1.9.3}/internal/module/classpath.h +5 -2
- data/ext/cached/ruby-1.9.3/internal/module/getcfp.h +25 -0
- data/ext/cached/ruby-1.9.3/internal/node/block.h +12 -0
- data/ext/cached/ruby-1.9.3/internal/node/global_entry.h +93 -0
- data/ext/cached/{ruby-1.8.3 → ruby-1.9.3}/internal/node/node_type_descrip.c +48 -57
- data/ext/cached/{ruby-1.6.8 → ruby-1.9.3}/internal/node/nodeinfo.c +589 -740
- data/ext/cached/{ruby-1.8.0 → ruby-1.9.3}/internal/node/nodeinfo.h +4 -3
- data/ext/cached/ruby-1.9.3/internal/proc/block.h +12 -0
- data/ext/cached/ruby-1.9.3/internal/tag/tag.h +6 -0
- data/ext/cached/ruby-1.9.3/internal/vm/instruction/insns_info.c +6013 -0
- data/ext/cached/ruby-1.9.3/internal/vm/instruction/insns_info.h +899 -0
- data/ext/cached/ruby-1.9.3/internal/vm/iseq/insns_info.inc +707 -0
- data/ext/cached/ruby-1.9.3/internal/vm/iseq/iseq_load.inc +423 -0
- data/ext/cached/ruby-1.9.3/internal/yarv-headers/addr2line.h +21 -0
- data/ext/cached/ruby-1.9.3/internal/yarv-headers/atomic.h +56 -0
- data/ext/cached/ruby-1.9.3/internal/yarv-headers/constant.h +34 -0
- data/ext/cached/ruby-1.9.3/internal/yarv-headers/debug.h +41 -0
- data/ext/cached/ruby-1.9.3/internal/yarv-headers/dln.h +50 -0
- data/ext/cached/ruby-1.9.3/internal/yarv-headers/encdb.h +167 -0
- data/ext/cached/ruby-1.9.3/internal/yarv-headers/eval_intern.h +234 -0
- data/ext/cached/ruby-1.9.3/internal/yarv-headers/gc.h +98 -0
- data/ext/cached/ruby-1.9.3/internal/yarv-headers/id.h +175 -0
- data/ext/cached/ruby-1.9.3/internal/yarv-headers/internal.h +232 -0
- data/ext/cached/ruby-1.9.3/internal/yarv-headers/iseq.h +125 -0
- data/ext/cached/ruby-1.9.3/internal/yarv-headers/method.h +105 -0
- data/ext/cached/ruby-1.9.3/internal/yarv-headers/node.h +503 -0
- data/ext/cached/ruby-1.9.3/internal/yarv-headers/parse.h +186 -0
- data/ext/cached/ruby-1.9.3/internal/yarv-headers/regenc.h +219 -0
- data/ext/cached/ruby-1.9.3/internal/yarv-headers/regint.h +850 -0
- data/ext/cached/ruby-1.9.3/internal/yarv-headers/regparse.h +362 -0
- data/ext/cached/ruby-1.9.3/internal/yarv-headers/revision.h +1 -0
- data/ext/cached/ruby-1.9.3/internal/yarv-headers/thread_pthread.h +51 -0
- data/ext/cached/ruby-1.9.3/internal/yarv-headers/thread_win32.h +40 -0
- data/ext/cached/ruby-1.9.3/internal/yarv-headers/timev.h +21 -0
- data/ext/cached/ruby-1.9.3/internal/yarv-headers/transcode_data.h +117 -0
- data/ext/cached/ruby-1.9.3/internal/yarv-headers/transdb.h +189 -0
- data/ext/cached/ruby-1.9.3/internal/yarv-headers/version.h +52 -0
- data/ext/cached/ruby-1.9.3/internal/yarv-headers/vm_core.h +756 -0
- data/ext/cached/ruby-1.9.3/internal/yarv-headers/vm_exec.h +184 -0
- data/ext/cached/ruby-1.9.3/internal/yarv-headers/vm_insnhelper.h +220 -0
- data/ext/cached/ruby-1.9.3/internal/yarv-headers/vm_opts.h +51 -0
- data/ext/internal/binding/block.h +20 -0
- data/ext/internal/method/internal_method.h +5 -38
- data/ext/internal/method/internal_method.h.rpp +0 -7
- data/ext/internal/method/method.c +52 -32
- data/ext/internal/module/classpath.c +18 -13
- data/ext/internal/module/classpath.h +3 -3
- data/ext/internal/module/extconf.rb +3 -2
- data/ext/internal/module/getcfp.h +13 -0
- data/ext/internal/module/getcfp.h.rpp +44 -0
- data/ext/internal/module/module.c +58 -21
- data/ext/internal/node/block.h +20 -0
- data/ext/internal/node/extconf.rb +2 -0
- data/ext/internal/node/global_entry.h +69 -13
- data/ext/internal/node/global_entry.h.rpp +11 -2
- data/ext/internal/node/node.c +30 -3
- data/ext/internal/node/node_type_descrip.c +47 -38
- data/ext/internal/node/nodeinfo.c +622 -306
- data/ext/internal/node/nodeinfo.h +1 -4
- data/ext/internal/proc/block.h +20 -0
- data/ext/internal/tag/tag.h +10 -0
- data/ext/internal/thread/thread.c +9 -3
- data/ext/internal/vm/extconf.rb +1 -0
- data/ext/internal/vm/instruction/insns_info.c +3 -5974
- data/ext/internal/vm/instruction/insns_info.h +0 -878
- data/ext/internal/vm/iseq/extconf.rb +1 -0
- data/ext/internal/vm/iseq/iseq.c +38 -4
- data/ext/internal/vm/iseq/iseq_load.inc.rpp +23 -5
- data/ext/internal/vm/vm.c +28 -0
- data/lib/internal/classtree.rb +28 -0
- data/lib/internal/debug.rb +10 -2
- data/lib/internal/method/as_code.rb +25 -0
- data/lib/internal/method/as_expression.rb +2 -3
- data/lib/internal/method/origin.rb +29 -0
- data/lib/internal/method/signature.rb +5 -300
- data/lib/internal/method/signature/argument.rb +102 -0
- data/lib/internal/method/signature/iseq.rb +52 -0
- data/lib/internal/method/signature/node.rb +160 -0
- data/lib/internal/method/signature/signature.rb +23 -0
- data/lib/internal/proc/as_code.rb +2 -0
- data/lib/internal/proc/as_expression.rb +2 -0
- data/lib/internal/vm/bytedecoder.rb +5 -5
- data/lib/internal/vm/iseq/as_code.rb +2 -2
- data/lib/internal/vm/iseq/as_expression.rb +2 -2
- data/test/test_dump_method.rb +1 -1
- data/test/test_method.rb +21 -3
- data/test/test_node.rb +20 -4
- metadata +152 -155
- data/ext/cached/ruby-1.6.8/internal/binding/block.h +0 -35
- data/ext/cached/ruby-1.6.8/internal/method/method.h +0 -19
- data/ext/cached/ruby-1.6.8/internal/module/classpath.c +0 -3
- data/ext/cached/ruby-1.6.8/internal/module/classpath.h +0 -8
- data/ext/cached/ruby-1.6.8/internal/node/block.h +0 -35
- data/ext/cached/ruby-1.6.8/internal/node/global_entry.h +0 -15
- data/ext/cached/ruby-1.6.8/internal/node/node_type_descrip.c +0 -149
- data/ext/cached/ruby-1.6.8/internal/node/nodeinfo.h +0 -69
- data/ext/cached/ruby-1.6.8/internal/proc/block.h +0 -35
- data/ext/cached/ruby-1.6.8/internal/tag/tag.h +0 -15
- data/ext/cached/ruby-1.6.8/internal/vm/instruction/insns_info.c +0 -39
- data/ext/cached/ruby-1.6.8/internal/vm/instruction/insns_info.h +0 -21
- data/ext/cached/ruby-1.6.8/internal/vm/iseq/insns_info.inc +0 -12
- data/ext/cached/ruby-1.6.8/internal/vm/iseq/iseq_load.inc +0 -9
- data/ext/cached/ruby-1.8.0/internal/binding/block.h +0 -37
- data/ext/cached/ruby-1.8.0/internal/method/method.h +0 -19
- data/ext/cached/ruby-1.8.0/internal/module/classpath.c +0 -27
- data/ext/cached/ruby-1.8.0/internal/node/block.h +0 -37
- data/ext/cached/ruby-1.8.0/internal/node/global_entry.h +0 -10
- data/ext/cached/ruby-1.8.0/internal/node/node_type_descrip.c +0 -155
- data/ext/cached/ruby-1.8.0/internal/node/nodeinfo.c +0 -5744
- data/ext/cached/ruby-1.8.0/internal/proc/block.h +0 -37
- data/ext/cached/ruby-1.8.0/internal/tag/tag.h +0 -15
- data/ext/cached/ruby-1.8.0/internal/vm/instruction/insns_info.c +0 -39
- data/ext/cached/ruby-1.8.0/internal/vm/instruction/insns_info.h +0 -21
- data/ext/cached/ruby-1.8.0/internal/vm/iseq/insns_info.inc +0 -12
- data/ext/cached/ruby-1.8.0/internal/vm/iseq/iseq_load.inc +0 -9
- data/ext/cached/ruby-1.8.1/internal/binding/block.h +0 -31
- data/ext/cached/ruby-1.8.1/internal/method/method.h +0 -19
- data/ext/cached/ruby-1.8.1/internal/module/classpath.c +0 -27
- data/ext/cached/ruby-1.8.1/internal/module/classpath.h +0 -14
- data/ext/cached/ruby-1.8.1/internal/node/block.h +0 -31
- data/ext/cached/ruby-1.8.1/internal/node/global_entry.h +0 -10
- data/ext/cached/ruby-1.8.1/internal/node/node_type_descrip.c +0 -154
- data/ext/cached/ruby-1.8.1/internal/node/nodeinfo.c +0 -5736
- data/ext/cached/ruby-1.8.1/internal/node/nodeinfo.h +0 -69
- data/ext/cached/ruby-1.8.1/internal/proc/block.h +0 -31
- data/ext/cached/ruby-1.8.1/internal/tag/tag.h +0 -16
- data/ext/cached/ruby-1.8.1/internal/vm/instruction/insns_info.c +0 -39
- data/ext/cached/ruby-1.8.1/internal/vm/instruction/insns_info.h +0 -21
- data/ext/cached/ruby-1.8.1/internal/vm/iseq/insns_info.inc +0 -12
- data/ext/cached/ruby-1.8.1/internal/vm/iseq/iseq_load.inc +0 -9
- data/ext/cached/ruby-1.8.2/internal/binding/block.h +0 -32
- data/ext/cached/ruby-1.8.2/internal/method/method.h +0 -19
- data/ext/cached/ruby-1.8.2/internal/module/classpath.c +0 -45
- data/ext/cached/ruby-1.8.2/internal/module/classpath.h +0 -17
- data/ext/cached/ruby-1.8.2/internal/node/block.h +0 -32
- data/ext/cached/ruby-1.8.2/internal/node/global_entry.h +0 -10
- data/ext/cached/ruby-1.8.2/internal/node/node_type_descrip.c +0 -154
- data/ext/cached/ruby-1.8.2/internal/node/nodeinfo.c +0 -5736
- data/ext/cached/ruby-1.8.2/internal/node/nodeinfo.h +0 -69
- data/ext/cached/ruby-1.8.2/internal/proc/block.h +0 -32
- data/ext/cached/ruby-1.8.2/internal/tag/tag.h +0 -16
- data/ext/cached/ruby-1.8.2/internal/vm/instruction/insns_info.c +0 -39
- data/ext/cached/ruby-1.8.2/internal/vm/instruction/insns_info.h +0 -21
- data/ext/cached/ruby-1.8.2/internal/vm/iseq/insns_info.inc +0 -12
- data/ext/cached/ruby-1.8.2/internal/vm/iseq/iseq_load.inc +0 -9
- data/ext/cached/ruby-1.8.3/internal/binding/block.h +0 -32
- data/ext/cached/ruby-1.8.3/internal/module/classpath.c +0 -45
- data/ext/cached/ruby-1.8.3/internal/module/classpath.h +0 -17
- data/ext/cached/ruby-1.8.3/internal/node/block.h +0 -32
- data/ext/cached/ruby-1.8.3/internal/node/global_entry.h +0 -10
- data/ext/cached/ruby-1.8.3/internal/node/nodeinfo.c +0 -5736
- data/ext/cached/ruby-1.8.3/internal/node/nodeinfo.h +0 -69
- data/ext/cached/ruby-1.8.3/internal/proc/block.h +0 -32
- data/ext/cached/ruby-1.8.3/internal/tag/tag.h +0 -16
- data/ext/cached/ruby-1.8.3/internal/vm/instruction/insns_info.c +0 -39
- data/ext/cached/ruby-1.8.3/internal/vm/instruction/insns_info.h +0 -21
- data/ext/cached/ruby-1.8.3/internal/vm/iseq/insns_info.inc +0 -12
- data/ext/cached/ruby-1.8.3/internal/vm/iseq/iseq_load.inc +0 -9
- data/ext/cached/ruby-1.8.7/internal/method/method.h +0 -20
- data/ext/cached/ruby-1.9.0/internal/module/classpath.c +0 -42
- data/ext/cached/ruby-1.9.0/internal/node/global_entry.h +0 -10
- data/ext/cached/ruby-1.9.0/internal/vm/iseq/iseq_load.inc +0 -13
- data/ext/cached/ruby-1.9.0/internal/yarv-headers/id.h +0 -83
- data/ext/cached/ruby-1.9.0/internal/yarv-headers/revision.h +0 -1
- data/ext/cached/ruby-1.9.0/internal/yarv-headers/transdb.h +0 -67
- data/ext/cached/ruby-1.9.0/internal/yarv-headers/version.h +0 -57
- data/ext/internal/module/cfp.h +0 -13
data/bin/ruby-internal-node-dump
CHANGED
data/bin/ruby-internal-obfuscate
CHANGED
@@ -3,8 +3,20 @@
|
|
3
3
|
|
4
4
|
#include <ruby.h>
|
5
5
|
|
6
|
+
#ifdef RUBY_VM
|
7
|
+
#include "method.h"
|
8
|
+
#endif
|
9
|
+
|
6
10
|
#include "internal/node/ruby_internal_node.h"
|
7
11
|
|
12
|
+
#ifndef FALSE
|
13
|
+
#define FALSE 0
|
14
|
+
#endif
|
15
|
+
|
16
|
+
#ifndef TRUE
|
17
|
+
#define TRUE (!FALSE)
|
18
|
+
#endif
|
19
|
+
|
8
20
|
struct METHOD {
|
9
21
|
VALUE klass, rklass;
|
10
22
|
VALUE recv;
|
@@ -1,10 +1,104 @@
|
|
1
1
|
#ifndef global_entry__h_
|
2
2
|
#define global_entry__h_
|
3
3
|
|
4
|
+
st_table * rb_global_tbl;
|
5
|
+
|
6
|
+
struct trace_var {
|
7
|
+
int removed;
|
8
|
+
void (*func)();
|
9
|
+
VALUE data;
|
10
|
+
struct trace_var *next;
|
11
|
+
};
|
12
|
+
struct global_variable {
|
13
|
+
int counter;
|
14
|
+
void *data;
|
15
|
+
VALUE (*getter)();
|
16
|
+
void (*setter)();
|
17
|
+
void (*marker)();
|
18
|
+
int block_trace;
|
19
|
+
struct trace_var *trace;
|
20
|
+
};
|
4
21
|
struct global_entry {
|
5
22
|
struct global_variable *var;
|
6
23
|
ID id;
|
7
24
|
};
|
25
|
+
static VALUE undef_getter();
|
26
|
+
static void undef_setter();
|
27
|
+
static void undef_marker();
|
28
|
+
static VALUE val_getter();
|
29
|
+
static void val_setter();
|
30
|
+
static void val_marker();
|
31
|
+
struct global_entry*
|
32
|
+
rb_global_entry(id)
|
33
|
+
ID id;
|
34
|
+
{
|
35
|
+
struct global_entry *entry;
|
36
|
+
|
37
|
+
if (!st_lookup(rb_global_tbl, id, (st_data_t *)&entry)) {
|
38
|
+
struct global_variable *var;
|
39
|
+
entry = ALLOC(struct global_entry);
|
40
|
+
var = ALLOC(struct global_variable);
|
41
|
+
entry->id = id;
|
42
|
+
entry->var = var;
|
43
|
+
var->counter = 1;
|
44
|
+
var->data = 0;
|
45
|
+
var->getter = undef_getter;
|
46
|
+
var->setter = undef_setter;
|
47
|
+
var->marker = undef_marker;
|
48
|
+
|
49
|
+
var->block_trace = 0;
|
50
|
+
var->trace = 0;
|
51
|
+
st_add_direct(rb_global_tbl, id, (st_data_t)entry);
|
52
|
+
}
|
53
|
+
return entry;
|
54
|
+
}
|
55
|
+
static VALUE
|
56
|
+
undef_getter(id)
|
57
|
+
ID id;
|
58
|
+
{
|
59
|
+
rb_warning("global variable `%s' not initialized", rb_id2name(id));
|
60
|
+
|
61
|
+
return Qnil;
|
62
|
+
}
|
63
|
+
static void
|
64
|
+
undef_setter(val, id, data, var)
|
65
|
+
VALUE val;
|
66
|
+
ID id;
|
67
|
+
void *data;
|
68
|
+
struct global_variable *var;
|
69
|
+
{
|
70
|
+
var->getter = val_getter;
|
71
|
+
var->setter = val_setter;
|
72
|
+
var->marker = val_marker;
|
73
|
+
|
74
|
+
var->data = (void*)val;
|
75
|
+
}
|
76
|
+
static void
|
77
|
+
undef_marker()
|
78
|
+
{
|
79
|
+
}
|
80
|
+
static VALUE
|
81
|
+
val_getter(id, val)
|
82
|
+
ID id;
|
83
|
+
VALUE val;
|
84
|
+
{
|
85
|
+
return val;
|
86
|
+
}
|
87
|
+
static void
|
88
|
+
val_setter(val, id, data, var)
|
89
|
+
VALUE val;
|
90
|
+
ID id;
|
91
|
+
void *data;
|
92
|
+
struct global_variable *var;
|
93
|
+
{
|
94
|
+
var->data = (void*)val;
|
95
|
+
}
|
96
|
+
static void
|
97
|
+
val_marker(data)
|
98
|
+
VALUE data;
|
99
|
+
{
|
100
|
+
if (data) rb_gc_mark_maybe(data);
|
101
|
+
}
|
8
102
|
|
9
103
|
#endif
|
10
104
|
|
@@ -2,44 +2,44 @@
|
|
2
2
|
#include "version.h"
|
3
3
|
|
4
4
|
Node_Type_Descrip node_type_descrips_unsorted[] = {
|
5
|
-
{ NODE_ALIAS,
|
5
|
+
{ NODE_ALIAS, NEN_2ND, NEN_1ST, NEN_NONE, "ALIAS" },
|
6
6
|
#ifdef HAVE_NODE_ALLOCA
|
7
|
-
{ NODE_ALLOCA,
|
7
|
+
{ NODE_ALLOCA, NEN_VALUE, NEN_CFNC, NEN_CNT, "ALLOCA" },
|
8
8
|
#endif
|
9
|
-
{ NODE_AND,
|
10
|
-
{ NODE_ARGS, NEN_REST, NEN_OPT,
|
11
|
-
{ NODE_ARGSCAT,
|
12
|
-
{ NODE_ARGSPUSH,
|
13
|
-
{ NODE_ARRAY,
|
14
|
-
{ NODE_ATTRASGN,
|
9
|
+
{ NODE_AND, NEN_2ND, NEN_1ST, NEN_NONE, "AND" },
|
10
|
+
{ NODE_ARGS, NEN_CNT, NEN_REST, NEN_OPT, "ARGS" },
|
11
|
+
{ NODE_ARGSCAT, NEN_BODY, NEN_HEAD, NEN_NONE, "ARGSCAT" },
|
12
|
+
{ NODE_ARGSPUSH, NEN_BODY, NEN_HEAD, NEN_NONE, "ARGSPUSH" },
|
13
|
+
{ NODE_ARRAY, NEN_ALEN, NEN_NEXT, NEN_HEAD, "ARRAY" },
|
14
|
+
{ NODE_ATTRASGN, NEN_RECV, NEN_MID, NEN_ARGS, "ATTRASGN" },
|
15
15
|
{ NODE_ATTRSET, NEN_VID, NEN_NONE, NEN_NONE, "ATTRSET" },
|
16
|
-
{ NODE_BACK_REF,
|
16
|
+
{ NODE_BACK_REF, NEN_CNT, NEN_NTH, NEN_NONE, "BACK_REF" },
|
17
17
|
{ NODE_BEGIN, NEN_BODY, NEN_NONE, NEN_NONE, "BEGIN" },
|
18
|
-
{ NODE_BLOCK,
|
18
|
+
{ NODE_BLOCK, NEN_NEXT, NEN_HEAD, NEN_NONE, "BLOCK" },
|
19
19
|
{ NODE_BLOCK_ARG, NEN_CNT, NEN_NONE, NEN_NONE, "BLOCK_ARG" },
|
20
20
|
{ NODE_BLOCK_PASS, NEN_BODY, NEN_ITER, NEN_NONE, "BLOCK_PASS" },
|
21
21
|
{ NODE_BMETHOD, NEN_CVAL, NEN_NONE, NEN_NONE, "BMETHOD" },
|
22
22
|
{ NODE_BREAK, NEN_STTS, NEN_NONE, NEN_NONE, "BREAK" },
|
23
|
-
{ NODE_CALL,
|
24
|
-
{ NODE_CASE,
|
23
|
+
{ NODE_CALL, NEN_RECV, NEN_MID, NEN_ARGS, "CALL" },
|
24
|
+
{ NODE_CASE, NEN_BODY, NEN_NEXT, NEN_HEAD, "CASE" },
|
25
25
|
{ NODE_CDECL, NEN_VALUE, NEN_VID, NEN_NONE, "CDECL" },
|
26
26
|
{ NODE_CFUNC, NEN_CFNC, NEN_ARGC, NEN_NONE, "CFUNC" },
|
27
|
-
{ NODE_CLASS,
|
28
|
-
{ NODE_COLON2,
|
27
|
+
{ NODE_CLASS, NEN_BODY, NEN_SUPER, NEN_CPATH, "CLASS" },
|
28
|
+
{ NODE_COLON2, NEN_MID, NEN_HEAD, NEN_NONE, "COLON2" },
|
29
29
|
{ NODE_COLON3, NEN_MID, NEN_NONE, NEN_NONE, "COLON3" },
|
30
30
|
{ NODE_CONST, NEN_VID, NEN_NONE, NEN_NONE, "CONST" },
|
31
|
-
{ NODE_CREF, NEN_BODY,
|
31
|
+
{ NODE_CREF, NEN_BODY, NEN_CLSS, NEN_NEXT, "CREF" },
|
32
32
|
{ NODE_CVAR, NEN_VID, NEN_NONE, NEN_NONE, "CVAR" },
|
33
33
|
{ NODE_CVASGN, NEN_VALUE, NEN_VID, NEN_NONE, "CVASGN" },
|
34
34
|
{ NODE_CVDECL, NEN_VALUE, NEN_VID, NEN_NONE, "CVDECL" },
|
35
35
|
{ NODE_DASGN, NEN_VALUE, NEN_VID, NEN_NONE, "DASGN" },
|
36
36
|
{ NODE_DASGN_CURR, NEN_VALUE, NEN_VID, NEN_NONE, "DASGN_CURR" },
|
37
37
|
{ NODE_DEFINED, NEN_HEAD, NEN_NONE, NEN_NONE, "DEFINED" },
|
38
|
-
{ NODE_DEFN,
|
39
|
-
{ NODE_DEFS,
|
38
|
+
{ NODE_DEFN, NEN_NOEX, NEN_MID, NEN_DEFN, "DEFN" },
|
39
|
+
{ NODE_DEFS, NEN_RECV, NEN_MID, NEN_DEFN, "DEFS" },
|
40
40
|
{ NODE_DMETHOD, NEN_CVAL, NEN_NONE, NEN_NONE, "DMETHOD" },
|
41
|
-
{ NODE_DOT2,
|
42
|
-
{ NODE_DOT3,
|
41
|
+
{ NODE_DOT2, NEN_END, NEN_BEG, NEN_STATE, "DOT2" },
|
42
|
+
{ NODE_DOT3, NEN_END, NEN_BEG, NEN_STATE, "DOT3" },
|
43
43
|
{ NODE_DREGX, NEN_LIT, NEN_CFLAG, NEN_NEXT, "DREGX" },
|
44
44
|
{ NODE_DREGX_ONCE, NEN_LIT, NEN_CFLAG, NEN_NEXT, "DREGX_ONCE" },
|
45
45
|
{ NODE_DSTR, NEN_LIT, NEN_NEXT, NEN_NONE, "DSTR" },
|
@@ -49,45 +49,45 @@ Node_Type_Descrip node_type_descrips_unsorted[] = {
|
|
49
49
|
{ NODE_ENSURE, NEN_HEAD, NEN_ENSR, NEN_NONE, "ENSURE" },
|
50
50
|
{ NODE_EVSTR, NEN_BODY, NEN_NONE, NEN_NONE, "EVSTR" },
|
51
51
|
{ NODE_FALSE, NEN_NONE, NEN_NONE, NEN_NONE, "FALSE" },
|
52
|
-
{ NODE_FBODY,
|
53
|
-
{ NODE_FCALL,
|
54
|
-
{ NODE_FLIP2,
|
55
|
-
{ NODE_FLIP3,
|
52
|
+
{ NODE_FBODY, NEN_MID, NEN_ORIG, NEN_HEAD, "FBODY" },
|
53
|
+
{ NODE_FCALL, NEN_MID, NEN_ARGS, NEN_NONE, "FCALL" },
|
54
|
+
{ NODE_FLIP2, NEN_CNT, NEN_END, NEN_BEG, "FLIP2" },
|
55
|
+
{ NODE_FLIP3, NEN_CNT, NEN_END, NEN_BEG, "FLIP3" },
|
56
56
|
{ NODE_FOR, NEN_BODY, NEN_ITER, NEN_VAR, "FOR" },
|
57
57
|
{ NODE_GASGN, NEN_VALUE, NEN_VID, NEN_ENTRY, "GASGN" },
|
58
58
|
{ NODE_GVAR, NEN_VID, NEN_ENTRY, NEN_NONE, "GVAR" },
|
59
59
|
{ NODE_HASH, NEN_HEAD, NEN_NONE, NEN_NONE, "HASH" },
|
60
60
|
{ NODE_IASGN, NEN_VALUE, NEN_VID, NEN_NONE, "IASGN" },
|
61
|
-
{ NODE_IF,
|
62
|
-
{ NODE_IFUNC, NEN_CFNC,
|
61
|
+
{ NODE_IF, NEN_BODY, NEN_COND, NEN_ELSE, "IF" },
|
62
|
+
{ NODE_IFUNC, NEN_CFNC, NEN_STATE, NEN_TVAL, "IFUNC" },
|
63
63
|
{ NODE_ITER, NEN_BODY, NEN_ITER, NEN_VAR, "ITER" },
|
64
64
|
{ NODE_IVAR, NEN_VID, NEN_NONE, NEN_NONE, "IVAR" },
|
65
|
-
{ NODE_LASGN, NEN_VALUE,
|
65
|
+
{ NODE_LASGN, NEN_VALUE, NEN_CNT, NEN_VID, "LASGN" },
|
66
66
|
{ NODE_LIT, NEN_LIT, NEN_NONE, NEN_NONE, "LIT" },
|
67
|
-
{ NODE_LVAR,
|
68
|
-
{ NODE_MASGN, NEN_ARGS, NEN_HEAD,
|
69
|
-
{ NODE_MATCH,
|
67
|
+
{ NODE_LVAR, NEN_CNT, NEN_VID, NEN_NONE, "LVAR" },
|
68
|
+
{ NODE_MASGN, NEN_VALUE, NEN_ARGS, NEN_HEAD, "MASGN" },
|
69
|
+
{ NODE_MATCH, NEN_VALUE, NEN_LIT, NEN_NONE, "MATCH" },
|
70
70
|
{ NODE_MATCH2, NEN_VALUE, NEN_RECV, NEN_NONE, "MATCH2" },
|
71
71
|
{ NODE_MATCH3, NEN_VALUE, NEN_RECV, NEN_NONE, "MATCH3" },
|
72
72
|
{ NODE_MEMO, NEN_NONE, NEN_NONE, NEN_NONE, "MEMO" },
|
73
73
|
{ NODE_METHOD, NEN_BODY, NEN_NOEX, NEN_NONE, "METHOD" },
|
74
|
-
{ NODE_MODULE,
|
74
|
+
{ NODE_MODULE, NEN_BODY, NEN_CPATH, NEN_NONE, "MODULE" },
|
75
75
|
{ NODE_NEWLINE, NEN_NEXT, NEN_NONE, NEN_NONE, "NEWLINE" },
|
76
76
|
{ NODE_NEXT, NEN_STTS, NEN_NONE, NEN_NONE, "NEXT" },
|
77
77
|
{ NODE_NIL, NEN_NONE, NEN_NONE, NEN_NONE, "NIL" },
|
78
78
|
{ NODE_NOT, NEN_BODY, NEN_NONE, NEN_NONE, "NOT" },
|
79
|
-
{ NODE_NTH_REF,
|
79
|
+
{ NODE_NTH_REF, NEN_CNT, NEN_NTH, NEN_NONE, "NTH_REF" },
|
80
80
|
{ NODE_OPT_N, NEN_BODY, NEN_NONE, NEN_NONE, "OPT_N" },
|
81
|
-
{ NODE_OP_ASGN1,
|
82
|
-
{ NODE_OP_ASGN2, NEN_VALUE,
|
83
|
-
{ NODE_OP_ASGN2_ARG, NEN_VID, NEN_AID,
|
81
|
+
{ NODE_OP_ASGN1, NEN_RECV, NEN_MID, NEN_ARGS, "OP_ASGN1" },
|
82
|
+
{ NODE_OP_ASGN2, NEN_VALUE, NEN_RECV, NEN_NEXT, "OP_ASGN2" },
|
83
|
+
{ NODE_OP_ASGN2_ARG, NEN_MID, NEN_VID, NEN_AID, "OP_ASGN2_ARG" },
|
84
84
|
{ NODE_OP_ASGN_AND, NEN_VALUE, NEN_RECV, NEN_NONE, "OP_ASGN_AND" },
|
85
|
-
{ NODE_OP_ASGN_OR,
|
86
|
-
{ NODE_OR,
|
85
|
+
{ NODE_OP_ASGN_OR, NEN_VALUE, NEN_RECV, NEN_AID, "OP_ASGN_OR" },
|
86
|
+
{ NODE_OR, NEN_2ND, NEN_1ST, NEN_NONE, "OR" },
|
87
87
|
{ NODE_POSTEXE, NEN_NONE, NEN_NONE, NEN_NONE, "POSTEXE" },
|
88
88
|
{ NODE_REDO, NEN_NONE, NEN_NONE, NEN_NONE, "REDO" },
|
89
|
-
{ NODE_RESBODY,
|
90
|
-
{ NODE_RESCUE,
|
89
|
+
{ NODE_RESBODY, NEN_BODY, NEN_ARGS, NEN_HEAD, "RESBODY" },
|
90
|
+
{ NODE_RESCUE, NEN_RESQ, NEN_ELSE, NEN_HEAD, "RESCUE" },
|
91
91
|
{ NODE_RETRY, NEN_NONE, NEN_NONE, NEN_NONE, "RETRY" },
|
92
92
|
{ NODE_RETURN, NEN_STTS, NEN_NONE, NEN_NONE, "RETURN" },
|
93
93
|
{ NODE_SCLASS, NEN_BODY, NEN_RECV, NEN_NONE, "SCLASS" },
|
@@ -101,12 +101,12 @@ Node_Type_Descrip node_type_descrips_unsorted[] = {
|
|
101
101
|
{ NODE_TRUE, NEN_NONE, NEN_NONE, NEN_NONE, "TRUE" },
|
102
102
|
{ NODE_UNDEF, NEN_MID, NEN_NONE, NEN_NONE, "UNDEF" },
|
103
103
|
{ NODE_UNTIL, NEN_BODY, NEN_COND, NEN_STATE, "UNTIL" },
|
104
|
-
{ NODE_VALIAS,
|
104
|
+
{ NODE_VALIAS, NEN_2ND, NEN_1ST, NEN_NONE, "VALIAS" },
|
105
105
|
{ NODE_VCALL, NEN_MID, NEN_NONE, NEN_NONE, "VCALL" },
|
106
|
-
{ NODE_WHEN,
|
106
|
+
{ NODE_WHEN, NEN_BODY, NEN_NEXT, NEN_HEAD, "WHEN" },
|
107
107
|
{ NODE_WHILE, NEN_BODY, NEN_COND, NEN_STATE, "WHILE" },
|
108
108
|
{ NODE_XSTR, NEN_LIT, NEN_NONE, NEN_NONE, "XSTR" },
|
109
|
-
{ NODE_YIELD,
|
109
|
+
{ NODE_YIELD, NEN_STATE, NEN_HEAD, NEN_NONE, "YIELD" },
|
110
110
|
{ NODE_ZARRAY, NEN_NONE, NEN_NONE, NEN_NONE, "ZARRAY" },
|
111
111
|
{ NODE_ZSUPER, NEN_NONE, NEN_NONE, NEN_NONE, "ZSUPER" },
|
112
112
|
{ NODE_LAST, NEN_NONE, NEN_NONE, NEN_NONE, "LAST" },
|
@@ -228,7 +228,7 @@ VALUE dump_node_elem(enum Node_Elem_Name nen, NODE * n, VALUE node_hash)
|
|
228
228
|
else
|
229
229
|
{
|
230
230
|
path = rb_class_path(klass);
|
231
|
-
if(
|
231
|
+
if(StringValuePtr(path)[0] == '#')
|
232
232
|
{
|
233
233
|
rb_raise(rb_eArgError, "cannot dump anonymous class");
|
234
234
|
}
|
@@ -322,7 +322,7 @@ VALUE dump_node_elem(enum Node_Elem_Name nen, NODE * n, VALUE node_hash)
|
|
322
322
|
else
|
323
323
|
{
|
324
324
|
path = rb_class_path(klass);
|
325
|
-
if(
|
325
|
+
if(StringValuePtr(path)[0] == '#')
|
326
326
|
{
|
327
327
|
rb_raise(rb_eArgError, "cannot dump anonymous class");
|
328
328
|
}
|
@@ -565,7 +565,7 @@ VALUE dump_node_elem(enum Node_Elem_Name nen, NODE * n, VALUE node_hash)
|
|
565
565
|
else
|
566
566
|
{
|
567
567
|
path = rb_class_path(klass);
|
568
|
-
if(
|
568
|
+
if(StringValuePtr(path)[0] == '#')
|
569
569
|
{
|
570
570
|
rb_raise(rb_eArgError, "cannot dump anonymous class");
|
571
571
|
}
|
@@ -715,7 +715,7 @@ VALUE dump_node_elem(enum Node_Elem_Name nen, NODE * n, VALUE node_hash)
|
|
715
715
|
else
|
716
716
|
{
|
717
717
|
path = rb_class_path(klass);
|
718
|
-
if(
|
718
|
+
if(StringValuePtr(path)[0] == '#')
|
719
719
|
{
|
720
720
|
rb_raise(rb_eArgError, "cannot dump anonymous class");
|
721
721
|
}
|
@@ -903,7 +903,7 @@ VALUE dump_node_elem(enum Node_Elem_Name nen, NODE * n, VALUE node_hash)
|
|
903
903
|
else
|
904
904
|
{
|
905
905
|
path = rb_class_path(klass);
|
906
|
-
if(
|
906
|
+
if(StringValuePtr(path)[0] == '#')
|
907
907
|
{
|
908
908
|
rb_raise(rb_eArgError, "cannot dump anonymous class");
|
909
909
|
}
|
@@ -1158,20 +1158,23 @@ void load_node_elem(enum Node_Elem_Name nen, VALUE v, NODE * n, VALUE node_hash,
|
|
1158
1158
|
}
|
1159
1159
|
case NEN_CLSS:
|
1160
1160
|
{
|
1161
|
+
int flags;
|
1161
1162
|
Check_Type(v, T_ARRAY);
|
1162
1163
|
if(RARRAY_LEN(v) != 2)
|
1163
1164
|
{
|
1164
1165
|
rb_raise(rb_eArgError, "wrong size for array");
|
1165
1166
|
}
|
1166
|
-
|
1167
|
+
flags = NUM2INT(RARRAY_PTR(v)[0]);
|
1167
1168
|
switch(flags & T_MASK)
|
1168
1169
|
{
|
1169
1170
|
case T_CLASS:
|
1170
1171
|
case T_MODULE:
|
1171
1172
|
{
|
1172
|
-
VALUE str
|
1173
|
+
VALUE str, klass;
|
1174
|
+
|
1175
|
+
str = RARRAY_PTR(v)[1];
|
1173
1176
|
Check_Type(str, T_STRING);
|
1174
|
-
|
1177
|
+
klass = rb_path2class(StringValuePtr(str));
|
1175
1178
|
if(flags & FL_SINGLETON)
|
1176
1179
|
{
|
1177
1180
|
*(VALUE *)(&n->nd_clss) =
|
@@ -1247,20 +1250,23 @@ void load_node_elem(enum Node_Elem_Name nen, VALUE v, NODE * n, VALUE node_hash,
|
|
1247
1250
|
}
|
1248
1251
|
case NEN_CVAL:
|
1249
1252
|
{
|
1253
|
+
int flags;
|
1250
1254
|
Check_Type(v, T_ARRAY);
|
1251
1255
|
if(RARRAY_LEN(v) != 2)
|
1252
1256
|
{
|
1253
1257
|
rb_raise(rb_eArgError, "wrong size for array");
|
1254
1258
|
}
|
1255
|
-
|
1259
|
+
flags = NUM2INT(RARRAY_PTR(v)[0]);
|
1256
1260
|
switch(flags & T_MASK)
|
1257
1261
|
{
|
1258
1262
|
case T_CLASS:
|
1259
1263
|
case T_MODULE:
|
1260
1264
|
{
|
1261
|
-
VALUE str
|
1265
|
+
VALUE str, klass;
|
1266
|
+
|
1267
|
+
str = RARRAY_PTR(v)[1];
|
1262
1268
|
Check_Type(str, T_STRING);
|
1263
|
-
|
1269
|
+
klass = rb_path2class(StringValuePtr(str));
|
1264
1270
|
if(flags & FL_SINGLETON)
|
1265
1271
|
{
|
1266
1272
|
*(VALUE *)(&n->nd_cval) =
|
@@ -1486,20 +1492,23 @@ void load_node_elem(enum Node_Elem_Name nen, VALUE v, NODE * n, VALUE node_hash,
|
|
1486
1492
|
}
|
1487
1493
|
case NEN_LIT:
|
1488
1494
|
{
|
1495
|
+
int flags;
|
1489
1496
|
Check_Type(v, T_ARRAY);
|
1490
1497
|
if(RARRAY_LEN(v) != 2)
|
1491
1498
|
{
|
1492
1499
|
rb_raise(rb_eArgError, "wrong size for array");
|
1493
1500
|
}
|
1494
|
-
|
1501
|
+
flags = NUM2INT(RARRAY_PTR(v)[0]);
|
1495
1502
|
switch(flags & T_MASK)
|
1496
1503
|
{
|
1497
1504
|
case T_CLASS:
|
1498
1505
|
case T_MODULE:
|
1499
1506
|
{
|
1500
|
-
VALUE str
|
1507
|
+
VALUE str, klass;
|
1508
|
+
|
1509
|
+
str = RARRAY_PTR(v)[1];
|
1501
1510
|
Check_Type(str, T_STRING);
|
1502
|
-
|
1511
|
+
klass = rb_path2class(StringValuePtr(str));
|
1503
1512
|
if(flags & FL_SINGLETON)
|
1504
1513
|
{
|
1505
1514
|
*(VALUE *)(&n->nd_lit) =
|
@@ -1644,20 +1653,23 @@ void load_node_elem(enum Node_Elem_Name nen, VALUE v, NODE * n, VALUE node_hash,
|
|
1644
1653
|
}
|
1645
1654
|
case NEN_ORIG:
|
1646
1655
|
{
|
1656
|
+
int flags;
|
1647
1657
|
Check_Type(v, T_ARRAY);
|
1648
1658
|
if(RARRAY_LEN(v) != 2)
|
1649
1659
|
{
|
1650
1660
|
rb_raise(rb_eArgError, "wrong size for array");
|
1651
1661
|
}
|
1652
|
-
|
1662
|
+
flags = NUM2INT(RARRAY_PTR(v)[0]);
|
1653
1663
|
switch(flags & T_MASK)
|
1654
1664
|
{
|
1655
1665
|
case T_CLASS:
|
1656
1666
|
case T_MODULE:
|
1657
1667
|
{
|
1658
|
-
VALUE str
|
1668
|
+
VALUE str, klass;
|
1669
|
+
|
1670
|
+
str = RARRAY_PTR(v)[1];
|
1659
1671
|
Check_Type(str, T_STRING);
|
1660
|
-
|
1672
|
+
klass = rb_path2class(StringValuePtr(str));
|
1661
1673
|
if(flags & FL_SINGLETON)
|
1662
1674
|
{
|
1663
1675
|
*(VALUE *)(&n->nd_orig) =
|
@@ -1864,20 +1876,23 @@ void load_node_elem(enum Node_Elem_Name nen, VALUE v, NODE * n, VALUE node_hash,
|
|
1864
1876
|
}
|
1865
1877
|
case NEN_TVAL:
|
1866
1878
|
{
|
1879
|
+
int flags;
|
1867
1880
|
Check_Type(v, T_ARRAY);
|
1868
1881
|
if(RARRAY_LEN(v) != 2)
|
1869
1882
|
{
|
1870
1883
|
rb_raise(rb_eArgError, "wrong size for array");
|
1871
1884
|
}
|
1872
|
-
|
1885
|
+
flags = NUM2INT(RARRAY_PTR(v)[0]);
|
1873
1886
|
switch(flags & T_MASK)
|
1874
1887
|
{
|
1875
1888
|
case T_CLASS:
|
1876
1889
|
case T_MODULE:
|
1877
1890
|
{
|
1878
|
-
VALUE str
|
1891
|
+
VALUE str, klass;
|
1892
|
+
|
1893
|
+
str = RARRAY_PTR(v)[1];
|
1879
1894
|
Check_Type(str, T_STRING);
|
1880
|
-
|
1895
|
+
klass = rb_path2class(StringValuePtr(str));
|
1881
1896
|
if(flags & FL_SINGLETON)
|
1882
1897
|
{
|
1883
1898
|
*(VALUE *)(&n->nd_tval) =
|
@@ -2911,10 +2926,10 @@ void define_node_subclass_methods()
|
|
2911
2926
|
rb_iv_set(rb_cALIAS, "__member__", members);
|
2912
2927
|
rb_iv_set(rb_cALIAS, "__type__", INT2NUM(NODE_ALIAS));
|
2913
2928
|
rb_define_singleton_method(rb_cALIAS, "members", node_s_members, 0);
|
2914
|
-
rb_define_method(rb_cALIAS, "first", node_1st, 0);
|
2915
|
-
rb_ary_push(members, rb_str_new2("first"));
|
2916
2929
|
rb_define_method(rb_cALIAS, "second", node_2nd, 0);
|
2917
2930
|
rb_ary_push(members, rb_str_new2("second"));
|
2931
|
+
rb_define_method(rb_cALIAS, "first", node_1st, 0);
|
2932
|
+
rb_ary_push(members, rb_str_new2("first"));
|
2918
2933
|
}
|
2919
2934
|
|
2920
2935
|
/* Document-class: Node::ALLOCA
|
@@ -2932,18 +2947,18 @@ void define_node_subclass_methods()
|
|
2932
2947
|
rb_iv_set(rb_cALLOCA, "__type__", INT2NUM(NODE_ALLOCA));
|
2933
2948
|
rb_define_singleton_method(rb_cALLOCA, "members", node_s_members, 0);
|
2934
2949
|
|
2935
|
-
/* Document-method: cfnc
|
2936
|
-
* a pointer to the allocated memory
|
2937
|
-
*/
|
2938
|
-
rb_define_method(rb_cALLOCA, "cfnc", node_cfnc, 0);
|
2939
|
-
rb_ary_push(members, rb_str_new2("cfnc"));
|
2940
|
-
|
2941
2950
|
/* Document-method: value
|
2942
2951
|
* a pointer to the previously allocated temporary node
|
2943
2952
|
*/
|
2944
2953
|
rb_define_method(rb_cALLOCA, "value", node_value, 0);
|
2945
2954
|
rb_ary_push(members, rb_str_new2("value"));
|
2946
2955
|
|
2956
|
+
/* Document-method: cfnc
|
2957
|
+
* a pointer to the allocated memory
|
2958
|
+
*/
|
2959
|
+
rb_define_method(rb_cALLOCA, "cfnc", node_cfnc, 0);
|
2960
|
+
rb_ary_push(members, rb_str_new2("cfnc"));
|
2961
|
+
|
2947
2962
|
/* Document-method: cnt
|
2948
2963
|
* the number of bytes allocated
|
2949
2964
|
*/
|
@@ -2967,17 +2982,17 @@ void define_node_subclass_methods()
|
|
2967
2982
|
rb_iv_set(rb_cAND, "__type__", INT2NUM(NODE_AND));
|
2968
2983
|
rb_define_singleton_method(rb_cAND, "members", node_s_members, 0);
|
2969
2984
|
|
2970
|
-
/* Document-method: first
|
2971
|
-
* the expression on the left hand side
|
2972
|
-
*/
|
2973
|
-
rb_define_method(rb_cAND, "first", node_1st, 0);
|
2974
|
-
rb_ary_push(members, rb_str_new2("first"));
|
2975
|
-
|
2976
2985
|
/* Document-method: second
|
2977
2986
|
* the expression on the right hand side
|
2978
2987
|
*/
|
2979
2988
|
rb_define_method(rb_cAND, "second", node_2nd, 0);
|
2980
2989
|
rb_ary_push(members, rb_str_new2("second"));
|
2990
|
+
|
2991
|
+
/* Document-method: first
|
2992
|
+
* the expression on the left hand side
|
2993
|
+
*/
|
2994
|
+
rb_define_method(rb_cAND, "first", node_1st, 0);
|
2995
|
+
rb_ary_push(members, rb_str_new2("first"));
|
2981
2996
|
}
|
2982
2997
|
|
2983
2998
|
/* Document-class: Node::ARGS
|
@@ -2991,6 +3006,12 @@ void define_node_subclass_methods()
|
|
2991
3006
|
rb_iv_set(rb_cARGS, "__type__", INT2NUM(NODE_ARGS));
|
2992
3007
|
rb_define_singleton_method(rb_cARGS, "members", node_s_members, 0);
|
2993
3008
|
|
3009
|
+
/* Document-method: cnt
|
3010
|
+
* the number of required arguments
|
3011
|
+
*/
|
3012
|
+
rb_define_method(rb_cARGS, "cnt", node_cnt, 0);
|
3013
|
+
rb_ary_push(members, rb_str_new2("cnt"));
|
3014
|
+
|
2994
3015
|
/* Document-method: rest
|
2995
3016
|
* an assignment node to assign the rest arg, if it is present
|
2996
3017
|
*/
|
@@ -3003,12 +3024,6 @@ void define_node_subclass_methods()
|
|
3003
3024
|
*/
|
3004
3025
|
rb_define_method(rb_cARGS, "opt", node_opt, 0);
|
3005
3026
|
rb_ary_push(members, rb_str_new2("opt"));
|
3006
|
-
|
3007
|
-
/* Document-method: cnt
|
3008
|
-
* the number of required arguments
|
3009
|
-
*/
|
3010
|
-
rb_define_method(rb_cARGS, "cnt", node_cnt, 0);
|
3011
|
-
rb_ary_push(members, rb_str_new2("cnt"));
|
3012
3027
|
}
|
3013
3028
|
|
3014
3029
|
/* Document-class: Node::ARGSCAT
|
@@ -3028,18 +3043,18 @@ void define_node_subclass_methods()
|
|
3028
3043
|
rb_iv_set(rb_cARGSCAT, "__type__", INT2NUM(NODE_ARGSCAT));
|
3029
3044
|
rb_define_singleton_method(rb_cARGSCAT, "members", node_s_members, 0);
|
3030
3045
|
|
3031
|
-
/* Document-method: head
|
3032
|
-
* a list of fixed arguments
|
3033
|
-
*/
|
3034
|
-
rb_define_method(rb_cARGSCAT, "head", node_head, 0);
|
3035
|
-
rb_ary_push(members, rb_str_new2("head"));
|
3036
|
-
|
3037
3046
|
/* Document-method: body
|
3038
3047
|
* the last argument, which will be splatted onto the end of the
|
3039
3048
|
* fixed arguments
|
3040
3049
|
*/
|
3041
3050
|
rb_define_method(rb_cARGSCAT, "body", node_body, 0);
|
3042
3051
|
rb_ary_push(members, rb_str_new2("body"));
|
3052
|
+
|
3053
|
+
/* Document-method: head
|
3054
|
+
* a list of fixed arguments
|
3055
|
+
*/
|
3056
|
+
rb_define_method(rb_cARGSCAT, "head", node_head, 0);
|
3057
|
+
rb_ary_push(members, rb_str_new2("head"));
|
3043
3058
|
}
|
3044
3059
|
|
3045
3060
|
/* Document-class: Node::ARGSPUSH
|
@@ -3056,10 +3071,10 @@ void define_node_subclass_methods()
|
|
3056
3071
|
rb_iv_set(rb_cARGSPUSH, "__member__", members);
|
3057
3072
|
rb_iv_set(rb_cARGSPUSH, "__type__", INT2NUM(NODE_ARGSPUSH));
|
3058
3073
|
rb_define_singleton_method(rb_cARGSPUSH, "members", node_s_members, 0);
|
3059
|
-
rb_define_method(rb_cARGSPUSH, "head", node_head, 0);
|
3060
|
-
rb_ary_push(members, rb_str_new2("head"));
|
3061
3074
|
rb_define_method(rb_cARGSPUSH, "body", node_body, 0);
|
3062
3075
|
rb_ary_push(members, rb_str_new2("body"));
|
3076
|
+
rb_define_method(rb_cARGSPUSH, "head", node_head, 0);
|
3077
|
+
rb_ary_push(members, rb_str_new2("head"));
|
3063
3078
|
}
|
3064
3079
|
|
3065
3080
|
/* Document-class: Node::ARRAY
|
@@ -3074,12 +3089,6 @@ void define_node_subclass_methods()
|
|
3074
3089
|
rb_iv_set(rb_cARRAY, "__member__", members);
|
3075
3090
|
rb_iv_set(rb_cARRAY, "__type__", INT2NUM(NODE_ARRAY));
|
3076
3091
|
rb_define_singleton_method(rb_cARRAY, "members", node_s_members, 0);
|
3077
|
-
|
3078
|
-
/* Document-method: head
|
3079
|
-
* the first element of the array
|
3080
|
-
*/
|
3081
|
-
rb_define_method(rb_cARRAY, "head", node_head, 0);
|
3082
|
-
rb_ary_push(members, rb_str_new2("head"));
|
3083
3092
|
rb_define_method(rb_cARRAY, "alen", node_alen, 0);
|
3084
3093
|
rb_ary_push(members, rb_str_new2("alen"));
|
3085
3094
|
|
@@ -3088,6 +3097,12 @@ void define_node_subclass_methods()
|
|
3088
3097
|
*/
|
3089
3098
|
rb_define_method(rb_cARRAY, "next", node_next, 0);
|
3090
3099
|
rb_ary_push(members, rb_str_new2("next"));
|
3100
|
+
|
3101
|
+
/* Document-method: head
|
3102
|
+
* the first element of the array
|
3103
|
+
*/
|
3104
|
+
rb_define_method(rb_cARRAY, "head", node_head, 0);
|
3105
|
+
rb_ary_push(members, rb_str_new2("head"));
|
3091
3106
|
}
|
3092
3107
|
|
3093
3108
|
/* Document-class: Node::ATTRASGN
|
@@ -3104,11 +3119,11 @@ void define_node_subclass_methods()
|
|
3104
3119
|
rb_iv_set(rb_cATTRASGN, "__type__", INT2NUM(NODE_ATTRASGN));
|
3105
3120
|
rb_define_singleton_method(rb_cATTRASGN, "members", node_s_members, 0);
|
3106
3121
|
|
3107
|
-
/* Document-method:
|
3108
|
-
* the
|
3122
|
+
/* Document-method: recv
|
3123
|
+
* the receiver of the method
|
3109
3124
|
*/
|
3110
|
-
rb_define_method(rb_cATTRASGN, "
|
3111
|
-
rb_ary_push(members, rb_str_new2("
|
3125
|
+
rb_define_method(rb_cATTRASGN, "recv", node_recv, 0);
|
3126
|
+
rb_ary_push(members, rb_str_new2("recv"));
|
3112
3127
|
|
3113
3128
|
/* Document-method: mid
|
3114
3129
|
* the id of the attribute, with a trailing '=' sign
|
@@ -3116,11 +3131,11 @@ void define_node_subclass_methods()
|
|
3116
3131
|
rb_define_method(rb_cATTRASGN, "mid", node_mid, 0);
|
3117
3132
|
rb_ary_push(members, rb_str_new2("mid"));
|
3118
3133
|
|
3119
|
-
/* Document-method:
|
3120
|
-
* the
|
3134
|
+
/* Document-method: args
|
3135
|
+
* the arguments to the method
|
3121
3136
|
*/
|
3122
|
-
rb_define_method(rb_cATTRASGN, "
|
3123
|
-
rb_ary_push(members, rb_str_new2("
|
3137
|
+
rb_define_method(rb_cATTRASGN, "args", node_args, 0);
|
3138
|
+
rb_ary_push(members, rb_str_new2("args"));
|
3124
3139
|
}
|
3125
3140
|
|
3126
3141
|
/* Document-class: Node::ATTRSET
|
@@ -3159,19 +3174,19 @@ void define_node_subclass_methods()
|
|
3159
3174
|
rb_iv_set(rb_cBACK_REF, "__type__", INT2NUM(NODE_BACK_REF));
|
3160
3175
|
rb_define_singleton_method(rb_cBACK_REF, "members", node_s_members, 0);
|
3161
3176
|
|
3162
|
-
/* Document-method: nth
|
3163
|
-
* the integer representation of the character of the variable to
|
3164
|
-
* reference, one of '&', '`', '\'', or '+'
|
3165
|
-
*/
|
3166
|
-
rb_define_method(rb_cBACK_REF, "nth", node_nth, 0);
|
3167
|
-
rb_ary_push(members, rb_str_new2("nth"));
|
3168
|
-
|
3169
3177
|
/* Document-method: cnt
|
3170
3178
|
* the index into the local variable table where the match data is
|
3171
3179
|
* stored
|
3172
3180
|
*/
|
3173
3181
|
rb_define_method(rb_cBACK_REF, "cnt", node_cnt, 0);
|
3174
3182
|
rb_ary_push(members, rb_str_new2("cnt"));
|
3183
|
+
|
3184
|
+
/* Document-method: nth
|
3185
|
+
* the integer representation of the character of the variable to
|
3186
|
+
* reference, one of '&', '`', '\'', or '+'
|
3187
|
+
*/
|
3188
|
+
rb_define_method(rb_cBACK_REF, "nth", node_nth, 0);
|
3189
|
+
rb_ary_push(members, rb_str_new2("nth"));
|
3175
3190
|
}
|
3176
3191
|
|
3177
3192
|
/* Document-class: Node::BEGIN
|
@@ -3208,17 +3223,17 @@ void define_node_subclass_methods()
|
|
3208
3223
|
rb_iv_set(rb_cBLOCK, "__type__", INT2NUM(NODE_BLOCK));
|
3209
3224
|
rb_define_singleton_method(rb_cBLOCK, "members", node_s_members, 0);
|
3210
3225
|
|
3211
|
-
/* Document-method: head
|
3212
|
-
* the first expression in the block of code
|
3213
|
-
*/
|
3214
|
-
rb_define_method(rb_cBLOCK, "head", node_head, 0);
|
3215
|
-
rb_ary_push(members, rb_str_new2("head"));
|
3216
|
-
|
3217
3226
|
/* Document-method: next
|
3218
3227
|
* the second expression in the block of code
|
3219
3228
|
*/
|
3220
3229
|
rb_define_method(rb_cBLOCK, "next", node_next, 0);
|
3221
3230
|
rb_ary_push(members, rb_str_new2("next"));
|
3231
|
+
|
3232
|
+
/* Document-method: head
|
3233
|
+
* the first expression in the block of code
|
3234
|
+
*/
|
3235
|
+
rb_define_method(rb_cBLOCK, "head", node_head, 0);
|
3236
|
+
rb_ary_push(members, rb_str_new2("head"));
|
3222
3237
|
}
|
3223
3238
|
|
3224
3239
|
/* Document-class: Node::BLOCK_ARG
|
@@ -3326,11 +3341,11 @@ void define_node_subclass_methods()
|
|
3326
3341
|
rb_iv_set(rb_cCALL, "__type__", INT2NUM(NODE_CALL));
|
3327
3342
|
rb_define_singleton_method(rb_cCALL, "members", node_s_members, 0);
|
3328
3343
|
|
3329
|
-
/* Document-method:
|
3330
|
-
* the
|
3344
|
+
/* Document-method: recv
|
3345
|
+
* the receiver of the method
|
3331
3346
|
*/
|
3332
|
-
rb_define_method(rb_cCALL, "
|
3333
|
-
rb_ary_push(members, rb_str_new2("
|
3347
|
+
rb_define_method(rb_cCALL, "recv", node_recv, 0);
|
3348
|
+
rb_ary_push(members, rb_str_new2("recv"));
|
3334
3349
|
|
3335
3350
|
/* Document-method: mid
|
3336
3351
|
* the method id
|
@@ -3338,11 +3353,11 @@ void define_node_subclass_methods()
|
|
3338
3353
|
rb_define_method(rb_cCALL, "mid", node_mid, 0);
|
3339
3354
|
rb_ary_push(members, rb_str_new2("mid"));
|
3340
3355
|
|
3341
|
-
/* Document-method:
|
3342
|
-
* the
|
3356
|
+
/* Document-method: args
|
3357
|
+
* the arguments to the method
|
3343
3358
|
*/
|
3344
|
-
rb_define_method(rb_cCALL, "
|
3345
|
-
rb_ary_push(members, rb_str_new2("
|
3359
|
+
rb_define_method(rb_cCALL, "args", node_args, 0);
|
3360
|
+
rb_ary_push(members, rb_str_new2("args"));
|
3346
3361
|
}
|
3347
3362
|
|
3348
3363
|
/* Document-class: Node::CASE
|
@@ -3360,12 +3375,6 @@ void define_node_subclass_methods()
|
|
3360
3375
|
rb_iv_set(rb_cCASE, "__type__", INT2NUM(NODE_CASE));
|
3361
3376
|
rb_define_singleton_method(rb_cCASE, "members", node_s_members, 0);
|
3362
3377
|
|
3363
|
-
/* Document-method: head
|
3364
|
-
* the value to select on
|
3365
|
-
*/
|
3366
|
-
rb_define_method(rb_cCASE, "head", node_head, 0);
|
3367
|
-
rb_ary_push(members, rb_str_new2("head"));
|
3368
|
-
|
3369
3378
|
/* Document-method: body
|
3370
3379
|
* a linked list of nodes, each node representing a when
|
3371
3380
|
* conditional
|
@@ -3374,6 +3383,12 @@ void define_node_subclass_methods()
|
|
3374
3383
|
rb_ary_push(members, rb_str_new2("body"));
|
3375
3384
|
rb_define_method(rb_cCASE, "next", node_next, 0);
|
3376
3385
|
rb_ary_push(members, rb_str_new2("next"));
|
3386
|
+
|
3387
|
+
/* Document-method: head
|
3388
|
+
* the value to select on
|
3389
|
+
*/
|
3390
|
+
rb_define_method(rb_cCASE, "head", node_head, 0);
|
3391
|
+
rb_ary_push(members, rb_str_new2("head"));
|
3377
3392
|
}
|
3378
3393
|
|
3379
3394
|
/* Document-class: Node::CDECL
|
@@ -3441,12 +3456,6 @@ void define_node_subclass_methods()
|
|
3441
3456
|
rb_iv_set(rb_cCLASS, "__type__", INT2NUM(NODE_CLASS));
|
3442
3457
|
rb_define_singleton_method(rb_cCLASS, "members", node_s_members, 0);
|
3443
3458
|
|
3444
|
-
/* Document-method: cpath
|
3445
|
-
* the name of the class to define
|
3446
|
-
*/
|
3447
|
-
rb_define_method(rb_cCLASS, "cpath", node_cpath, 0);
|
3448
|
-
rb_ary_push(members, rb_str_new2("cpath"));
|
3449
|
-
|
3450
3459
|
/* Document-method: body
|
3451
3460
|
* the body of the class definition
|
3452
3461
|
*/
|
@@ -3459,6 +3468,12 @@ void define_node_subclass_methods()
|
|
3459
3468
|
*/
|
3460
3469
|
rb_define_method(rb_cCLASS, "super", node_super, 0);
|
3461
3470
|
rb_ary_push(members, rb_str_new2("super"));
|
3471
|
+
|
3472
|
+
/* Document-method: cpath
|
3473
|
+
* the name of the class to define
|
3474
|
+
*/
|
3475
|
+
rb_define_method(rb_cCLASS, "cpath", node_cpath, 0);
|
3476
|
+
rb_ary_push(members, rb_str_new2("cpath"));
|
3462
3477
|
}
|
3463
3478
|
|
3464
3479
|
/* Document-class: Node::COLON2
|
@@ -3477,17 +3492,17 @@ void define_node_subclass_methods()
|
|
3477
3492
|
rb_iv_set(rb_cCOLON2, "__type__", INT2NUM(NODE_COLON2));
|
3478
3493
|
rb_define_singleton_method(rb_cCOLON2, "members", node_s_members, 0);
|
3479
3494
|
|
3480
|
-
/* Document-method: head
|
3481
|
-
* an expression specifying the class in which to do the lookup
|
3482
|
-
*/
|
3483
|
-
rb_define_method(rb_cCOLON2, "head", node_head, 0);
|
3484
|
-
rb_ary_push(members, rb_str_new2("head"));
|
3485
|
-
|
3486
3495
|
/* Document-method: mid
|
3487
3496
|
* the name of the method or constant to call/look up
|
3488
3497
|
*/
|
3489
3498
|
rb_define_method(rb_cCOLON2, "mid", node_mid, 0);
|
3490
3499
|
rb_ary_push(members, rb_str_new2("mid"));
|
3500
|
+
|
3501
|
+
/* Document-method: head
|
3502
|
+
* an expression specifying the class in which to do the lookup
|
3503
|
+
*/
|
3504
|
+
rb_define_method(rb_cCOLON2, "head", node_head, 0);
|
3505
|
+
rb_ary_push(members, rb_str_new2("head"));
|
3491
3506
|
}
|
3492
3507
|
|
3493
3508
|
/* Document-class: Node::COLON3
|
@@ -3552,17 +3567,17 @@ void define_node_subclass_methods()
|
|
3552
3567
|
rb_define_method(rb_cCREF, "body", node_body, 0);
|
3553
3568
|
rb_ary_push(members, rb_str_new2("body"));
|
3554
3569
|
|
3555
|
-
/* Document-method: next
|
3556
|
-
* the previous value of ruby_cref or ruby_top_cref
|
3557
|
-
*/
|
3558
|
-
rb_define_method(rb_cCREF, "next", node_next, 0);
|
3559
|
-
rb_ary_push(members, rb_str_new2("next"));
|
3560
|
-
|
3561
3570
|
/* Document-method: clss
|
3562
3571
|
* the new class to use for the cbase.
|
3563
3572
|
*/
|
3564
3573
|
rb_define_method(rb_cCREF, "clss", node_clss, 0);
|
3565
3574
|
rb_ary_push(members, rb_str_new2("clss"));
|
3575
|
+
|
3576
|
+
/* Document-method: next
|
3577
|
+
* the previous value of ruby_cref or ruby_top_cref
|
3578
|
+
*/
|
3579
|
+
rb_define_method(rb_cCREF, "next", node_next, 0);
|
3580
|
+
rb_ary_push(members, rb_str_new2("next"));
|
3566
3581
|
}
|
3567
3582
|
|
3568
3583
|
/* Document-class: Node::CVAR
|
@@ -3727,11 +3742,11 @@ void define_node_subclass_methods()
|
|
3727
3742
|
rb_iv_set(rb_cDEFN, "__type__", INT2NUM(NODE_DEFN));
|
3728
3743
|
rb_define_singleton_method(rb_cDEFN, "members", node_s_members, 0);
|
3729
3744
|
|
3730
|
-
/* Document-method:
|
3731
|
-
* the
|
3745
|
+
/* Document-method: noex
|
3746
|
+
* the flags which should be used to define the method
|
3732
3747
|
*/
|
3733
|
-
rb_define_method(rb_cDEFN, "
|
3734
|
-
rb_ary_push(members, rb_str_new2("
|
3748
|
+
rb_define_method(rb_cDEFN, "noex", node_noex, 0);
|
3749
|
+
rb_ary_push(members, rb_str_new2("noex"));
|
3735
3750
|
|
3736
3751
|
/* Document-method: mid
|
3737
3752
|
* the name of the method* defn the body of the method
|
@@ -3739,11 +3754,11 @@ void define_node_subclass_methods()
|
|
3739
3754
|
rb_define_method(rb_cDEFN, "mid", node_mid, 0);
|
3740
3755
|
rb_ary_push(members, rb_str_new2("mid"));
|
3741
3756
|
|
3742
|
-
/* Document-method:
|
3743
|
-
* the
|
3757
|
+
/* Document-method: defn
|
3758
|
+
* the body of the method definition
|
3744
3759
|
*/
|
3745
|
-
rb_define_method(rb_cDEFN, "
|
3746
|
-
rb_ary_push(members, rb_str_new2("
|
3760
|
+
rb_define_method(rb_cDEFN, "defn", node_defn, 0);
|
3761
|
+
rb_ary_push(members, rb_str_new2("defn"));
|
3747
3762
|
}
|
3748
3763
|
|
3749
3764
|
/* Document-class: Node::DEFS
|
@@ -3759,20 +3774,20 @@ void define_node_subclass_methods()
|
|
3759
3774
|
rb_iv_set(rb_cDEFS, "__member__", members);
|
3760
3775
|
rb_iv_set(rb_cDEFS, "__type__", INT2NUM(NODE_DEFS));
|
3761
3776
|
rb_define_singleton_method(rb_cDEFS, "members", node_s_members, 0);
|
3762
|
-
rb_define_method(rb_cDEFS, "defn", node_defn, 0);
|
3763
|
-
rb_ary_push(members, rb_str_new2("defn"));
|
3764
|
-
|
3765
|
-
/* Document-method: mid
|
3766
|
-
* the name of the method* defn the body of the method
|
3767
|
-
*/
|
3768
|
-
rb_define_method(rb_cDEFS, "mid", node_mid, 0);
|
3769
|
-
rb_ary_push(members, rb_str_new2("mid"));
|
3770
3777
|
|
3771
3778
|
/* Document-method: recv
|
3772
3779
|
* the object to whose singleton class the new method is to be added
|
3773
3780
|
*/
|
3774
3781
|
rb_define_method(rb_cDEFS, "recv", node_recv, 0);
|
3775
3782
|
rb_ary_push(members, rb_str_new2("recv"));
|
3783
|
+
|
3784
|
+
/* Document-method: mid
|
3785
|
+
* the name of the method* defn the body of the method
|
3786
|
+
*/
|
3787
|
+
rb_define_method(rb_cDEFS, "mid", node_mid, 0);
|
3788
|
+
rb_ary_push(members, rb_str_new2("mid"));
|
3789
|
+
rb_define_method(rb_cDEFS, "defn", node_defn, 0);
|
3790
|
+
rb_ary_push(members, rb_str_new2("defn"));
|
3776
3791
|
}
|
3777
3792
|
|
3778
3793
|
/* Document-class: Node::DMETHOD
|
@@ -3811,17 +3826,17 @@ void define_node_subclass_methods()
|
|
3811
3826
|
rb_iv_set(rb_cDOT2, "__type__", INT2NUM(NODE_DOT2));
|
3812
3827
|
rb_define_singleton_method(rb_cDOT2, "members", node_s_members, 0);
|
3813
3828
|
|
3814
|
-
/* Document-method: beg
|
3815
|
-
* the beginning of the range
|
3816
|
-
*/
|
3817
|
-
rb_define_method(rb_cDOT2, "beg", node_beg, 0);
|
3818
|
-
rb_ary_push(members, rb_str_new2("beg"));
|
3819
|
-
|
3820
3829
|
/* Document-method: end
|
3821
3830
|
* the end of the range
|
3822
3831
|
*/
|
3823
3832
|
rb_define_method(rb_cDOT2, "end", node_end, 0);
|
3824
3833
|
rb_ary_push(members, rb_str_new2("end"));
|
3834
|
+
|
3835
|
+
/* Document-method: beg
|
3836
|
+
* the beginning of the range
|
3837
|
+
*/
|
3838
|
+
rb_define_method(rb_cDOT2, "beg", node_beg, 0);
|
3839
|
+
rb_ary_push(members, rb_str_new2("beg"));
|
3825
3840
|
rb_define_method(rb_cDOT2, "state", node_state, 0);
|
3826
3841
|
rb_ary_push(members, rb_str_new2("state"));
|
3827
3842
|
}
|
@@ -3839,17 +3854,17 @@ void define_node_subclass_methods()
|
|
3839
3854
|
rb_iv_set(rb_cDOT3, "__type__", INT2NUM(NODE_DOT3));
|
3840
3855
|
rb_define_singleton_method(rb_cDOT3, "members", node_s_members, 0);
|
3841
3856
|
|
3842
|
-
/* Document-method: beg
|
3843
|
-
* the beginning of the range
|
3844
|
-
*/
|
3845
|
-
rb_define_method(rb_cDOT3, "beg", node_beg, 0);
|
3846
|
-
rb_ary_push(members, rb_str_new2("beg"));
|
3847
|
-
|
3848
3857
|
/* Document-method: end
|
3849
3858
|
* the end of the range
|
3850
3859
|
*/
|
3851
3860
|
rb_define_method(rb_cDOT3, "end", node_end, 0);
|
3852
3861
|
rb_ary_push(members, rb_str_new2("end"));
|
3862
|
+
|
3863
|
+
/* Document-method: beg
|
3864
|
+
* the beginning of the range
|
3865
|
+
*/
|
3866
|
+
rb_define_method(rb_cDOT3, "beg", node_beg, 0);
|
3867
|
+
rb_ary_push(members, rb_str_new2("beg"));
|
3853
3868
|
rb_define_method(rb_cDOT3, "state", node_state, 0);
|
3854
3869
|
rb_ary_push(members, rb_str_new2("state"));
|
3855
3870
|
}
|
@@ -4120,11 +4135,11 @@ void define_node_subclass_methods()
|
|
4120
4135
|
rb_iv_set(rb_cFBODY, "__type__", INT2NUM(NODE_FBODY));
|
4121
4136
|
rb_define_singleton_method(rb_cFBODY, "members", node_s_members, 0);
|
4122
4137
|
|
4123
|
-
/* Document-method:
|
4124
|
-
* the method
|
4138
|
+
/* Document-method: mid
|
4139
|
+
* the name of the method
|
4125
4140
|
*/
|
4126
|
-
rb_define_method(rb_cFBODY, "
|
4127
|
-
rb_ary_push(members, rb_str_new2("
|
4141
|
+
rb_define_method(rb_cFBODY, "mid", node_mid, 0);
|
4142
|
+
rb_ary_push(members, rb_str_new2("mid"));
|
4128
4143
|
|
4129
4144
|
/* Document-method: orig
|
4130
4145
|
* the origin class
|
@@ -4132,11 +4147,11 @@ void define_node_subclass_methods()
|
|
4132
4147
|
rb_define_method(rb_cFBODY, "orig", node_orig, 0);
|
4133
4148
|
rb_ary_push(members, rb_str_new2("orig"));
|
4134
4149
|
|
4135
|
-
/* Document-method:
|
4136
|
-
* the
|
4150
|
+
/* Document-method: head
|
4151
|
+
* the method body
|
4137
4152
|
*/
|
4138
|
-
rb_define_method(rb_cFBODY, "
|
4139
|
-
rb_ary_push(members, rb_str_new2("
|
4153
|
+
rb_define_method(rb_cFBODY, "head", node_head, 0);
|
4154
|
+
rb_ary_push(members, rb_str_new2("head"));
|
4140
4155
|
}
|
4141
4156
|
|
4142
4157
|
/* Document-class: Node::FCALL
|
@@ -4154,17 +4169,17 @@ void define_node_subclass_methods()
|
|
4154
4169
|
rb_iv_set(rb_cFCALL, "__type__", INT2NUM(NODE_FCALL));
|
4155
4170
|
rb_define_singleton_method(rb_cFCALL, "members", node_s_members, 0);
|
4156
4171
|
|
4157
|
-
/* Document-method: args
|
4158
|
-
* the arguments to the method
|
4159
|
-
*/
|
4160
|
-
rb_define_method(rb_cFCALL, "args", node_args, 0);
|
4161
|
-
rb_ary_push(members, rb_str_new2("args"));
|
4162
|
-
|
4163
4172
|
/* Document-method: mid
|
4164
4173
|
* the method id
|
4165
4174
|
*/
|
4166
4175
|
rb_define_method(rb_cFCALL, "mid", node_mid, 0);
|
4167
4176
|
rb_ary_push(members, rb_str_new2("mid"));
|
4177
|
+
|
4178
|
+
/* Document-method: args
|
4179
|
+
* the arguments to the method
|
4180
|
+
*/
|
4181
|
+
rb_define_method(rb_cFCALL, "args", node_args, 0);
|
4182
|
+
rb_ary_push(members, rb_str_new2("args"));
|
4168
4183
|
}
|
4169
4184
|
|
4170
4185
|
/* Document-class: Node::FLIP2
|
@@ -4181,11 +4196,12 @@ void define_node_subclass_methods()
|
|
4181
4196
|
rb_iv_set(rb_cFLIP2, "__type__", INT2NUM(NODE_FLIP2));
|
4182
4197
|
rb_define_singleton_method(rb_cFLIP2, "members", node_s_members, 0);
|
4183
4198
|
|
4184
|
-
/* Document-method:
|
4185
|
-
* the
|
4199
|
+
/* Document-method: cnt
|
4200
|
+
* the index into the local variable table of the special variable
|
4201
|
+
* to use in the flip-flop expression (usually 2 for $_)
|
4186
4202
|
*/
|
4187
|
-
rb_define_method(rb_cFLIP2, "
|
4188
|
-
rb_ary_push(members, rb_str_new2("
|
4203
|
+
rb_define_method(rb_cFLIP2, "cnt", node_cnt, 0);
|
4204
|
+
rb_ary_push(members, rb_str_new2("cnt"));
|
4189
4205
|
|
4190
4206
|
/* Document-method: end
|
4191
4207
|
* the end of the range
|
@@ -4193,12 +4209,11 @@ void define_node_subclass_methods()
|
|
4193
4209
|
rb_define_method(rb_cFLIP2, "end", node_end, 0);
|
4194
4210
|
rb_ary_push(members, rb_str_new2("end"));
|
4195
4211
|
|
4196
|
-
/* Document-method:
|
4197
|
-
* the
|
4198
|
-
* to use in the flip-flop expression (usually 2 for $_)
|
4212
|
+
/* Document-method: beg
|
4213
|
+
* the beginning of the range
|
4199
4214
|
*/
|
4200
|
-
rb_define_method(rb_cFLIP2, "
|
4201
|
-
rb_ary_push(members, rb_str_new2("
|
4215
|
+
rb_define_method(rb_cFLIP2, "beg", node_beg, 0);
|
4216
|
+
rb_ary_push(members, rb_str_new2("beg"));
|
4202
4217
|
}
|
4203
4218
|
|
4204
4219
|
/* Document-class: Node::FLIP3
|
@@ -4215,11 +4230,12 @@ void define_node_subclass_methods()
|
|
4215
4230
|
rb_iv_set(rb_cFLIP3, "__type__", INT2NUM(NODE_FLIP3));
|
4216
4231
|
rb_define_singleton_method(rb_cFLIP3, "members", node_s_members, 0);
|
4217
4232
|
|
4218
|
-
/* Document-method:
|
4219
|
-
* the
|
4233
|
+
/* Document-method: cnt
|
4234
|
+
* the index into the local variable table of the special variable
|
4235
|
+
* to use in the flip-flop expression (usually 2 for $_)
|
4220
4236
|
*/
|
4221
|
-
rb_define_method(rb_cFLIP3, "
|
4222
|
-
rb_ary_push(members, rb_str_new2("
|
4237
|
+
rb_define_method(rb_cFLIP3, "cnt", node_cnt, 0);
|
4238
|
+
rb_ary_push(members, rb_str_new2("cnt"));
|
4223
4239
|
|
4224
4240
|
/* Document-method: end
|
4225
4241
|
* the end of the range
|
@@ -4227,12 +4243,11 @@ void define_node_subclass_methods()
|
|
4227
4243
|
rb_define_method(rb_cFLIP3, "end", node_end, 0);
|
4228
4244
|
rb_ary_push(members, rb_str_new2("end"));
|
4229
4245
|
|
4230
|
-
/* Document-method:
|
4231
|
-
* the
|
4232
|
-
* to use in the flip-flop expression (usually 2 for $_)
|
4246
|
+
/* Document-method: beg
|
4247
|
+
* the beginning of the range
|
4233
4248
|
*/
|
4234
|
-
rb_define_method(rb_cFLIP3, "
|
4235
|
-
rb_ary_push(members, rb_str_new2("
|
4249
|
+
rb_define_method(rb_cFLIP3, "beg", node_beg, 0);
|
4250
|
+
rb_ary_push(members, rb_str_new2("beg"));
|
4236
4251
|
}
|
4237
4252
|
|
4238
4253
|
/* Document-class: Node::FOR
|
@@ -4396,12 +4411,6 @@ void define_node_subclass_methods()
|
|
4396
4411
|
rb_iv_set(rb_cIF, "__type__", INT2NUM(NODE_IF));
|
4397
4412
|
rb_define_singleton_method(rb_cIF, "members", node_s_members, 0);
|
4398
4413
|
|
4399
|
-
/* Document-method: cond
|
4400
|
-
* the condition to evaluate
|
4401
|
-
*/
|
4402
|
-
rb_define_method(rb_cIF, "cond", node_cond, 0);
|
4403
|
-
rb_ary_push(members, rb_str_new2("cond"));
|
4404
|
-
|
4405
4414
|
/* Document-method: body
|
4406
4415
|
* the expression to evaluate if the expression is true, or false
|
4407
4416
|
* if the expression is empty
|
@@ -4409,6 +4418,12 @@ void define_node_subclass_methods()
|
|
4409
4418
|
rb_define_method(rb_cIF, "body", node_body, 0);
|
4410
4419
|
rb_ary_push(members, rb_str_new2("body"));
|
4411
4420
|
|
4421
|
+
/* Document-method: cond
|
4422
|
+
* the condition to evaluate
|
4423
|
+
*/
|
4424
|
+
rb_define_method(rb_cIF, "cond", node_cond, 0);
|
4425
|
+
rb_ary_push(members, rb_str_new2("cond"));
|
4426
|
+
|
4412
4427
|
/* Document-method: else
|
4413
4428
|
* the expression to evaluate if the expression is false, or false
|
4414
4429
|
* if the expression is empty
|
@@ -4434,18 +4449,18 @@ void define_node_subclass_methods()
|
|
4434
4449
|
rb_define_method(rb_cIFUNC, "cfnc", node_cfnc, 0);
|
4435
4450
|
rb_ary_push(members, rb_str_new2("cfnc"));
|
4436
4451
|
|
4452
|
+
/* Document-method: state
|
4453
|
+
* always 0
|
4454
|
+
*/
|
4455
|
+
rb_define_method(rb_cIFUNC, "state", node_state, 0);
|
4456
|
+
rb_ary_push(members, rb_str_new2("state"));
|
4457
|
+
|
4437
4458
|
/* Document-method: tval
|
4438
4459
|
* the user-specified data to be passed as the second argument to
|
4439
4460
|
* cfnc
|
4440
4461
|
*/
|
4441
4462
|
rb_define_method(rb_cIFUNC, "tval", node_tval, 0);
|
4442
4463
|
rb_ary_push(members, rb_str_new2("tval"));
|
4443
|
-
|
4444
|
-
/* Document-method: state
|
4445
|
-
* always 0
|
4446
|
-
*/
|
4447
|
-
rb_define_method(rb_cIFUNC, "state", node_state, 0);
|
4448
|
-
rb_ary_push(members, rb_str_new2("state"));
|
4449
4464
|
}
|
4450
4465
|
|
4451
4466
|
/* Document-class: Node::ITER
|
@@ -4528,14 +4543,14 @@ void define_node_subclass_methods()
|
|
4528
4543
|
*/
|
4529
4544
|
rb_define_method(rb_cLASGN, "value", node_value, 0);
|
4530
4545
|
rb_ary_push(members, rb_str_new2("value"));
|
4546
|
+
rb_define_method(rb_cLASGN, "cnt", node_cnt, 0);
|
4547
|
+
rb_ary_push(members, rb_str_new2("cnt"));
|
4531
4548
|
|
4532
4549
|
/* Document-method: vid
|
4533
4550
|
* the name of the local variable
|
4534
4551
|
*/
|
4535
4552
|
rb_define_method(rb_cLASGN, "vid", node_vid, 0);
|
4536
4553
|
rb_ary_push(members, rb_str_new2("vid"));
|
4537
|
-
rb_define_method(rb_cLASGN, "cnt", node_cnt, 0);
|
4538
|
-
rb_ary_push(members, rb_str_new2("cnt"));
|
4539
4554
|
}
|
4540
4555
|
|
4541
4556
|
/* Document-class: Node::LIT
|
@@ -4567,14 +4582,14 @@ void define_node_subclass_methods()
|
|
4567
4582
|
rb_iv_set(rb_cLVAR, "__member__", members);
|
4568
4583
|
rb_iv_set(rb_cLVAR, "__type__", INT2NUM(NODE_LVAR));
|
4569
4584
|
rb_define_singleton_method(rb_cLVAR, "members", node_s_members, 0);
|
4585
|
+
rb_define_method(rb_cLVAR, "cnt", node_cnt, 0);
|
4586
|
+
rb_ary_push(members, rb_str_new2("cnt"));
|
4570
4587
|
|
4571
4588
|
/* Document-method: vid
|
4572
4589
|
* the name of the local variable to retrieve.
|
4573
4590
|
*/
|
4574
4591
|
rb_define_method(rb_cLVAR, "vid", node_vid, 0);
|
4575
4592
|
rb_ary_push(members, rb_str_new2("vid"));
|
4576
|
-
rb_define_method(rb_cLVAR, "cnt", node_cnt, 0);
|
4577
|
-
rb_ary_push(members, rb_str_new2("cnt"));
|
4578
4593
|
}
|
4579
4594
|
|
4580
4595
|
/* Document-class: Node::MASGN
|
@@ -4588,6 +4603,12 @@ void define_node_subclass_methods()
|
|
4588
4603
|
rb_iv_set(rb_cMASGN, "__type__", INT2NUM(NODE_MASGN));
|
4589
4604
|
rb_define_singleton_method(rb_cMASGN, "members", node_s_members, 0);
|
4590
4605
|
|
4606
|
+
/* Document-method: value
|
4607
|
+
* TODO
|
4608
|
+
*/
|
4609
|
+
rb_define_method(rb_cMASGN, "value", node_value, 0);
|
4610
|
+
rb_ary_push(members, rb_str_new2("value"));
|
4611
|
+
|
4591
4612
|
/* Document-method: args
|
4592
4613
|
* TODO
|
4593
4614
|
*/
|
@@ -4599,12 +4620,6 @@ void define_node_subclass_methods()
|
|
4599
4620
|
*/
|
4600
4621
|
rb_define_method(rb_cMASGN, "head", node_head, 0);
|
4601
4622
|
rb_ary_push(members, rb_str_new2("head"));
|
4602
|
-
|
4603
|
-
/* Document-method: value
|
4604
|
-
* TODO
|
4605
|
-
*/
|
4606
|
-
rb_define_method(rb_cMASGN, "value", node_value, 0);
|
4607
|
-
rb_ary_push(members, rb_str_new2("value"));
|
4608
4623
|
}
|
4609
4624
|
|
4610
4625
|
/* Document-class: Node::MATCH
|
@@ -4629,17 +4644,17 @@ void define_node_subclass_methods()
|
|
4629
4644
|
rb_iv_set(rb_cMATCH, "__type__", INT2NUM(NODE_MATCH));
|
4630
4645
|
rb_define_singleton_method(rb_cMATCH, "members", node_s_members, 0);
|
4631
4646
|
|
4632
|
-
/* Document-method: lit
|
4633
|
-
* the regular expression to use in the condition.
|
4634
|
-
*/
|
4635
|
-
rb_define_method(rb_cMATCH, "lit", node_lit, 0);
|
4636
|
-
rb_ary_push(members, rb_str_new2("lit"));
|
4637
|
-
|
4638
4647
|
/* Document-method: value
|
4639
4648
|
* the value to compare against
|
4640
4649
|
*/
|
4641
4650
|
rb_define_method(rb_cMATCH, "value", node_value, 0);
|
4642
4651
|
rb_ary_push(members, rb_str_new2("value"));
|
4652
|
+
|
4653
|
+
/* Document-method: lit
|
4654
|
+
* the regular expression to use in the condition.
|
4655
|
+
*/
|
4656
|
+
rb_define_method(rb_cMATCH, "lit", node_lit, 0);
|
4657
|
+
rb_ary_push(members, rb_str_new2("lit"));
|
4643
4658
|
}
|
4644
4659
|
|
4645
4660
|
/* Document-class: Node::MATCH2
|
@@ -4777,17 +4792,17 @@ void define_node_subclass_methods()
|
|
4777
4792
|
rb_iv_set(rb_cMODULE, "__type__", INT2NUM(NODE_MODULE));
|
4778
4793
|
rb_define_singleton_method(rb_cMODULE, "members", node_s_members, 0);
|
4779
4794
|
|
4780
|
-
/* Document-method: cpath
|
4781
|
-
* the name of the module to define
|
4782
|
-
*/
|
4783
|
-
rb_define_method(rb_cMODULE, "cpath", node_cpath, 0);
|
4784
|
-
rb_ary_push(members, rb_str_new2("cpath"));
|
4785
|
-
|
4786
4795
|
/* Document-method: body
|
4787
4796
|
* the body of the module definition
|
4788
4797
|
*/
|
4789
4798
|
rb_define_method(rb_cMODULE, "body", node_body, 0);
|
4790
4799
|
rb_ary_push(members, rb_str_new2("body"));
|
4800
|
+
|
4801
|
+
/* Document-method: cpath
|
4802
|
+
* the name of the module to define
|
4803
|
+
*/
|
4804
|
+
rb_define_method(rb_cMODULE, "cpath", node_cpath, 0);
|
4805
|
+
rb_ary_push(members, rb_str_new2("cpath"));
|
4791
4806
|
}
|
4792
4807
|
|
4793
4808
|
/* Document-class: Node::NEWLINE
|
@@ -4866,17 +4881,17 @@ void define_node_subclass_methods()
|
|
4866
4881
|
rb_iv_set(rb_cNTH_REF, "__type__", INT2NUM(NODE_NTH_REF));
|
4867
4882
|
rb_define_singleton_method(rb_cNTH_REF, "members", node_s_members, 0);
|
4868
4883
|
|
4869
|
-
/* Document-method: nth
|
4870
|
-
* the index of the match data item to retrieve
|
4871
|
-
*/
|
4872
|
-
rb_define_method(rb_cNTH_REF, "nth", node_nth, 0);
|
4873
|
-
rb_ary_push(members, rb_str_new2("nth"));
|
4874
|
-
|
4875
4884
|
/* Document-method: cnt
|
4876
4885
|
* the index into the local variable table where the match data is stored
|
4877
4886
|
*/
|
4878
4887
|
rb_define_method(rb_cNTH_REF, "cnt", node_cnt, 0);
|
4879
4888
|
rb_ary_push(members, rb_str_new2("cnt"));
|
4889
|
+
|
4890
|
+
/* Document-method: nth
|
4891
|
+
* the index of the match data item to retrieve
|
4892
|
+
*/
|
4893
|
+
rb_define_method(rb_cNTH_REF, "nth", node_nth, 0);
|
4894
|
+
rb_ary_push(members, rb_str_new2("nth"));
|
4880
4895
|
}
|
4881
4896
|
|
4882
4897
|
/* Document-class: Node::OPT_N
|
@@ -4929,11 +4944,11 @@ void define_node_subclass_methods()
|
|
4929
4944
|
rb_iv_set(rb_cOP_ASGN1, "__type__", INT2NUM(NODE_OP_ASGN1));
|
4930
4945
|
rb_define_singleton_method(rb_cOP_ASGN1, "members", node_s_members, 0);
|
4931
4946
|
|
4932
|
-
/* Document-method:
|
4933
|
-
* the
|
4947
|
+
/* Document-method: recv
|
4948
|
+
* the receiver of the assignment
|
4934
4949
|
*/
|
4935
|
-
rb_define_method(rb_cOP_ASGN1, "
|
4936
|
-
rb_ary_push(members, rb_str_new2("
|
4950
|
+
rb_define_method(rb_cOP_ASGN1, "recv", node_recv, 0);
|
4951
|
+
rb_ary_push(members, rb_str_new2("recv"));
|
4937
4952
|
|
4938
4953
|
/* Document-method: mid
|
4939
4954
|
* 0, 1, or the name a method to call to calculate the value of the
|
@@ -4942,11 +4957,11 @@ void define_node_subclass_methods()
|
|
4942
4957
|
rb_define_method(rb_cOP_ASGN1, "mid", node_mid, 0);
|
4943
4958
|
rb_ary_push(members, rb_str_new2("mid"));
|
4944
4959
|
|
4945
|
-
/* Document-method:
|
4946
|
-
* the
|
4960
|
+
/* Document-method: args
|
4961
|
+
* the arguments to the assigment
|
4947
4962
|
*/
|
4948
|
-
rb_define_method(rb_cOP_ASGN1, "
|
4949
|
-
rb_ary_push(members, rb_str_new2("
|
4963
|
+
rb_define_method(rb_cOP_ASGN1, "args", node_args, 0);
|
4964
|
+
rb_ary_push(members, rb_str_new2("args"));
|
4950
4965
|
}
|
4951
4966
|
|
4952
4967
|
/* Document-class: Node::OP_ASGN2
|
@@ -4975,18 +4990,18 @@ void define_node_subclass_methods()
|
|
4975
4990
|
rb_define_method(rb_cOP_ASGN2, "value", node_value, 0);
|
4976
4991
|
rb_ary_push(members, rb_str_new2("value"));
|
4977
4992
|
|
4993
|
+
/* Document-method: recv
|
4994
|
+
* the receiver of the attribute
|
4995
|
+
*/
|
4996
|
+
rb_define_method(rb_cOP_ASGN2, "recv", node_recv, 0);
|
4997
|
+
rb_ary_push(members, rb_str_new2("recv"));
|
4998
|
+
|
4978
4999
|
/* Document-method: next
|
4979
5000
|
* another node of type OP_ASGN2 which contains more information
|
4980
5001
|
* about the assignment operation than can fit in this node alone
|
4981
5002
|
*/
|
4982
5003
|
rb_define_method(rb_cOP_ASGN2, "next", node_next, 0);
|
4983
5004
|
rb_ary_push(members, rb_str_new2("next"));
|
4984
|
-
|
4985
|
-
/* Document-method: recv
|
4986
|
-
* the receiver of the attribute
|
4987
|
-
*/
|
4988
|
-
rb_define_method(rb_cOP_ASGN2, "recv", node_recv, 0);
|
4989
|
-
rb_ary_push(members, rb_str_new2("recv"));
|
4990
5005
|
}
|
4991
5006
|
|
4992
5007
|
/* Document-class: Node::OP_ASGN2_ARG
|
@@ -5002,6 +5017,14 @@ void define_node_subclass_methods()
|
|
5002
5017
|
rb_iv_set(rb_cOP_ASGN2_ARG, "__type__", INT2NUM(NODE_OP_ASGN2_ARG));
|
5003
5018
|
rb_define_singleton_method(rb_cOP_ASGN2_ARG, "members", node_s_members, 0);
|
5004
5019
|
|
5020
|
+
/* Document-method: mid
|
5021
|
+
* The operation to apply to the attribute before setting it. May
|
5022
|
+
* be 0 (false) to indicate "logical or" or 1 (nil) to indicate
|
5023
|
+
* "logical and".
|
5024
|
+
*/
|
5025
|
+
rb_define_method(rb_cOP_ASGN2_ARG, "mid", node_mid, 0);
|
5026
|
+
rb_ary_push(members, rb_str_new2("mid"));
|
5027
|
+
|
5005
5028
|
/* Document-method: vid
|
5006
5029
|
* The method to call on the receiver to retrieve the attribute
|
5007
5030
|
*/
|
@@ -5013,14 +5036,6 @@ void define_node_subclass_methods()
|
|
5013
5036
|
*/
|
5014
5037
|
rb_define_method(rb_cOP_ASGN2_ARG, "aid", node_aid, 0);
|
5015
5038
|
rb_ary_push(members, rb_str_new2("aid"));
|
5016
|
-
|
5017
|
-
/* Document-method: mid
|
5018
|
-
* The operation to apply to the attribute before setting it. May
|
5019
|
-
* be 0 (false) to indicate "logical or" or 1 (nil) to indicate
|
5020
|
-
* "logical and".
|
5021
|
-
*/
|
5022
|
-
rb_define_method(rb_cOP_ASGN2_ARG, "mid", node_mid, 0);
|
5023
|
-
rb_ary_push(members, rb_str_new2("mid"));
|
5024
5039
|
}
|
5025
5040
|
|
5026
5041
|
/* Document-class: Node::OP_ASGN_AND
|
@@ -5069,14 +5084,6 @@ void define_node_subclass_methods()
|
|
5069
5084
|
rb_iv_set(rb_cOP_ASGN_OR, "__type__", INT2NUM(NODE_OP_ASGN_OR));
|
5070
5085
|
rb_define_singleton_method(rb_cOP_ASGN_OR, "members", node_s_members, 0);
|
5071
5086
|
|
5072
|
-
/* Document-method: aid
|
5073
|
-
* if this indicator is nonzero, ruby will check to see if the
|
5074
|
-
* provided expression is defined, otherwise it will assume that
|
5075
|
-
* the provided expression is defined.
|
5076
|
-
*/
|
5077
|
-
rb_define_method(rb_cOP_ASGN_OR, "aid", node_aid, 0);
|
5078
|
-
rb_ary_push(members, rb_str_new2("aid"));
|
5079
|
-
|
5080
5087
|
/* Document-method: value
|
5081
5088
|
* the right hand side of the assignment
|
5082
5089
|
*/
|
@@ -5088,6 +5095,14 @@ void define_node_subclass_methods()
|
|
5088
5095
|
*/
|
5089
5096
|
rb_define_method(rb_cOP_ASGN_OR, "recv", node_recv, 0);
|
5090
5097
|
rb_ary_push(members, rb_str_new2("recv"));
|
5098
|
+
|
5099
|
+
/* Document-method: aid
|
5100
|
+
* if this indicator is nonzero, ruby will check to see if the
|
5101
|
+
* provided expression is defined, otherwise it will assume that
|
5102
|
+
* the provided expression is defined.
|
5103
|
+
*/
|
5104
|
+
rb_define_method(rb_cOP_ASGN_OR, "aid", node_aid, 0);
|
5105
|
+
rb_ary_push(members, rb_str_new2("aid"));
|
5091
5106
|
}
|
5092
5107
|
|
5093
5108
|
/* Document-class: Node::OR
|
@@ -5105,17 +5120,17 @@ void define_node_subclass_methods()
|
|
5105
5120
|
rb_iv_set(rb_cOR, "__type__", INT2NUM(NODE_OR));
|
5106
5121
|
rb_define_singleton_method(rb_cOR, "members", node_s_members, 0);
|
5107
5122
|
|
5108
|
-
/* Document-method: first
|
5109
|
-
* the expression on the left hand side
|
5110
|
-
*/
|
5111
|
-
rb_define_method(rb_cOR, "first", node_1st, 0);
|
5112
|
-
rb_ary_push(members, rb_str_new2("first"));
|
5113
|
-
|
5114
5123
|
/* Document-method: second
|
5115
5124
|
* the expression on the right hand side
|
5116
5125
|
*/
|
5117
5126
|
rb_define_method(rb_cOR, "second", node_2nd, 0);
|
5118
5127
|
rb_ary_push(members, rb_str_new2("second"));
|
5128
|
+
|
5129
|
+
/* Document-method: first
|
5130
|
+
* the expression on the left hand side
|
5131
|
+
*/
|
5132
|
+
rb_define_method(rb_cOR, "first", node_1st, 0);
|
5133
|
+
rb_ary_push(members, rb_str_new2("first"));
|
5119
5134
|
}
|
5120
5135
|
|
5121
5136
|
/* Document-class: Node::POSTEXE
|
@@ -5167,11 +5182,11 @@ void define_node_subclass_methods()
|
|
5167
5182
|
rb_iv_set(rb_cRESBODY, "__type__", INT2NUM(NODE_RESBODY));
|
5168
5183
|
rb_define_singleton_method(rb_cRESBODY, "members", node_s_members, 0);
|
5169
5184
|
|
5170
|
-
/* Document-method:
|
5171
|
-
* the
|
5185
|
+
/* Document-method: body
|
5186
|
+
* the expresion to evaluate if the exception type matches
|
5172
5187
|
*/
|
5173
|
-
rb_define_method(rb_cRESBODY, "
|
5174
|
-
rb_ary_push(members, rb_str_new2("
|
5188
|
+
rb_define_method(rb_cRESBODY, "body", node_body, 0);
|
5189
|
+
rb_ary_push(members, rb_str_new2("body"));
|
5175
5190
|
|
5176
5191
|
/* Document-method: args
|
5177
5192
|
* the expression type to match against
|
@@ -5179,11 +5194,11 @@ void define_node_subclass_methods()
|
|
5179
5194
|
rb_define_method(rb_cRESBODY, "args", node_args, 0);
|
5180
5195
|
rb_ary_push(members, rb_str_new2("args"));
|
5181
5196
|
|
5182
|
-
/* Document-method:
|
5183
|
-
* the
|
5197
|
+
/* Document-method: head
|
5198
|
+
* the next rescue
|
5184
5199
|
*/
|
5185
|
-
rb_define_method(rb_cRESBODY, "
|
5186
|
-
rb_ary_push(members, rb_str_new2("
|
5200
|
+
rb_define_method(rb_cRESBODY, "head", node_head, 0);
|
5201
|
+
rb_ary_push(members, rb_str_new2("head"));
|
5187
5202
|
}
|
5188
5203
|
|
5189
5204
|
/* Document-class: Node::RESCUE
|
@@ -5223,11 +5238,11 @@ void define_node_subclass_methods()
|
|
5223
5238
|
rb_iv_set(rb_cRESCUE, "__type__", INT2NUM(NODE_RESCUE));
|
5224
5239
|
rb_define_singleton_method(rb_cRESCUE, "members", node_s_members, 0);
|
5225
5240
|
|
5226
|
-
/* Document-method:
|
5227
|
-
* the
|
5241
|
+
/* Document-method: resq
|
5242
|
+
* the expression to be evaluated if an exception is raised
|
5228
5243
|
*/
|
5229
|
-
rb_define_method(rb_cRESCUE, "
|
5230
|
-
rb_ary_push(members, rb_str_new2("
|
5244
|
+
rb_define_method(rb_cRESCUE, "resq", node_resq, 0);
|
5245
|
+
rb_ary_push(members, rb_str_new2("resq"));
|
5231
5246
|
|
5232
5247
|
/* Document-method: else
|
5233
5248
|
* the expression to be evaluated if no exception is raised
|
@@ -5235,11 +5250,11 @@ void define_node_subclass_methods()
|
|
5235
5250
|
rb_define_method(rb_cRESCUE, "else", node_else, 0);
|
5236
5251
|
rb_ary_push(members, rb_str_new2("else"));
|
5237
5252
|
|
5238
|
-
/* Document-method:
|
5239
|
-
* the
|
5253
|
+
/* Document-method: head
|
5254
|
+
* the body of the block to evaluate
|
5240
5255
|
*/
|
5241
|
-
rb_define_method(rb_cRESCUE, "
|
5242
|
-
rb_ary_push(members, rb_str_new2("
|
5256
|
+
rb_define_method(rb_cRESCUE, "head", node_head, 0);
|
5257
|
+
rb_ary_push(members, rb_str_new2("head"));
|
5243
5258
|
}
|
5244
5259
|
|
5245
5260
|
/* Document-class: Node::RETRY
|
@@ -5543,10 +5558,10 @@ void define_node_subclass_methods()
|
|
5543
5558
|
rb_iv_set(rb_cVALIAS, "__member__", members);
|
5544
5559
|
rb_iv_set(rb_cVALIAS, "__type__", INT2NUM(NODE_VALIAS));
|
5545
5560
|
rb_define_singleton_method(rb_cVALIAS, "members", node_s_members, 0);
|
5546
|
-
rb_define_method(rb_cVALIAS, "first", node_1st, 0);
|
5547
|
-
rb_ary_push(members, rb_str_new2("first"));
|
5548
5561
|
rb_define_method(rb_cVALIAS, "second", node_2nd, 0);
|
5549
5562
|
rb_ary_push(members, rb_str_new2("second"));
|
5563
|
+
rb_define_method(rb_cVALIAS, "first", node_1st, 0);
|
5564
|
+
rb_ary_push(members, rb_str_new2("first"));
|
5550
5565
|
}
|
5551
5566
|
|
5552
5567
|
/* Document-class: Node::VCALL
|
@@ -5606,12 +5621,6 @@ void define_node_subclass_methods()
|
|
5606
5621
|
rb_iv_set(rb_cWHEN, "__type__", INT2NUM(NODE_WHEN));
|
5607
5622
|
rb_define_singleton_method(rb_cWHEN, "members", node_s_members, 0);
|
5608
5623
|
|
5609
|
-
/* Document-method: head
|
5610
|
-
* a value to compare against, or a condition to be tested
|
5611
|
-
*/
|
5612
|
-
rb_define_method(rb_cWHEN, "head", node_head, 0);
|
5613
|
-
rb_ary_push(members, rb_str_new2("head"));
|
5614
|
-
|
5615
5624
|
/* Document-method: body
|
5616
5625
|
* an expression to evaluate if the condition evaluates to true
|
5617
5626
|
*/
|
@@ -5623,6 +5632,12 @@ void define_node_subclass_methods()
|
|
5623
5632
|
*/
|
5624
5633
|
rb_define_method(rb_cWHEN, "next", node_next, 0);
|
5625
5634
|
rb_ary_push(members, rb_str_new2("next"));
|
5635
|
+
|
5636
|
+
/* Document-method: head
|
5637
|
+
* a value to compare against, or a condition to be tested
|
5638
|
+
*/
|
5639
|
+
rb_define_method(rb_cWHEN, "head", node_head, 0);
|
5640
|
+
rb_ary_push(members, rb_str_new2("head"));
|
5626
5641
|
}
|
5627
5642
|
|
5628
5643
|
/* Document-class: Node::WHILE
|
@@ -5688,17 +5703,17 @@ void define_node_subclass_methods()
|
|
5688
5703
|
rb_iv_set(rb_cYIELD, "__type__", INT2NUM(NODE_YIELD));
|
5689
5704
|
rb_define_singleton_method(rb_cYIELD, "members", node_s_members, 0);
|
5690
5705
|
|
5691
|
-
/* Document-method: head
|
5692
|
-
* the value to yield
|
5693
|
-
*/
|
5694
|
-
rb_define_method(rb_cYIELD, "head", node_head, 0);
|
5695
|
-
rb_ary_push(members, rb_str_new2("head"));
|
5696
|
-
|
5697
5706
|
/* Document-method: state
|
5698
5707
|
* if nonzero, splats the value before yielding
|
5699
5708
|
*/
|
5700
5709
|
rb_define_method(rb_cYIELD, "state", node_state, 0);
|
5701
5710
|
rb_ary_push(members, rb_str_new2("state"));
|
5711
|
+
|
5712
|
+
/* Document-method: head
|
5713
|
+
* the value to yield
|
5714
|
+
*/
|
5715
|
+
rb_define_method(rb_cYIELD, "head", node_head, 0);
|
5716
|
+
rb_ary_push(members, rb_str_new2("head"));
|
5702
5717
|
}
|
5703
5718
|
|
5704
5719
|
/* Document-class: Node::ZARRAY
|