rubynode 0.1.4 → 0.1.5

Sign up to get free protection for your applications and to get access to all the features.
Files changed (37) hide show
  1. data/Changelog +5 -0
  2. data/README +2 -3
  3. data/doc/index.html +2 -3
  4. data/ext/rubynode_ext/extconf.rb +15 -6
  5. data/ext/rubynode_ext/ruby_src/{1.8.6_2007-03-13 → 061ef3a38d01ac9917e7aaff0bc5ff6be60becf3}/eval.c +0 -0
  6. data/ext/rubynode_ext/ruby_src/{1.8.6_2007-03-13 → 061ef3a38d01ac9917e7aaff0bc5ff6be60becf3}/gc.c +0 -0
  7. data/ext/rubynode_ext/ruby_src/{1.8.5_2006-08-25 → 4bfe0d24de6089aca6af9bf4d690df7a7f481276}/eval.c +0 -0
  8. data/ext/rubynode_ext/ruby_src/{1.8.5_2006-08-25 → 4bfe0d24de6089aca6af9bf4d690df7a7f481276}/gc.c +0 -0
  9. data/ext/rubynode_ext/ruby_src/{1.8.6_2007-06-07 → d03d2652e0a6a8ae8bd0575d58f0c093d97d694d}/eval.c +0 -0
  10. data/ext/rubynode_ext/ruby_src/{1.8.6_2007-06-07 → d03d2652e0a6a8ae8bd0575d58f0c093d97d694d}/gc.c +0 -0
  11. data/ext/rubynode_ext/ruby_src/{1.8.4_2005-12-24 → d0efe17fed21c8d9954851abd9dab16fac1e35b8}/eval.c +0 -0
  12. data/ext/rubynode_ext/ruby_src/{1.8.4_2005-12-24 → d0efe17fed21c8d9954851abd9dab16fac1e35b8}/gc.c +0 -0
  13. data/ext/rubynode_ext/rubynode_ext.c +2 -2
  14. data/lib/rubynode.rb +1 -1
  15. metadata +14 -42
  16. data/ext/rubynode_ext/ruby_src/1.8.4_2005-12-24/node.h +0 -381
  17. data/ext/rubynode_ext/ruby_src/1.8.5_2006-08-25/node.h +0 -378
  18. data/ext/rubynode_ext/ruby_src/1.8.5_2006-12-04/eval.c +0 -44
  19. data/ext/rubynode_ext/ruby_src/1.8.5_2006-12-04/gc.c +0 -272
  20. data/ext/rubynode_ext/ruby_src/1.8.5_2006-12-04/node.h +0 -378
  21. data/ext/rubynode_ext/ruby_src/1.8.5_2006-12-25/eval.c +0 -44
  22. data/ext/rubynode_ext/ruby_src/1.8.5_2006-12-25/gc.c +0 -272
  23. data/ext/rubynode_ext/ruby_src/1.8.5_2006-12-25/node.h +0 -378
  24. data/ext/rubynode_ext/ruby_src/1.8.5_2007-03-13/eval.c +0 -44
  25. data/ext/rubynode_ext/ruby_src/1.8.5_2007-03-13/gc.c +0 -272
  26. data/ext/rubynode_ext/ruby_src/1.8.5_2007-03-13/node.h +0 -378
  27. data/ext/rubynode_ext/ruby_src/1.8.5_2007-06-07/eval.c +0 -44
  28. data/ext/rubynode_ext/ruby_src/1.8.5_2007-06-07/gc.c +0 -272
  29. data/ext/rubynode_ext/ruby_src/1.8.5_2007-06-07/node.h +0 -378
  30. data/ext/rubynode_ext/ruby_src/1.8.5_2007-09-24/eval.c +0 -44
  31. data/ext/rubynode_ext/ruby_src/1.8.5_2007-09-24/gc.c +0 -272
  32. data/ext/rubynode_ext/ruby_src/1.8.5_2007-09-24/node.h +0 -378
  33. data/ext/rubynode_ext/ruby_src/1.8.6_2007-03-13/node.h +0 -474
  34. data/ext/rubynode_ext/ruby_src/1.8.6_2007-06-07/node.h +0 -474
  35. data/ext/rubynode_ext/ruby_src/1.8.6_2007-09-24/eval.c +0 -44
  36. data/ext/rubynode_ext/ruby_src/1.8.6_2007-09-24/gc.c +0 -272
  37. data/ext/rubynode_ext/ruby_src/1.8.6_2007-09-24/node.h +0 -474
@@ -1,474 +0,0 @@
1
- /**********************************************************************
2
-
3
- node.h -
4
-
5
- $Author: shyouhei $
6
- $Date: 2007-05-23 00:01:22 +0900 (Wed, 23 May 2007) $
7
- created at: Fri May 28 15:14:02 JST 1993
8
-
9
- Copyright (C) 1993-2003 Yukihiro Matsumoto
10
-
11
- **********************************************************************/
12
-
13
- #ifndef NODE_H
14
- #define NODE_H
15
-
16
- #if defined(__cplusplus)
17
- extern "C" {
18
- #endif
19
-
20
- enum node_type {
21
- NODE_METHOD,
22
- NODE_FBODY,
23
- NODE_CFUNC,
24
- NODE_SCOPE,
25
- NODE_BLOCK,
26
- NODE_IF,
27
- NODE_CASE,
28
- NODE_WHEN,
29
- NODE_OPT_N,
30
- NODE_WHILE,
31
- NODE_UNTIL,
32
- NODE_ITER,
33
- NODE_FOR,
34
- NODE_BREAK,
35
- NODE_NEXT,
36
- NODE_REDO,
37
- NODE_RETRY,
38
- NODE_BEGIN,
39
- NODE_RESCUE,
40
- NODE_RESBODY,
41
- NODE_ENSURE,
42
- NODE_AND,
43
- NODE_OR,
44
- NODE_NOT,
45
- NODE_MASGN,
46
- NODE_LASGN,
47
- NODE_DASGN,
48
- NODE_DASGN_CURR,
49
- NODE_GASGN,
50
- NODE_IASGN,
51
- NODE_CDECL,
52
- NODE_CVASGN,
53
- NODE_CVDECL,
54
- NODE_OP_ASGN1,
55
- NODE_OP_ASGN2,
56
- NODE_OP_ASGN_AND,
57
- NODE_OP_ASGN_OR,
58
- NODE_CALL,
59
- NODE_FCALL,
60
- NODE_VCALL,
61
- NODE_SUPER,
62
- NODE_ZSUPER,
63
- NODE_ARRAY,
64
- NODE_ZARRAY,
65
- NODE_HASH,
66
- NODE_RETURN,
67
- NODE_YIELD,
68
- NODE_LVAR,
69
- NODE_DVAR,
70
- NODE_GVAR,
71
- NODE_IVAR,
72
- NODE_CONST,
73
- NODE_CVAR,
74
- NODE_NTH_REF,
75
- NODE_BACK_REF,
76
- NODE_MATCH,
77
- NODE_MATCH2,
78
- NODE_MATCH3,
79
- NODE_LIT,
80
- NODE_STR,
81
- NODE_DSTR,
82
- NODE_XSTR,
83
- NODE_DXSTR,
84
- NODE_EVSTR,
85
- NODE_DREGX,
86
- NODE_DREGX_ONCE,
87
- NODE_ARGS,
88
- NODE_ARGSCAT,
89
- NODE_ARGSPUSH,
90
- NODE_SPLAT,
91
- NODE_TO_ARY,
92
- NODE_SVALUE,
93
- NODE_BLOCK_ARG,
94
- NODE_BLOCK_PASS,
95
- NODE_DEFN,
96
- NODE_DEFS,
97
- NODE_ALIAS,
98
- NODE_VALIAS,
99
- NODE_UNDEF,
100
- NODE_CLASS,
101
- NODE_MODULE,
102
- NODE_SCLASS,
103
- NODE_COLON2,
104
- NODE_COLON3,
105
- NODE_CREF,
106
- NODE_DOT2,
107
- NODE_DOT3,
108
- NODE_FLIP2,
109
- NODE_FLIP3,
110
- NODE_ATTRSET,
111
- NODE_SELF,
112
- NODE_NIL,
113
- NODE_TRUE,
114
- NODE_FALSE,
115
- NODE_DEFINED,
116
- NODE_NEWLINE,
117
- NODE_POSTEXE,
118
- NODE_ALLOCA,
119
- NODE_DMETHOD,
120
- NODE_BMETHOD,
121
- NODE_MEMO,
122
- NODE_IFUNC,
123
- NODE_DSYM,
124
- NODE_ATTRASGN,
125
- NODE_LAST
126
- };
127
-
128
- typedef struct RNode {
129
- unsigned long flags;
130
- char *nd_file;
131
- union {
132
- struct RNode *node;
133
- ID id;
134
- VALUE value;
135
- VALUE (*cfunc)(ANYARGS);
136
- ID *tbl;
137
- } u1;
138
- union {
139
- struct RNode *node;
140
- ID id;
141
- long argc;
142
- VALUE value;
143
- } u2;
144
- union {
145
- struct RNode *node;
146
- ID id;
147
- long state;
148
- struct global_entry *entry;
149
- long cnt;
150
- VALUE value;
151
- } u3;
152
- } NODE;
153
-
154
- extern NODE *ruby_cref;
155
- extern NODE *ruby_top_cref;
156
-
157
- #define RNODE(obj) (R_CAST(RNode)(obj))
158
-
159
- #define nd_type(n) ((int)(((RNODE(n))->flags>>FL_USHIFT)&0xff))
160
- #define nd_set_type(n,t) \
161
- RNODE(n)->flags=((RNODE(n)->flags&~FL_UMASK)|(((t)<<FL_USHIFT)&FL_UMASK))
162
-
163
- #define NODE_LSHIFT (FL_USHIFT+8)
164
- #define NODE_LMASK (((long)1<<(sizeof(NODE*)*CHAR_BIT-NODE_LSHIFT))-1)
165
- #define nd_line(n) ((unsigned int)(((RNODE(n))->flags>>NODE_LSHIFT)&NODE_LMASK))
166
- #define nd_set_line(n,l) \
167
- RNODE(n)->flags=((RNODE(n)->flags&~(-1<<NODE_LSHIFT))|(((l)&NODE_LMASK)<<NODE_LSHIFT))
168
-
169
- #define nd_head u1.node
170
- #define nd_alen u2.argc
171
- #define nd_next u3.node
172
-
173
- #define nd_cond u1.node
174
- #define nd_body u2.node
175
- #define nd_else u3.node
176
-
177
- #define nd_orig u3.value
178
-
179
- #define nd_resq u2.node
180
- #define nd_ensr u3.node
181
-
182
- #define nd_1st u1.node
183
- #define nd_2nd u2.node
184
-
185
- #define nd_stts u1.node
186
-
187
- #define nd_entry u3.entry
188
- #define nd_vid u1.id
189
- #define nd_cflag u2.id
190
- #define nd_cval u3.value
191
-
192
- #define nd_cnt u3.cnt
193
- #define nd_tbl u1.tbl
194
-
195
- #define nd_var u1.node
196
- #define nd_ibdy u2.node
197
- #define nd_iter u3.node
198
-
199
- #define nd_value u2.node
200
- #define nd_aid u3.id
201
-
202
- #define nd_lit u1.value
203
-
204
- #define nd_frml u1.node
205
- #define nd_rest u2.node
206
- #define nd_opt u1.node
207
-
208
- #define nd_recv u1.node
209
- #define nd_mid u2.id
210
- #define nd_args u3.node
211
-
212
- #define nd_noex u1.id
213
- #define nd_defn u3.node
214
-
215
- #define nd_cfnc u1.cfunc
216
- #define nd_argc u2.argc
217
-
218
- #define nd_cpath u1.node
219
- #define nd_super u3.node
220
-
221
- #define nd_modl u1.id
222
- #define nd_clss u1.value
223
-
224
- #define nd_beg u1.node
225
- #define nd_end u2.node
226
- #define nd_state u3.state
227
- #define nd_rval u2.value
228
-
229
- #define nd_nth u2.argc
230
-
231
- #define nd_tag u1.id
232
- #define nd_tval u2.value
233
-
234
- #define NEW_NODE(t,a0,a1,a2) rb_node_newnode((t),(VALUE)(a0),(VALUE)(a1),(VALUE)(a2))
235
-
236
- #define NEW_METHOD(n,x) NEW_NODE(NODE_METHOD,x,n,0)
237
- #define NEW_FBODY(n,i,o) NEW_NODE(NODE_FBODY,n,i,o)
238
- #define NEW_DEFN(i,a,d,p) NEW_NODE(NODE_DEFN,p,i,NEW_RFUNC(a,d))
239
- #define NEW_DEFS(r,i,a,d) NEW_NODE(NODE_DEFS,r,i,NEW_RFUNC(a,d))
240
- #define NEW_CFUNC(f,c) NEW_NODE(NODE_CFUNC,f,c,0)
241
- #define NEW_IFUNC(f,c) NEW_NODE(NODE_IFUNC,f,c,0)
242
- #define NEW_RFUNC(b1,b2) NEW_SCOPE(block_append(b1,b2))
243
- #define NEW_SCOPE(b) NEW_NODE(NODE_SCOPE,local_tbl(),0,(b))
244
- #define NEW_BLOCK(a) NEW_NODE(NODE_BLOCK,a,0,0)
245
- #define NEW_IF(c,t,e) NEW_NODE(NODE_IF,c,t,e)
246
- #define NEW_UNLESS(c,t,e) NEW_IF(c,e,t)
247
- #define NEW_CASE(h,b) NEW_NODE(NODE_CASE,h,b,0)
248
- #define NEW_WHEN(c,t,e) NEW_NODE(NODE_WHEN,c,t,e)
249
- #define NEW_OPT_N(b) NEW_NODE(NODE_OPT_N,0,b,0)
250
- #define NEW_WHILE(c,b,n) NEW_NODE(NODE_WHILE,c,b,n)
251
- #define NEW_UNTIL(c,b,n) NEW_NODE(NODE_UNTIL,c,b,n)
252
- #define NEW_FOR(v,i,b) NEW_NODE(NODE_FOR,v,b,i)
253
- #define NEW_ITER(v,i,b) NEW_NODE(NODE_ITER,v,b,i)
254
- #define NEW_BREAK(s) NEW_NODE(NODE_BREAK,s,0,0)
255
- #define NEW_NEXT(s) NEW_NODE(NODE_NEXT,s,0,0)
256
- #define NEW_REDO() NEW_NODE(NODE_REDO,0,0,0)
257
- #define NEW_RETRY() NEW_NODE(NODE_RETRY,0,0,0)
258
- #define NEW_BEGIN(b) NEW_NODE(NODE_BEGIN,0,b,0)
259
- #define NEW_RESCUE(b,res,e) NEW_NODE(NODE_RESCUE,b,res,e)
260
- #define NEW_RESBODY(a,ex,n) NEW_NODE(NODE_RESBODY,n,ex,a)
261
- #define NEW_ENSURE(b,en) NEW_NODE(NODE_ENSURE,b,0,en)
262
- #define NEW_RETURN(s) NEW_NODE(NODE_RETURN,s,0,0)
263
- #define NEW_YIELD(a,s) NEW_NODE(NODE_YIELD,a,0,s)
264
- #define NEW_LIST(a) NEW_ARRAY(a)
265
- #define NEW_ARRAY(a) NEW_NODE(NODE_ARRAY,a,1,0)
266
- #define NEW_ZARRAY() NEW_NODE(NODE_ZARRAY,0,0,0)
267
- #define NEW_HASH(a) NEW_NODE(NODE_HASH,a,0,0)
268
- #define NEW_NOT(a) NEW_NODE(NODE_NOT,0,a,0)
269
- #define NEW_MASGN(l,r) NEW_NODE(NODE_MASGN,l,0,r)
270
- #define NEW_GASGN(v,val) NEW_NODE(NODE_GASGN,v,val,rb_global_entry(v))
271
- #define NEW_LASGN(v,val) NEW_NODE(NODE_LASGN,v,val,local_cnt(v))
272
- #define NEW_DASGN(v,val) NEW_NODE(NODE_DASGN,v,val,0)
273
- #define NEW_DASGN_CURR(v,val) NEW_NODE(NODE_DASGN_CURR,v,val,0)
274
- #define NEW_IASGN(v,val) NEW_NODE(NODE_IASGN,v,val,0)
275
- #define NEW_CDECL(v,val,path) NEW_NODE(NODE_CDECL,v,val,path)
276
- #define NEW_CVASGN(v,val) NEW_NODE(NODE_CVASGN,v,val,0)
277
- #define NEW_CVDECL(v,val) NEW_NODE(NODE_CVDECL,v,val,0)
278
- #define NEW_OP_ASGN1(p,id,a) NEW_NODE(NODE_OP_ASGN1,p,id,a)
279
- #define NEW_OP_ASGN2(r,i,o,val) NEW_NODE(NODE_OP_ASGN2,r,val,NEW_OP_ASGN22(i,o))
280
- #define NEW_OP_ASGN22(i,o) NEW_NODE(NODE_OP_ASGN2,i,o,rb_id_attrset(i))
281
- #define NEW_OP_ASGN_OR(i,val) NEW_NODE(NODE_OP_ASGN_OR,i,val,0)
282
- #define NEW_OP_ASGN_AND(i,val) NEW_NODE(NODE_OP_ASGN_AND,i,val,0)
283
- #define NEW_GVAR(v) NEW_NODE(NODE_GVAR,v,0,rb_global_entry(v))
284
- #define NEW_LVAR(v) NEW_NODE(NODE_LVAR,v,0,local_cnt(v))
285
- #define NEW_DVAR(v) NEW_NODE(NODE_DVAR,v,0,0)
286
- #define NEW_IVAR(v) NEW_NODE(NODE_IVAR,v,0,0)
287
- #define NEW_CONST(v) NEW_NODE(NODE_CONST,v,0,0)
288
- #define NEW_CVAR(v) NEW_NODE(NODE_CVAR,v,0,0)
289
- #define NEW_NTH_REF(n) NEW_NODE(NODE_NTH_REF,0,n,local_cnt('~'))
290
- #define NEW_BACK_REF(n) NEW_NODE(NODE_BACK_REF,0,n,local_cnt('~'))
291
- #define NEW_MATCH(c) NEW_NODE(NODE_MATCH,c,0,0)
292
- #define NEW_MATCH2(n1,n2) NEW_NODE(NODE_MATCH2,n1,n2,0)
293
- #define NEW_MATCH3(r,n2) NEW_NODE(NODE_MATCH3,r,n2,0)
294
- #define NEW_LIT(l) NEW_NODE(NODE_LIT,l,0,0)
295
- #define NEW_STR(s) NEW_NODE(NODE_STR,s,0,0)
296
- #define NEW_DSTR(s) NEW_NODE(NODE_DSTR,s,1,0)
297
- #define NEW_XSTR(s) NEW_NODE(NODE_XSTR,s,0,0)
298
- #define NEW_DXSTR(s) NEW_NODE(NODE_DXSTR,s,0,0)
299
- #define NEW_DSYM(s) NEW_NODE(NODE_DSYM,s,0,0)
300
- #define NEW_EVSTR(n) NEW_NODE(NODE_EVSTR,0,(n),0)
301
- #define NEW_CALL(r,m,a) NEW_NODE(NODE_CALL,r,m,a)
302
- #define NEW_FCALL(m,a) NEW_NODE(NODE_FCALL,0,m,a)
303
- #define NEW_VCALL(m) NEW_NODE(NODE_VCALL,0,m,0)
304
- #define NEW_SUPER(a) NEW_NODE(NODE_SUPER,0,0,a)
305
- #define NEW_ZSUPER() NEW_NODE(NODE_ZSUPER,0,0,0)
306
- #define NEW_ARGS(f,o,r) NEW_NODE(NODE_ARGS,o,r,f)
307
- #define NEW_ARGSCAT(a,b) NEW_NODE(NODE_ARGSCAT,a,b,0)
308
- #define NEW_ARGSPUSH(a,b) NEW_NODE(NODE_ARGSPUSH,a,b,0)
309
- #define NEW_SPLAT(a) NEW_NODE(NODE_SPLAT,a,0,0)
310
- #define NEW_TO_ARY(a) NEW_NODE(NODE_TO_ARY,a,0,0)
311
- #define NEW_SVALUE(a) NEW_NODE(NODE_SVALUE,a,0,0)
312
- #define NEW_BLOCK_ARG(v) NEW_NODE(NODE_BLOCK_ARG,v,0,local_cnt(v))
313
- #define NEW_BLOCK_PASS(b) NEW_NODE(NODE_BLOCK_PASS,0,b,0)
314
- #define NEW_ALIAS(n,o) NEW_NODE(NODE_ALIAS,n,o,0)
315
- #define NEW_VALIAS(n,o) NEW_NODE(NODE_VALIAS,n,o,0)
316
- #define NEW_UNDEF(i) NEW_NODE(NODE_UNDEF,0,i,0)
317
- #define NEW_CLASS(n,b,s) NEW_NODE(NODE_CLASS,n,NEW_SCOPE(b),(s))
318
- #define NEW_SCLASS(r,b) NEW_NODE(NODE_SCLASS,r,NEW_SCOPE(b),0)
319
- #define NEW_MODULE(n,b) NEW_NODE(NODE_MODULE,n,NEW_SCOPE(b),0)
320
- #define NEW_COLON2(c,i) NEW_NODE(NODE_COLON2,c,i,0)
321
- #define NEW_COLON3(i) NEW_NODE(NODE_COLON3,0,i,0)
322
- #define NEW_CREF(c) (NEW_NODE(NODE_CREF,0,0,c))
323
- #define NEW_DOT2(b,e) NEW_NODE(NODE_DOT2,b,e,0)
324
- #define NEW_DOT3(b,e) NEW_NODE(NODE_DOT3,b,e,0)
325
- #define NEW_ATTRSET(a) NEW_NODE(NODE_ATTRSET,a,0,0)
326
- #define NEW_SELF() NEW_NODE(NODE_SELF,0,0,0)
327
- #define NEW_NIL() NEW_NODE(NODE_NIL,0,0,0)
328
- #define NEW_TRUE() NEW_NODE(NODE_TRUE,0,0,0)
329
- #define NEW_FALSE() NEW_NODE(NODE_FALSE,0,0,0)
330
- #define NEW_DEFINED(e) NEW_NODE(NODE_DEFINED,e,0,0)
331
- #define NEW_NEWLINE(n) NEW_NODE(NODE_NEWLINE,0,0,n)
332
- #define NEW_PREEXE(b) NEW_SCOPE(b)
333
- #define NEW_POSTEXE() NEW_NODE(NODE_POSTEXE,0,0,0)
334
- #define NEW_DMETHOD(b) NEW_NODE(NODE_DMETHOD,0,0,b)
335
- #define NEW_BMETHOD(b) NEW_NODE(NODE_BMETHOD,0,0,b)
336
- #define NEW_ATTRASGN(r,m,a) NEW_NODE(NODE_ATTRASGN,r,m,a)
337
-
338
- #define NOEX_PUBLIC 0
339
- #define NOEX_NOSUPER 1
340
- #define NOEX_PRIVATE 2
341
- #define NOEX_PROTECTED 4
342
- #define NOEX_MASK 6
343
-
344
- #define NOEX_UNDEF NOEX_NOSUPER
345
-
346
- NODE *rb_compile_cstr _((const char*, const char*, int, int));
347
- NODE *rb_compile_string _((const char*, VALUE, int));
348
- NODE *rb_compile_file _((const char*, VALUE, int));
349
-
350
- void rb_add_method _((VALUE, ID, NODE *, int));
351
- NODE *rb_node_newnode _((enum node_type,VALUE,VALUE,VALUE));
352
-
353
- NODE* rb_method_node _((VALUE klass, ID id));
354
-
355
- struct global_entry *rb_global_entry _((ID));
356
- VALUE rb_gvar_get _((struct global_entry *));
357
- VALUE rb_gvar_set _((struct global_entry *, VALUE));
358
- VALUE rb_gvar_defined _((struct global_entry *));
359
-
360
- typedef unsigned int rb_event_t;
361
-
362
- #define RUBY_EVENT_NONE 0x00
363
- #define RUBY_EVENT_LINE 0x01
364
- #define RUBY_EVENT_CLASS 0x02
365
- #define RUBY_EVENT_END 0x04
366
- #define RUBY_EVENT_CALL 0x08
367
- #define RUBY_EVENT_RETURN 0x10
368
- #define RUBY_EVENT_C_CALL 0x20
369
- #define RUBY_EVENT_C_RETURN 0x40
370
- #define RUBY_EVENT_RAISE 0x80
371
- #define RUBY_EVENT_ALL 0xff
372
-
373
- typedef void (*rb_event_hook_func_t) _((rb_event_t,NODE*,VALUE,ID,VALUE));
374
- void rb_add_event_hook _((rb_event_hook_func_t,rb_event_t));
375
- int rb_remove_event_hook _((rb_event_hook_func_t));
376
-
377
- #if defined(HAVE_GETCONTEXT) && defined(HAVE_SETCONTEXT)
378
- #include <ucontext.h>
379
- #define USE_CONTEXT
380
- #endif
381
- #include <setjmp.h>
382
- #include "st.h"
383
-
384
- #ifdef USE_CONTEXT
385
- typedef struct {
386
- ucontext_t context;
387
- volatile int status;
388
- } rb_jmpbuf_t[1];
389
- #else
390
- typedef jmp_buf rb_jmpbuf_t;
391
- #endif
392
-
393
- enum rb_thread_status {
394
- THREAD_TO_KILL,
395
- THREAD_RUNNABLE,
396
- THREAD_STOPPED,
397
- THREAD_KILLED,
398
- };
399
-
400
- typedef struct rb_thread *rb_thread_t;
401
-
402
- struct rb_thread {
403
- rb_thread_t next, prev;
404
- rb_jmpbuf_t context;
405
- #if (defined _WIN32 && !defined _WIN32_WCE) || defined __CYGWIN__
406
- unsigned long win32_exception_list;
407
- #endif
408
-
409
- VALUE result;
410
-
411
- long stk_len;
412
- long stk_max;
413
- VALUE *stk_ptr;
414
- VALUE *stk_pos;
415
- #ifdef __ia64
416
- long bstr_len;
417
- long bstr_max;
418
- VALUE *bstr_ptr;
419
- VALUE *bstr_pos;
420
- #endif
421
-
422
- struct FRAME *frame;
423
- struct SCOPE *scope;
424
- struct RVarmap *dyna_vars;
425
- struct BLOCK *block;
426
- struct iter *iter;
427
- struct tag *tag;
428
- VALUE klass;
429
- VALUE wrapper;
430
- NODE *cref;
431
-
432
- int flags; /* misc. states (vmode/rb_trap_immediate/raised) */
433
-
434
- NODE *node;
435
-
436
- int tracing;
437
- VALUE errinfo;
438
- VALUE last_status;
439
- VALUE last_line;
440
- VALUE last_match;
441
-
442
- int safe;
443
-
444
- enum rb_thread_status status;
445
- int wait_for;
446
- int fd;
447
- fd_set readfds;
448
- fd_set writefds;
449
- fd_set exceptfds;
450
- int select_value;
451
- double delay;
452
- rb_thread_t join;
453
-
454
- int abort;
455
- int priority;
456
- VALUE thgroup;
457
-
458
- struct st_table *locals;
459
-
460
- VALUE thread;
461
-
462
- VALUE sandbox;
463
- };
464
-
465
- extern VALUE (*ruby_sandbox_save)_((rb_thread_t));
466
- extern VALUE (*ruby_sandbox_restore)_((rb_thread_t));
467
- extern rb_thread_t rb_curr_thread;
468
- extern rb_thread_t rb_main_thread;
469
-
470
- #if defined(__cplusplus)
471
- } /* extern "C" { */
472
- #endif
473
-
474
- #endif