OSDN Git Service

FIRST REPOSITORY
[eos/hostdependOTHERS.git] / ALPHALINUX5 / util / ALPHALINUX5 / lib / ruby / 1.6 / alphaev56-linux / ruby.h
1 /**********************************************************************
2
3   ruby.h -
4
5   $Author: tacyas $
6   created at: Thu Jun 10 14:26:32 JST 1993
7
8   Copyright (C) 1993-2000 Yukihiro Matsumoto
9   Copyright (C) 2000  Network Applied Communication Laboratory, Inc.
10   Copyright (C) 2000  Information-technology Promotion Agency, Japan
11
12 **********************************************************************/
13
14 #ifndef RUBY_H
15 #define RUBY_H
16
17 #if defined(__cplusplus)
18 extern "C" {
19 #endif
20
21 #include "config.h"
22 #include "defines.h"
23
24 #ifdef HAVE_STDLIB_H
25 # include <stdlib.h>
26 #endif
27
28 #ifdef HAVE_STRING_H
29 # include <string.h>
30 #else
31 # include <strings.h>
32 #endif
33
34 #include <stddef.h>
35 #include <stdio.h>
36
37 /* need to include <ctype.h> to use these macros */
38 #undef ISPRINT
39 #define ISPRINT(c) isprint((unsigned char)(c))
40 #define ISSPACE(c) isspace((unsigned char)(c))
41 #define ISUPPER(c) isupper((unsigned char)(c))
42 #define ISLOWER(c) islower((unsigned char)(c))
43 #define ISALNUM(c) isalnum((unsigned char)(c))
44 #define ISALPHA(c) isalpha((unsigned char)(c))
45 #define ISDIGIT(c) isdigit((unsigned char)(c))
46 #define ISXDIGIT(c) isxdigit((unsigned char)(c))
47
48 #ifndef __STDC__
49 # define volatile
50 #endif
51
52 #undef _
53 #ifdef HAVE_PROTOTYPES
54 # define _(args) args
55 #else
56 # define _(args) ()
57 #endif
58
59 #undef __
60 #ifdef HAVE_STDARG_PROTOTYPES
61 # define __(args) args
62 #else
63 # define __(args) ()
64 #endif
65
66 #ifdef HAVE_ATTR_NORETURN
67 # define NORETURN __attribute__ ((noreturn))
68 #else
69 # define NORETURN
70 #endif
71
72 #if defined(HAVE_ALLOCA_H) && !defined(__GNUC__)
73 #include <alloca.h>
74 #endif
75
76 #ifdef _AIX
77 #pragma alloca
78 #endif
79
80 #if SIZEOF_LONG != SIZEOF_VOIDP
81 ---->> ruby requires sizeof(void*) == sizeof(long) to be compiled. <<----
82 #endif
83 typedef unsigned long VALUE;
84 typedef unsigned long ID;
85
86 #ifdef __STDC__
87 # include <limits.h>
88 #else
89 # ifndef LONG_MAX
90 #  ifdef HAVE_LIMITS_H
91 #   include <limits.h>
92 #  else
93     /* assuming 32bit(2's compliment) long */
94 #   define LONG_MAX 2147483647
95 #  endif
96 # endif
97 # ifndef LONG_MIN
98 #  define LONG_MIN (-LONG_MAX-1)
99 # endif
100 # ifndef CHAR_BIT
101 #  define CHAR_BIT 8
102 # endif
103 #endif
104
105 #define FIXNUM_MAX (LONG_MAX>>1)
106 #define FIXNUM_MIN RSHIFT((long)LONG_MIN,1)
107
108 #define FIXNUM_FLAG 0x01
109 #define INT2FIX(i) ((VALUE)(((long)(i))<<1 | FIXNUM_FLAG))
110 #define rb_fix_new(v) INT2FIX(v)
111 VALUE rb_int2inum _((long));
112 #define INT2NUM(v) rb_int2inum(v)
113 #define rb_int_new(v) rb_int2inum(v)
114 VALUE rb_uint2inum _((unsigned long));
115 #define UINT2NUM(v) rb_uint2inum(v)
116 #define rb_uint_new(v) rb_uint2inum(v)
117
118 #define FIX2LONG(x) RSHIFT((long)x,1)
119 #define FIX2ULONG(x) (((unsigned long)(x))>>1)
120 #define FIXNUM_P(f) (((long)(f))&FIXNUM_FLAG)
121 #define POSFIXABLE(f) ((f) <= FIXNUM_MAX)
122 #define NEGFIXABLE(f) ((f) >= FIXNUM_MIN)
123 #define FIXABLE(f) (POSFIXABLE(f) && NEGFIXABLE(f))
124
125 #define IMMEDIATE_MASK 0x03
126 #define IMMEDIATE_P(x) ((VALUE)(x) & IMMEDIATE_MASK)
127
128 #define SYMBOL_FLAG 0x0e
129 #define SYMBOL_P(x) (((VALUE)(x)&0xff)==SYMBOL_FLAG)
130 #define ID2SYM(x) ((VALUE)(((long)(x))<<8|SYMBOL_FLAG))
131 #define SYM2ID(x) RSHIFT((long)x,8)
132
133 /* special contants - i.e. non-zero and non-fixnum constants */
134 #define Qfalse 0
135 #define Qtrue  2
136 #define Qnil   4
137 #define Qundef 6                /* undefined value for placeholder */
138
139 #define RTEST(v) (((VALUE)(v) & ~Qnil) != 0)
140 #define NIL_P(v) ((VALUE)(v) == Qnil)
141
142 #define CLASS_OF(v) rb_class_of((VALUE)(v))
143
144 #define T_NONE   0x00
145
146 #define T_NIL    0x01
147 #define T_OBJECT 0x02
148 #define T_CLASS  0x03
149 #define T_ICLASS 0x04
150 #define T_MODULE 0x05
151 #define T_FLOAT  0x06
152 #define T_STRING 0x07
153 #define T_REGEXP 0x08
154 #define T_ARRAY  0x09
155 #define T_FIXNUM 0x0a
156 #define T_HASH   0x0b
157 #define T_STRUCT 0x0c
158 #define T_BIGNUM 0x0d
159 #define T_FILE   0x0e
160
161 #define T_TRUE   0x20
162 #define T_FALSE  0x21
163 #define T_DATA   0x22
164 #define T_MATCH  0x23
165 #define T_SYMBOL 0x24
166
167 #define T_BLKTAG 0x3b
168 #define T_UNDEF  0x3c
169 #define T_VARMAP 0x3d
170 #define T_SCOPE  0x3e
171 #define T_NODE   0x3f
172
173 #define T_MASK   0x3f
174
175 #define BUILTIN_TYPE(x) (((struct RBasic*)(x))->flags & T_MASK)
176
177 #define TYPE(x) rb_type((VALUE)(x))
178
179 void rb_check_type _((VALUE,int));
180 #define Check_Type(v,t) rb_check_type((VALUE)(v),t)
181 void rb_check_safe_str _((VALUE));
182 #define Check_SafeStr(v) rb_check_safe_str((VALUE)(v))
183 void rb_secure _((int));
184
185 EXTERN int ruby_safe_level;
186 #define rb_safe_level() (ruby_safe_level)
187 void rb_set_safe_level _((int));
188
189 long rb_num2long _((VALUE));
190 unsigned long rb_num2ulong _((VALUE));
191 #define NUM2LONG(x) (FIXNUM_P(x)?FIX2LONG(x):rb_num2long((VALUE)x))
192 #define NUM2ULONG(x) rb_num2ulong((VALUE)x)
193 #if SIZEOF_INT < SIZEOF_LONG
194 int rb_num2int _((VALUE));
195 #define NUM2INT(x) (FIXNUM_P(x)?FIX2INT(x):rb_num2int((VALUE)x))
196 int rb_fix2int _((VALUE));
197 #define FIX2INT(x) rb_fix2int((VALUE)x)
198 #define NUM2UINT(x) ((unsigned int)NUM2INT(x))
199 #define FIX2UINT(x) ((unsigned int)FIX2INT(x))
200 #else
201 #define NUM2INT(x) NUM2LONG(x)
202 #define NUM2UINT(x) NUM2ULONG(x)
203 #define FIX2INT(x) FIX2LONG(x)
204 #define FIX2UINT(x) FIX2ULONG(x)
205 #endif
206
207 double rb_num2dbl _((VALUE));
208 #define NUM2DBL(x) rb_num2dbl((VALUE)(x))
209
210 char *rb_str2cstr _((VALUE,int*));
211 #define str2cstr(x,l) rb_str2cstr((VALUE)(x),(l))
212 #define STR2CSTR(x) rb_str2cstr((VALUE)(x),0)
213
214 #define NUM2CHR(x) (((TYPE(x) == T_STRING)&&(RSTRING(x)->len>=1))?\
215                      RSTRING(x)->ptr[0]:(char)(NUM2INT(x)&0xff))
216 #define CHR2FIX(x) INT2FIX((long)((x)&0xff))
217
218 VALUE rb_newobj _((void));
219 #define NEWOBJ(obj,type) type *obj = (type*)rb_newobj()
220 #define OBJSETUP(obj,c,t) {\
221     RBASIC(obj)->flags = (t);\
222     RBASIC(obj)->klass = (c);\
223     if (rb_safe_level() >= 3) FL_SET(obj, FL_TAINT);\
224 }
225 #define CLONESETUP(clone,obj) do {\
226     OBJSETUP(clone,rb_singleton_class_clone(RBASIC(obj)->klass),RBASIC(obj)->flags);\
227     rb_singleton_class_attached(RBASIC(clone)->klass, (VALUE)clone);\
228     if (FL_TEST(obj, FL_EXIVAR)) rb_clone_generic_ivar((VALUE)clone,(VALUE)obj);\
229 } while (0)
230
231 struct RBasic {
232     unsigned long flags;
233     VALUE klass;
234 };
235
236 struct RObject {
237     struct RBasic basic;
238     struct st_table *iv_tbl;
239 };
240
241 struct RClass {
242     struct RBasic basic;
243     struct st_table *iv_tbl;
244     struct st_table *m_tbl;
245     VALUE super;
246 };
247
248 struct RFloat {
249     struct RBasic basic;
250     double value;
251 };
252
253 struct RString {
254     struct RBasic basic;
255     long len;
256     char *ptr;
257     VALUE orig;
258 };
259
260 struct RArray {
261     struct RBasic basic;
262     long len, capa;
263     VALUE *ptr;
264 };
265
266 struct RRegexp {
267     struct RBasic basic;
268     struct re_pattern_buffer *ptr;
269     long len;
270     char *str;
271 };
272
273 struct RHash {
274     struct RBasic basic;
275     struct st_table *tbl;
276     int iter_lev;
277     VALUE ifnone;
278 };
279
280 struct RFile {
281     struct RBasic basic;
282     struct OpenFile *fptr;
283 };
284
285 struct RData {
286     struct RBasic basic;
287     void (*dmark) _((void*));
288     void (*dfree) _((void*));
289     void *data;
290 };
291
292 #define DATA_PTR(dta) (RDATA(dta)->data)
293
294 /*
295 #define RUBY_DATA_FUNC(func) ((void (*)_((void*)))func)
296 */
297 typedef void (*RUBY_DATA_FUNC) _((void*));
298
299 VALUE rb_data_object_alloc _((VALUE,void*,RUBY_DATA_FUNC,RUBY_DATA_FUNC));
300
301 #define Data_Wrap_Struct(klass,mark,free,sval) (\
302     rb_data_object_alloc(klass,sval,(RUBY_DATA_FUNC)mark,(RUBY_DATA_FUNC)free)\
303 )
304
305 #define Data_Make_Struct(klass,type,mark,free,sval) (\
306     sval = ALLOC(type),\
307     memset(sval, 0, sizeof(type)),\
308     Data_Wrap_Struct(klass,mark,free,sval)\
309 )
310
311 #define Data_Get_Struct(obj,type,sval) {\
312     Check_Type(obj, T_DATA); \
313     sval = (type*)DATA_PTR(obj);\
314 }
315
316 struct RStruct {
317     struct RBasic basic;
318     long len;
319     VALUE *ptr;
320 };
321
322 struct RBignum {
323     struct RBasic basic;
324     char sign;
325     long len;
326     void *digits;
327 };
328
329 #define R_CAST(st)   (struct st*)
330 #define RBASIC(obj)  (R_CAST(RBasic)(obj))
331 #define ROBJECT(obj) (R_CAST(RObject)(obj))
332 #define RCLASS(obj)  (R_CAST(RClass)(obj))
333 #define RMODULE(obj) RCLASS(obj)
334 #define RFLOAT(obj)  (R_CAST(RFloat)(obj))
335 #define RSTRING(obj) (R_CAST(RString)(obj))
336 #define RREGEXP(obj) (R_CAST(RRegexp)(obj))
337 #define RARRAY(obj)  (R_CAST(RArray)(obj))
338 #define RHASH(obj)   (R_CAST(RHash)(obj))
339 #define RDATA(obj)   (R_CAST(RData)(obj))
340 #define RSTRUCT(obj) (R_CAST(RStruct)(obj))
341 #define RBIGNUM(obj) (R_CAST(RBignum)(obj))
342 #define RFILE(obj)   (R_CAST(RFile)(obj))
343
344 #define FL_SINGLETON FL_USER0
345 #define FL_MARK      (1<<6)
346 #define FL_FINALIZE  (1<<7)
347 #define FL_TAINT     (1<<8)
348 #define FL_EXIVAR    (1<<9)
349 #define FL_FREEZE    (1<<10)
350
351 #define FL_USHIFT    11
352
353 #define FL_USER0     (1<<(FL_USHIFT+0))
354 #define FL_USER1     (1<<(FL_USHIFT+1))
355 #define FL_USER2     (1<<(FL_USHIFT+2))
356 #define FL_USER3     (1<<(FL_USHIFT+3))
357 #define FL_USER4     (1<<(FL_USHIFT+4))
358 #define FL_USER5     (1<<(FL_USHIFT+5))
359 #define FL_USER6     (1<<(FL_USHIFT+6))
360 #define FL_USER7     (1<<(FL_USHIFT+7))
361
362 #define FL_UMASK  (0xff<<FL_USHIFT)
363
364 #define SPECIAL_CONST_P(x) (IMMEDIATE_P(x) || !RTEST(x))
365
366 #define FL_ABLE(x) (!SPECIAL_CONST_P(x))
367 #define FL_TEST(x,f) (FL_ABLE(x)?(RBASIC(x)->flags&(f)):0)
368 #define FL_SET(x,f) do {if (FL_ABLE(x)) RBASIC(x)->flags |= (f);} while (0)
369 #define FL_UNSET(x,f) do {if (FL_ABLE(x)) RBASIC(x)->flags &= ~(f);} while (0)
370 #define FL_REVERSE(x,f) do {if (FL_ABLE(x)) RBASIC(x)->flags ^= (f);} while (0)
371
372 #define OBJ_TAINTED(x) FL_TEST((x), FL_TAINT)
373 #define OBJ_TAINT(x) FL_SET((x), FL_TAINT)
374 #define OBJ_INFECT(x,s) do {if (FL_ABLE(x) && FL_ABLE(s)) RBASIC(x)->flags |= RBASIC(s)->flags & FL_TAINT;} while (0)
375
376 #define OBJ_FROZEN(x) FL_TEST((x), FL_FREEZE)
377 #define OBJ_FREEZE(x) FL_SET((x), FL_FREEZE)
378
379 #define xmalloc ruby_xmalloc
380 #define xcalloc ruby_xcalloc
381 #define xrealloc ruby_xrealloc
382 #define xfree ruby_xfree
383
384 void *xmalloc _((long));
385 void *xcalloc _((long,long));
386 void *xrealloc _((void*,long));
387 void xfree _((void*));
388
389 #define ALLOC_N(type,n) (type*)xmalloc(sizeof(type)*(n))
390 #define ALLOC(type) (type*)xmalloc(sizeof(type))
391 #define REALLOC_N(var,type,n) (var)=(type*)xrealloc((char*)(var),sizeof(type)*(n))
392
393 #define ALLOCA_N(type,n) (type*)alloca(sizeof(type)*(n))
394
395 #define MEMZERO(p,type,n) memset((p), 0, sizeof(type)*(n))
396 #define MEMCPY(p1,p2,type,n) memcpy((p1), (p2), sizeof(type)*(n))
397 #define MEMMOVE(p1,p2,type,n) memmove((p1), (p2), sizeof(type)*(n))
398 #define MEMCMP(p1,p2,type,n) memcmp((p1), (p2), sizeof(type)*(n))
399
400 void rb_glob _((char*,void(*)(),VALUE));
401 void rb_iglob _((char*,void(*)(),VALUE));
402
403 VALUE rb_define_class _((const char*,VALUE));
404 VALUE rb_define_module _((const char*));
405 VALUE rb_define_class_under _((VALUE, const char*, VALUE));
406 VALUE rb_define_module_under _((VALUE, const char*));
407
408 void rb_include_module _((VALUE,VALUE));
409 void rb_extend_object _((VALUE,VALUE));
410
411 void rb_define_variable _((const char*,VALUE*));
412 void rb_define_virtual_variable _((const char*,VALUE(*)(),void(*)()));
413 void rb_define_hooked_variable _((const char*,VALUE*,VALUE(*)(),void(*)()));
414 void rb_define_readonly_variable _((const char*,VALUE*));
415 void rb_define_const _((VALUE,const char*,VALUE));
416 void rb_define_global_const _((const char*,VALUE));
417
418 #define RUBY_METHOD_FUNC(func) ((VALUE (*)__((...)))func)
419 void rb_define_method _((VALUE,const char*,VALUE(*)(),int));
420 void rb_define_module_function _((VALUE,const char*,VALUE(*)(),int));
421 void rb_define_global_function _((const char*,VALUE(*)(),int));
422
423 void rb_undef_method _((VALUE,const char*));
424 void rb_define_alias _((VALUE,const char*,const char*));
425 void rb_define_attr _((VALUE,const char*,int,int));
426
427 void rb_global_variable _((VALUE*));
428 void rb_gc_register_address _((VALUE*));
429 void rb_gc_unregister_address _((VALUE*));
430
431 ID rb_intern _((const char*));
432 char *rb_id2name _((ID));
433 ID rb_to_id _((VALUE));
434
435 char *rb_class2name _((VALUE));
436
437 void rb_p _((VALUE));
438
439 VALUE rb_eval_string _((const char*));
440 VALUE rb_eval_string_protect _((const char*, int*));
441 VALUE rb_eval_string_wrap _((const char*, int*));
442 VALUE rb_funcall __((VALUE, ID, int, ...));
443 VALUE rb_funcall2 _((VALUE, ID, int, VALUE*));
444 VALUE rb_funcall3 _((VALUE, ID, int, VALUE*));
445 int rb_scan_args __((int, VALUE*, const char*, ...));
446 VALUE rb_call_super _((int, VALUE*));
447
448 VALUE rb_gv_set _((const char*, VALUE));
449 VALUE rb_gv_get _((const char*));
450 VALUE rb_iv_get _((VALUE, const char*));
451 VALUE rb_iv_set _((VALUE, const char*, VALUE));
452
453 VALUE rb_equal _((VALUE,VALUE));
454
455 EXTERN VALUE ruby_verbose, ruby_debug;
456
457 void rb_raise __((VALUE, const char*, ...)) NORETURN;
458 void rb_fatal __((const char*, ...)) NORETURN;
459 void rb_bug __((const char*, ...)) NORETURN;
460 void rb_sys_fail _((const char*)) NORETURN;
461 void rb_iter_break _((void)) NORETURN;
462 void rb_exit _((int)) NORETURN;
463 void rb_notimplement _((void)) NORETURN;
464
465 void rb_warn __((const char*, ...));
466 void rb_warning __((const char*, ...));         /* reports if `-w' specified */
467
468 VALUE rb_each _((VALUE));
469 VALUE rb_yield _((VALUE));
470 int rb_block_given_p _((void));
471 VALUE rb_iterate _((VALUE(*)(),VALUE,VALUE(*)(),VALUE));
472 VALUE rb_rescue _((VALUE(*)(),VALUE,VALUE(*)(),VALUE));
473 VALUE rb_rescue2 __((VALUE(*)(),VALUE,VALUE(*)(),VALUE,...));
474 VALUE rb_ensure _((VALUE(*)(),VALUE,VALUE(*)(),VALUE));
475 VALUE rb_catch _((const char*,VALUE(*)(),VALUE));
476 void rb_throw _((const char*,VALUE)) NORETURN;
477
478 VALUE rb_require _((const char*));
479
480 void ruby_init _((void));
481 void ruby_options _((int, char**));
482 void ruby_run _((void));
483
484 EXTERN VALUE rb_mKernel;
485 EXTERN VALUE rb_mComparable;
486 EXTERN VALUE rb_mEnumerable;
487 EXTERN VALUE rb_mPrecision;
488 EXTERN VALUE rb_mErrno;
489 EXTERN VALUE rb_mFileTest;
490 EXTERN VALUE rb_mGC;
491 EXTERN VALUE rb_mMath;
492 EXTERN VALUE rb_mProcess;
493
494 EXTERN VALUE rb_cObject;
495 EXTERN VALUE rb_cArray;
496 EXTERN VALUE rb_cBignum;
497 EXTERN VALUE rb_cClass;
498 EXTERN VALUE rb_cDir;
499 EXTERN VALUE rb_cData;
500 EXTERN VALUE rb_cFalseClass;
501 EXTERN VALUE rb_cFile;
502 EXTERN VALUE rb_cFixnum;
503 EXTERN VALUE rb_cFloat;
504 EXTERN VALUE rb_cHash;
505 EXTERN VALUE rb_cInteger;
506 EXTERN VALUE rb_cIO;
507 EXTERN VALUE rb_cModule;
508 EXTERN VALUE rb_cNilClass;
509 EXTERN VALUE rb_cNumeric;
510 EXTERN VALUE rb_cProc;
511 EXTERN VALUE rb_cRange;
512 EXTERN VALUE rb_cRegexp;
513 EXTERN VALUE rb_cString;
514 EXTERN VALUE rb_cSymbol;
515 EXTERN VALUE rb_cThread;
516 EXTERN VALUE rb_cTime;
517 EXTERN VALUE rb_cTrueClass;
518 EXTERN VALUE rb_cStruct;
519
520 EXTERN VALUE rb_eException;
521 EXTERN VALUE rb_eStandardError;
522 EXTERN VALUE rb_eSystemExit;
523 EXTERN VALUE rb_eInterrupt;
524 EXTERN VALUE rb_eSignal;
525 EXTERN VALUE rb_eFatal;
526 EXTERN VALUE rb_eArgError;
527 EXTERN VALUE rb_eEOFError;
528 EXTERN VALUE rb_eIndexError;
529 EXTERN VALUE rb_eRangeError;
530 EXTERN VALUE rb_eIOError;
531 EXTERN VALUE rb_eRuntimeError;
532 EXTERN VALUE rb_eSecurityError;
533 EXTERN VALUE rb_eSystemCallError;
534 EXTERN VALUE rb_eTypeError;
535 EXTERN VALUE rb_eZeroDivError;
536 EXTERN VALUE rb_eNotImpError;
537 EXTERN VALUE rb_eNoMemError;
538 EXTERN VALUE rb_eFloatDomainError;
539
540 EXTERN VALUE rb_eScriptError;
541 EXTERN VALUE rb_eNameError;
542 EXTERN VALUE rb_eSyntaxError;
543 EXTERN VALUE rb_eLoadError;
544
545 static inline VALUE
546 #if defined(__cplusplus)
547 rb_class_of(VALUE obj)
548 #else
549 rb_class_of(obj)
550     VALUE obj;
551 #endif
552 {
553     if (FIXNUM_P(obj)) return rb_cFixnum;
554     if (obj == Qnil) return rb_cNilClass;
555     if (obj == Qfalse) return rb_cFalseClass;
556     if (obj == Qtrue) return rb_cTrueClass;
557     if (SYMBOL_P(obj)) return rb_cSymbol;
558
559     return RBASIC(obj)->klass;
560 }
561
562 static inline int
563 #if defined(__cplusplus)
564 rb_type(VALUE obj)
565 #else
566 rb_type(obj)
567    VALUE obj;
568 #endif
569 {
570     if (FIXNUM_P(obj)) return T_FIXNUM;
571     if (obj == Qnil) return T_NIL;
572     if (obj == Qfalse) return T_FALSE;
573     if (obj == Qtrue) return T_TRUE;
574     if (obj == Qundef) return T_UNDEF;
575     if (SYMBOL_P(obj)) return T_SYMBOL;
576     return BUILTIN_TYPE(obj);
577 }
578
579 static inline int
580 #if defined(__cplusplus)
581 rb_special_const_p(VALUE obj)
582 #else
583 rb_special_const_p(obj)
584     VALUE obj;
585 #endif
586 {
587     if (SPECIAL_CONST_P(obj)) return Qtrue;
588     return Qfalse;
589 }
590
591 #include "intern.h"
592
593 #if defined(EXTLIB) && defined(USE_DLN_A_OUT)
594 /* hook for external modules */
595 static char *dln_libs_to_be_linked[] = { EXTLIB, 0 };
596 #endif
597
598 #ifndef rb_sys_stat
599 #define rb_sys_stat stat
600 #endif
601
602 #if defined(__cplusplus)
603 }  /* extern "C" { */
604 #endif
605
606 #endif /* ifndef RUBY_H */