17 #if defined(__cplusplus) 24 #include "ruby/config.h" 26 #include RUBY_EXTCONF_H 29 #define NORETURN_STYLE_NEW 1 31 # define NORETURN(x) x 34 # define DEPRECATED(x) x 37 # define NOINLINE(x) x 44 #define PRINTF_ARGS(decl, string_index, first_to_check) \ 45 decl __attribute__((format(printf, string_index, first_to_check))) 47 #define PRINTF_ARGS(decl, string_index, first_to_check) decl 56 #ifdef HAVE_INTRINSICS_H 57 # include <intrinsics.h> 63 #ifdef HAVE_INTTYPES_H 64 # include <inttypes.h> 72 #if defined __GNUC__ && __GNUC__ >= 4 73 #pragma GCC visibility push(default) 80 # define alloca __builtin_alloca 97 #if defined HAVE_UINTPTR_T && 0 100 # define SIGNED_VALUE intptr_t 101 # define SIZEOF_VALUE SIZEOF_UINTPTR_T 102 # undef PRI_VALUE_PREFIX 103 #elif SIZEOF_LONG == SIZEOF_VOIDP 105 typedef unsigned long ID;
106 # define SIGNED_VALUE long 107 # define SIZEOF_VALUE SIZEOF_LONG 108 # define PRI_VALUE_PREFIX "l" 109 #elif SIZEOF_LONG_LONG == SIZEOF_VOIDP 110 typedef unsigned LONG_LONG
VALUE;
111 typedef unsigned LONG_LONG
ID;
112 # define SIGNED_VALUE LONG_LONG 113 # define LONG_LONG_VALUE 1 114 # define SIZEOF_VALUE SIZEOF_LONG_LONG 115 # define PRI_VALUE_PREFIX PRI_LL_PREFIX 117 # error ---->> ruby requires sizeof(void*) == sizeof(long) or sizeof(LONG_LONG) to be compiled. <<---- 122 #ifdef SIZEOF_LONG_LONG 123 typedef char ruby_check_sizeof_long_long[SIZEOF_LONG_LONG ==
sizeof(LONG_LONG) ? 1 : -1];
127 #ifndef PRI_INT_PREFIX 128 #define PRI_INT_PREFIX "" 130 #ifndef PRI_LONG_PREFIX 131 #define PRI_LONG_PREFIX "l" 134 #if defined PRIdPTR && !defined PRI_VALUE_PREFIX 135 #define PRIdVALUE PRIdPTR 136 #define PRIoVALUE PRIoPTR 137 #define PRIuVALUE PRIuPTR 138 #define PRIxVALUE PRIxPTR 139 #define PRIXVALUE PRIXPTR 140 #define PRIsVALUE PRIiPTR 142 #define PRIdVALUE PRI_VALUE_PREFIX"d" 143 #define PRIoVALUE PRI_VALUE_PREFIX"o" 144 #define PRIuVALUE PRI_VALUE_PREFIX"u" 145 #define PRIxVALUE PRI_VALUE_PREFIX"x" 146 #define PRIXVALUE PRI_VALUE_PREFIX"X" 147 #define PRIsVALUE PRI_VALUE_PREFIX"i" 149 #ifndef PRI_VALUE_PREFIX 150 # define PRI_VALUE_PREFIX "" 153 #ifndef PRI_TIMET_PREFIX 154 # if SIZEOF_TIME_T == SIZEOF_INT 155 # define PRI_TIMET_PREFIX 156 # elif SIZEOF_TIME_T == SIZEOF_LONG 157 # define PRI_TIMET_PREFIX "l" 158 # elif SIZEOF_TIME_T == SIZEOF_LONG_LONG 159 # define PRI_TIMET_PREFIX PRI_LL_PREFIX 163 #if defined PRI_PTRDIFF_PREFIX 164 #elif SIZEOF_PTRDIFF_T == SIZEOF_INT 165 # define PRI_PTRDIFF_PREFIX "" 166 #elif SIZEOF_PTRDIFF_T == SIZEOF_LONG 167 # define PRI_PTRDIFF_PREFIX "l" 168 #elif SIZEOF_PTRDIFF_T == SIZEOF_LONG_LONG 169 # define PRI_PTRDIFF_PREFIX PRI_LL_PREFIX 171 #define PRIdPTRDIFF PRI_PTRDIFF_PREFIX"d" 172 #define PRIiPTRDIFF PRI_PTRDIFF_PREFIX"i" 173 #define PRIoPTRDIFF PRI_PTRDIFF_PREFIX"o" 174 #define PRIuPTRDIFF PRI_PTRDIFF_PREFIX"u" 175 #define PRIxPTRDIFF PRI_PTRDIFF_PREFIX"x" 176 #define PRIXPTRDIFF PRI_PTRDIFF_PREFIX"X" 178 #if defined PRI_SIZE_PREFIX 179 #elif SIZEOF_SIZE_T == SIZEOF_INT 180 # define PRI_SIZE_PREFIX "" 181 #elif SIZEOF_SIZE_T == SIZEOF_LONG 182 # define PRI_SIZE_PREFIX "l" 183 #elif SIZEOF_SIZE_T == SIZEOF_LONG_LONG 184 # define PRI_SIZE_PREFIX PRI_LL_PREFIX 186 #define PRIdSIZE PRI_SIZE_PREFIX"d" 187 #define PRIiSIZE PRI_SIZE_PREFIX"i" 188 #define PRIoSIZE PRI_SIZE_PREFIX"o" 189 #define PRIuSIZE PRI_SIZE_PREFIX"u" 190 #define PRIxSIZE PRI_SIZE_PREFIX"x" 191 #define PRIXSIZE PRI_SIZE_PREFIX"X" 197 # ifdef HAVE_LIMITS_H 201 # define LONG_MAX 2147483647 205 # define LONG_MIN (-LONG_MAX-1) 212 #ifdef HAVE_LONG_LONG 214 # ifdef LONG_LONG_MAX 215 # define LLONG_MAX LONG_LONG_MAX 218 # define LLONG_MAX _I64_MAX 221 # define LLONG_MAX 9223372036854775807LL 226 # ifdef LONG_LONG_MIN 227 # define LLONG_MIN LONG_LONG_MIN 230 # define LLONG_MIN _I64_MIN 232 # define LLONG_MIN (-LLONG_MAX-1) 238 #define FIXNUM_MAX (LONG_MAX>>1) 239 #define FIXNUM_MIN RSHIFT((long)LONG_MIN,1) 241 #define INT2FIX(i) ((VALUE)(((SIGNED_VALUE)(i))<<1 | FIXNUM_FLAG)) 242 #define LONG2FIX(i) INT2FIX(i) 243 #define rb_fix_new(v) INT2FIX(v) 246 #define rb_int_new(v) rb_int2inum(v) 249 #define rb_uint_new(v) rb_uint2inum(v) 251 #ifdef HAVE_LONG_LONG 252 VALUE rb_ll2inum(LONG_LONG);
253 #define LL2NUM(v) rb_ll2inum(v) 254 VALUE rb_ull2inum(
unsigned LONG_LONG);
255 #define ULL2NUM(v) rb_ull2inum(v) 258 #if SIZEOF_OFF_T > SIZEOF_LONG && defined(HAVE_LONG_LONG) 259 # define OFFT2NUM(v) LL2NUM(v) 260 #elif SIZEOF_OFF_T == SIZEOF_LONG 261 # define OFFT2NUM(v) LONG2NUM(v) 263 # define OFFT2NUM(v) INT2NUM(v) 266 #if SIZEOF_SIZE_T > SIZEOF_LONG && defined(HAVE_LONG_LONG) 267 # define SIZET2NUM(v) ULL2NUM(v) 268 # define SSIZET2NUM(v) LL2NUM(v) 269 #elif SIZEOF_SIZE_T == SIZEOF_LONG 270 # define SIZET2NUM(v) ULONG2NUM(v) 271 # define SSIZET2NUM(v) LONG2NUM(v) 273 # define SIZET2NUM(v) UINT2NUM(v) 274 # define SSIZET2NUM(v) INT2NUM(v) 278 # if SIZEOF_SIZE_T > SIZEOF_LONG && defined(HAVE_LONG_LONG) 279 # define SIZE_MAX ULLONG_MAX 280 # define SIZE_MIN ULLONG_MIN 281 # elif SIZEOF_SIZE_T == SIZEOF_LONG 282 # define SIZE_MAX ULONG_MAX 283 # define SIZE_MIN ULONG_MIN 284 # elif SIZEOF_SIZE_T == SIZEOF_INT 285 # define SIZE_MAX UINT_MAX 286 # define SIZE_MIN UINT_MIN 288 # define SIZE_MAX USHRT_MAX 289 # define SIZE_MIN USHRT_MIN 294 # if SIZEOF_SIZE_T > SIZEOF_LONG && defined(HAVE_LONG_LONG) 295 # define SSIZE_MAX LLONG_MAX 296 # define SSIZE_MIN LLONG_MIN 297 # elif SIZEOF_SIZE_T == SIZEOF_LONG 298 # define SSIZE_MAX LONG_MAX 299 # define SSIZE_MIN LONG_MIN 300 # elif SIZEOF_SIZE_T == SIZEOF_INT 301 # define SSIZE_MAX INT_MAX 302 # define SSIZE_MIN INT_MIN 304 # define SSIZE_MAX SHRT_MAX 305 # define SSIZE_MIN SHRT_MIN 309 #if SIZEOF_INT < SIZEOF_VALUE 313 #if SIZEOF_INT < SIZEOF_LONG 315 rb_long2int_inline(
long n)
323 #define rb_long2int(n) rb_long2int_inline(n) 325 #define rb_long2int(n) ((int)(n)) 329 #define PIDT2NUM(v) LONG2NUM(v) 332 #define NUM2PIDT(v) NUM2LONG(v) 335 #define UIDT2NUM(v) LONG2NUM(v) 338 #define NUM2UIDT(v) NUM2LONG(v) 341 #define GIDT2NUM(v) LONG2NUM(v) 344 #define NUM2GIDT(v) NUM2LONG(v) 347 #define NUM2MODET(v) NUM2INT(v) 350 #define MODET2NUM(v) INT2NUM(v) 353 #define FIX2LONG(x) (long)RSHIFT((SIGNED_VALUE)(x),1) 354 #define FIX2ULONG(x) ((((VALUE)(x))>>1)&LONG_MAX) 355 #define FIXNUM_P(f) (((int)(SIGNED_VALUE)(f))&FIXNUM_FLAG) 356 #define POSFIXABLE(f) ((f) < FIXNUM_MAX+1) 357 #define NEGFIXABLE(f) ((f) >= FIXNUM_MIN) 358 #define FIXABLE(f) (POSFIXABLE(f) && NEGFIXABLE(f)) 360 #define IMMEDIATE_P(x) ((VALUE)(x) & IMMEDIATE_MASK) 362 #define SYMBOL_P(x) (((VALUE)(x)&~(~(VALUE)0<<RUBY_SPECIAL_SHIFT))==SYMBOL_FLAG) 363 #define ID2SYM(x) (((VALUE)(x)<<RUBY_SPECIAL_SHIFT)|SYMBOL_FLAG) 364 #define SYM2ID(x) RSHIFT((unsigned long)(x),RUBY_SPECIAL_SHIFT) 367 #if SIZEOF_VALUE >= SIZEOF_DOUBLE 375 #define FLONUM_P(x) ((((int)(SIGNED_VALUE)(x))&FLONUM_MASK) == FLONUM_FLAG) 377 #define FLONUM_P(x) 0 381 #define USE_SYMBOL_AS_METHOD_NAME 1 433 #define Qfalse ((VALUE)RUBY_Qfalse) 434 #define Qtrue ((VALUE)RUBY_Qtrue) 435 #define Qnil ((VALUE)RUBY_Qnil) 436 #define Qundef ((VALUE)RUBY_Qundef) 437 #define IMMEDIATE_MASK RUBY_IMMEDIATE_MASK 438 #define FIXNUM_FLAG RUBY_FIXNUM_FLAG 440 #define FLONUM_MASK RUBY_FLONUM_MASK 441 #define FLONUM_FLAG RUBY_FLONUM_FLAG 443 #define SYMBOL_FLAG RUBY_SYMBOL_FLAG 445 #define RTEST(v) !(((VALUE)(v) & ~Qnil) == 0) 446 #define NIL_P(v) !((VALUE)(v) != Qnil) 448 #define CLASS_OF(v) rb_class_of((VALUE)(v)) 483 #define T_NONE RUBY_T_NONE 484 #define T_NIL RUBY_T_NIL 485 #define T_OBJECT RUBY_T_OBJECT 486 #define T_CLASS RUBY_T_CLASS 487 #define T_ICLASS RUBY_T_ICLASS 488 #define T_MODULE RUBY_T_MODULE 489 #define T_FLOAT RUBY_T_FLOAT 490 #define T_STRING RUBY_T_STRING 491 #define T_REGEXP RUBY_T_REGEXP 492 #define T_ARRAY RUBY_T_ARRAY 493 #define T_HASH RUBY_T_HASH 494 #define T_STRUCT RUBY_T_STRUCT 495 #define T_BIGNUM RUBY_T_BIGNUM 496 #define T_FILE RUBY_T_FILE 497 #define T_FIXNUM RUBY_T_FIXNUM 498 #define T_TRUE RUBY_T_TRUE 499 #define T_FALSE RUBY_T_FALSE 500 #define T_DATA RUBY_T_DATA 501 #define T_MATCH RUBY_T_MATCH 502 #define T_SYMBOL RUBY_T_SYMBOL 503 #define T_RATIONAL RUBY_T_RATIONAL 504 #define T_COMPLEX RUBY_T_COMPLEX 505 #define T_UNDEF RUBY_T_UNDEF 506 #define T_NODE RUBY_T_NODE 507 #define T_ZOMBIE RUBY_T_ZOMBIE 508 #define T_MASK RUBY_T_MASK 510 #define BUILTIN_TYPE(x) (int)(((struct RBasic*)(x))->flags & T_MASK) 513 #define TYPE(x) rb_type((VALUE)(x)) 518 #define RB_GC_GUARD_PTR(ptr) \ 519 __extension__ ({volatile VALUE *rb_gc_guarded_ptr = (ptr); rb_gc_guarded_ptr;}) 522 #pragma optimize("", off) 526 #pragma optimize("", on) 528 #define RB_GC_GUARD_PTR(ptr) rb_gc_guarded_ptr(ptr) 530 #define RB_GC_GUARD(v) (*RB_GC_GUARD_PTR(&(v))) 533 #define RB_UNUSED_VAR(x) x __attribute__ ((unused)) 535 #define RB_UNUSED_VAR(x) x 539 #define Check_Type(v,t) rb_check_type((VALUE)(v),(t)) 546 #define StringValue(v) rb_string_value(&(v)) 547 #define StringValuePtr(v) rb_string_value_ptr(&(v)) 548 #define StringValueCStr(v) rb_string_value_cstr(&(v)) 552 #define SafeStringValue(v) do {\ 554 rb_check_safe_obj(v);\ 557 #define Check_SafeStr(v) rb_check_safe_str((VALUE)(v)) 560 #define ExportStringValue(v) do {\ 562 (v) = rb_str_export(v);\ 567 #define FilePathValue(v) (RB_GC_GUARD(v) = rb_get_path(v)) 570 #define FilePathStringValue(v) ((v) = rb_get_path_no_checksafe(v)) 592 #define NUM2LONG(x) rb_num2long_inline(x) 593 static inline unsigned long 601 #define NUM2ULONG(x) rb_num2ulong_inline(x) 602 #if SIZEOF_INT < SIZEOF_LONG 605 #define FIX2INT(x) ((int)rb_fix2int((VALUE)(x))) 608 rb_num2int_inline(
VALUE x)
615 #define NUM2INT(x) rb_num2int_inline(x) 617 unsigned long rb_num2uint(
VALUE);
618 #define NUM2UINT(x) ((unsigned int)rb_num2uint(x)) 619 unsigned long rb_fix2uint(
VALUE);
620 #define FIX2UINT(x) ((unsigned int)rb_fix2uint(x)) 622 #define NUM2INT(x) ((int)NUM2LONG(x)) 623 #define NUM2UINT(x) ((unsigned int)NUM2ULONG(x)) 624 #define FIX2INT(x) ((int)FIX2LONG(x)) 625 #define FIX2UINT(x) ((unsigned int)FIX2ULONG(x)) 632 #define FIX2SHORT(x) (rb_fix2short((VALUE)(x))) 642 #define NUM2SHORT(x) rb_num2short_inline(x) 643 #define NUM2USHORT(x) rb_num2ushort(x) 645 #ifdef HAVE_LONG_LONG 646 LONG_LONG rb_num2ll(
VALUE);
647 unsigned LONG_LONG rb_num2ull(
VALUE);
648 static inline LONG_LONG
649 rb_num2ll_inline(
VALUE x)
656 # define NUM2LL(x) rb_num2ll_inline(x) 657 # define NUM2ULL(x) rb_num2ull(x) 660 #if defined(HAVE_LONG_LONG) && SIZEOF_OFF_T > SIZEOF_LONG 661 # define NUM2OFFT(x) ((off_t)NUM2LL(x)) 663 # define NUM2OFFT(x) NUM2LONG(x) 666 #if defined(HAVE_LONG_LONG) && SIZEOF_SIZE_T > SIZEOF_LONG 667 # define NUM2SIZET(x) ((size_t)NUM2ULL(x)) 668 # define NUM2SSIZET(x) ((ssize_t)NUM2LL(x)) 670 # define NUM2SIZET(x) NUM2ULONG(x) 671 # define NUM2SSIZET(x) NUM2LONG(x) 675 #define NUM2DBL(x) rb_num2dbl((VALUE)(x)) 682 #define NEWOBJ(obj,type) type *(obj) = (type*)rb_newobj() 683 #define NEWOBJ_OF(obj,type,klass,flags) type *(obj) = (type*)rb_newobj_of(klass, flags) 684 #define OBJSETUP(obj,c,t) do {\ 685 RBASIC(obj)->flags = (t);\ 686 RBASIC(obj)->klass = (c);\ 687 if (rb_safe_level() >= 3) FL_SET((obj), FL_TAINT | FL_UNTRUSTED);\ 689 #define CLONESETUP(clone,obj) do {\ 690 OBJSETUP((clone),rb_singleton_class_clone((VALUE)(obj)),RBASIC(obj)->flags);\ 691 rb_singleton_class_attached(RBASIC(clone)->klass, (VALUE)(clone));\ 692 if (FL_TEST((obj), FL_EXIVAR)) rb_copy_generic_ivar((VALUE)(clone),(VALUE)(obj));\ 694 #define DUPSETUP(dup,obj) do {\ 695 OBJSETUP((dup),rb_obj_class(obj), (RBASIC(obj)->flags)&(T_MASK|FL_EXIVAR|FL_TAINT|FL_UNTRUSTED)); \ 696 if (FL_TEST((obj), FL_EXIVAR)) rb_copy_generic_ivar((VALUE)(dup),(VALUE)(obj));\ 704 __attribute__((aligned(
sizeof(
VALUE))))
708 #define ROBJECT_EMBED_LEN_MAX 3 720 #define ROBJECT_EMBED FL_USER1 721 #define ROBJECT_NUMIV(o) \ 722 ((RBASIC(o)->flags & ROBJECT_EMBED) ? \ 723 ROBJECT_EMBED_LEN_MAX : \ 724 ROBJECT(o)->as.heap.numiv) 725 #define ROBJECT_IVPTR(o) \ 726 ((RBASIC(o)->flags & ROBJECT_EMBED) ? \ 727 ROBJECT(o)->as.ary : \ 728 ROBJECT(o)->as.heap.ivptr) 729 #define ROBJECT_IV_INDEX_TBL(o) \ 730 ((RBASIC(o)->flags & ROBJECT_EMBED) ? \ 731 RCLASS_IV_INDEX_TBL(rb_obj_class(o)) : \ 732 ROBJECT(o)->as.heap.iv_index_tbl) 743 #define RCLASS_SUPER(c) rb_class_get_superclass(c) 744 #define RMODULE_IV_TBL(m) RCLASS_IV_TBL(m) 745 #define RMODULE_CONST_TBL(m) RCLASS_CONST_TBL(m) 746 #define RMODULE_M_TBL(m) RCLASS_M_TBL(m) 747 #define RMODULE_SUPER(m) RCLASS_SUPER(m) 748 #define RMODULE_IS_OVERLAID FL_USER2 749 #define RMODULE_IS_REFINEMENT FL_USER3 750 #define RMODULE_INCLUDED_INTO_REFINEMENT FL_USER4 760 #define RUBY_BIT_ROTL(v, n) (((v) << (n)) | ((v) >> ((sizeof(v) * 8) - n))) 761 #define RUBY_BIT_ROTR(v, n) (((v) >> (n)) | ((v) << ((sizeof(v) * 8) - n))) 767 if (
v != (
VALUE)0x8000000000000002) {
785 return ((
struct RFloat *)
v)->float_value;
799 bits = (int)((
VALUE)(t.v >> 60) & 0x7);
805 if (t.v != 0x3000000000000000 &&
806 !((bits-3) & ~0x01)) {
810 if (t.v == (
VALUE)0) {
812 return 0x8000000000000002;
826 return ((
struct RFloat *)
v)->float_value;
836 #define RFLOAT_VALUE(v) rb_float_value(v) 837 #define DBL2NUM(dbl) rb_float_new(dbl) 839 #define ELTS_SHARED FL_USER2 841 #define RSTRING_EMBED_LEN_MAX ((int)((sizeof(VALUE)*3)/sizeof(char)-1)) 856 #define RSTRING_NOEMBED FL_USER1 857 #define RSTRING_EMBED_LEN_MASK (FL_USER2|FL_USER3|FL_USER4|FL_USER5|FL_USER6) 858 #define RSTRING_EMBED_LEN_SHIFT (FL_USHIFT+2) 859 #define RSTRING_EMBED_LEN(str) \ 860 (long)((RBASIC(str)->flags >> RSTRING_EMBED_LEN_SHIFT) & \ 861 (RSTRING_EMBED_LEN_MASK >> RSTRING_EMBED_LEN_SHIFT)) 862 #define RSTRING_LEN(str) \ 863 (!(RBASIC(str)->flags & RSTRING_NOEMBED) ? \ 864 RSTRING_EMBED_LEN(str) : \ 865 RSTRING(str)->as.heap.len) 866 #define RSTRING_PTR(str) \ 867 (!(RBASIC(str)->flags & RSTRING_NOEMBED) ? \ 868 RSTRING(str)->as.ary : \ 869 RSTRING(str)->as.heap.ptr) 870 #define RSTRING_END(str) \ 871 (!(RBASIC(str)->flags & RSTRING_NOEMBED) ? \ 872 (RSTRING(str)->as.ary + RSTRING_EMBED_LEN(str)) : \ 873 (RSTRING(str)->as.heap.ptr + RSTRING(str)->as.heap.len)) 874 #define RSTRING_LENINT(str) rb_long2int(RSTRING_LEN(str)) 875 #define RSTRING_GETMEM(str, ptrvar, lenvar) \ 876 (!(RBASIC(str)->flags & RSTRING_NOEMBED) ? \ 877 ((ptrvar) = RSTRING(str)->as.ary, (lenvar) = RSTRING_EMBED_LEN(str)) : \ 878 ((ptrvar) = RSTRING(str)->as.heap.ptr, (lenvar) = RSTRING(str)->as.heap.len)) 880 #define RARRAY_EMBED_LEN_MAX 3 895 #define RARRAY_EMBED_FLAG FL_USER1 897 #define RARRAY_EMBED_LEN_MASK (FL_USER4|FL_USER3) 898 #define RARRAY_EMBED_LEN_SHIFT (FL_USHIFT+3) 899 #define RARRAY_LEN(a) \ 900 ((RBASIC(a)->flags & RARRAY_EMBED_FLAG) ? \ 901 (long)((RBASIC(a)->flags >> RARRAY_EMBED_LEN_SHIFT) & \ 902 (RARRAY_EMBED_LEN_MASK >> RARRAY_EMBED_LEN_SHIFT)) : \ 903 RARRAY(a)->as.heap.len) 904 #define RARRAY_PTR(a) \ 905 ((RBASIC(a)->flags & RARRAY_EMBED_FLAG) ? \ 906 RARRAY(a)->as.ary : \ 907 RARRAY(a)->as.heap.ptr) 908 #define RARRAY_LENINT(ary) rb_long2int(RARRAY_LEN(ary)) 916 #define RREGEXP_SRC(r) RREGEXP(r)->src 917 #define RREGEXP_SRC_PTR(r) RSTRING_PTR(RREGEXP(r)->src) 918 #define RREGEXP_SRC_LEN(r) RSTRING_LEN(RREGEXP(r)->src) 919 #define RREGEXP_SRC_END(r) RSTRING_END(RREGEXP(r)->src) 928 #define RHASH_TBL(h) rb_hash_tbl(h) 929 #define RHASH_ITER_LEV(h) (RHASH(h)->iter_lev) 930 #define RHASH_IFNONE(h) (RHASH(h)->ifnone) 931 #define RHASH_SIZE(h) (RHASH(h)->ntbl ? RHASH(h)->ntbl->num_entries : 0) 932 #define RHASH_EMPTY_P(h) (RHASH_SIZE(h) == 0) 974 #define HAVE_TYPE_RB_DATA_TYPE_T 1 975 #define HAVE_RB_DATA_TYPE_T_FUNCTION 1 976 #define HAVE_RB_DATA_TYPE_T_PARENT 1 985 #define DATA_PTR(dta) (RDATA(dta)->data) 987 #define RTYPEDDATA_P(v) (RTYPEDDATA(v)->typed_flag == 1) 988 #define RTYPEDDATA_TYPE(v) (RTYPEDDATA(v)->type) 989 #define RTYPEDDATA_DATA(v) (RTYPEDDATA(v)->data) 1001 #define Check_TypedStruct(v,t) rb_check_typeddata((VALUE)(v),(t)) 1002 #define RUBY_DEFAULT_FREE ((RUBY_DATA_FUNC)-1) 1003 #define RUBY_NEVER_FREE ((RUBY_DATA_FUNC)0) 1004 #define RUBY_TYPED_DEFAULT_FREE RUBY_DEFAULT_FREE 1005 #define RUBY_TYPED_NEVER_FREE RUBY_NEVER_FREE 1007 #define Data_Wrap_Struct(klass,mark,free,sval)\ 1008 rb_data_object_alloc((klass),(sval),(RUBY_DATA_FUNC)(mark),(RUBY_DATA_FUNC)(free)) 1010 #define Data_Make_Struct(klass,type,mark,free,sval) (\ 1011 (sval) = ALLOC(type),\ 1012 memset((sval), 0, sizeof(type)),\ 1013 Data_Wrap_Struct((klass),(mark),(free),(sval))\ 1016 #define TypedData_Wrap_Struct(klass,data_type,sval)\ 1017 rb_data_typed_object_alloc((klass),(sval),(data_type)) 1019 #define TypedData_Make_Struct(klass, type, data_type, sval) (\ 1020 (sval) = ALLOC(type),\ 1021 memset((sval), 0, sizeof(type)),\ 1022 TypedData_Wrap_Struct((klass),(data_type),(sval))\ 1025 #define Data_Get_Struct(obj,type,sval) do {\ 1026 Check_Type((obj), T_DATA); \ 1027 (sval) = (type*)DATA_PTR(obj);\ 1030 #define TypedData_Get_Struct(obj,type,data_type,sval) do {\ 1031 (sval) = (type*)rb_check_typeddata((obj), (data_type)); \ 1034 #define RSTRUCT_EMBED_LEN_MAX 3 1045 #define RSTRUCT_EMBED_LEN_MASK (FL_USER2|FL_USER1) 1046 #define RSTRUCT_EMBED_LEN_SHIFT (FL_USHIFT+1) 1047 #define RSTRUCT_LEN(st) \ 1048 ((RBASIC(st)->flags & RSTRUCT_EMBED_LEN_MASK) ? \ 1049 (long)((RBASIC(st)->flags >> RSTRUCT_EMBED_LEN_SHIFT) & \ 1050 (RSTRUCT_EMBED_LEN_MASK >> RSTRUCT_EMBED_LEN_SHIFT)) : \ 1051 RSTRUCT(st)->as.heap.len) 1052 #define RSTRUCT_PTR(st) \ 1053 ((RBASIC(st)->flags & RSTRUCT_EMBED_LEN_MASK) ? \ 1054 RSTRUCT(st)->as.ary : \ 1055 RSTRUCT(st)->as.heap.ptr) 1056 #define RSTRUCT_LENINT(st) rb_long2int(RSTRUCT_LEN(st)) 1058 #define RBIGNUM_EMBED_LEN_MAX ((int)((sizeof(VALUE)*3)/sizeof(BDIGIT))) 1069 #define RBIGNUM_SIGN_BIT FL_USER1 1071 #define RBIGNUM_SIGN(b) ((RBASIC(b)->flags & RBIGNUM_SIGN_BIT) != 0) 1072 #define RBIGNUM_SET_SIGN(b,sign) \ 1073 ((sign) ? (RBASIC(b)->flags |= RBIGNUM_SIGN_BIT) \ 1074 : (RBASIC(b)->flags &= ~RBIGNUM_SIGN_BIT)) 1075 #define RBIGNUM_POSITIVE_P(b) RBIGNUM_SIGN(b) 1076 #define RBIGNUM_NEGATIVE_P(b) (!RBIGNUM_SIGN(b)) 1078 #define RBIGNUM_EMBED_FLAG FL_USER2 1079 #define RBIGNUM_EMBED_LEN_MASK (FL_USER5|FL_USER4|FL_USER3) 1080 #define RBIGNUM_EMBED_LEN_SHIFT (FL_USHIFT+3) 1081 #define RBIGNUM_LEN(b) \ 1082 ((RBASIC(b)->flags & RBIGNUM_EMBED_FLAG) ? \ 1083 (long)((RBASIC(b)->flags >> RBIGNUM_EMBED_LEN_SHIFT) & \ 1084 (RBIGNUM_EMBED_LEN_MASK >> RBIGNUM_EMBED_LEN_SHIFT)) : \ 1085 RBIGNUM(b)->as.heap.len) 1087 #define RBIGNUM_DIGITS(b) \ 1088 ((RBASIC(b)->flags & RBIGNUM_EMBED_FLAG) ? \ 1089 RBIGNUM(b)->as.ary : \ 1090 RBIGNUM(b)->as.heap.digits) 1091 #define RBIGNUM_LENINT(b) rb_long2int(RBIGNUM_LEN(b)) 1093 #define R_CAST(st) (struct st*) 1094 #define RBASIC(obj) (R_CAST(RBasic)(obj)) 1095 #define ROBJECT(obj) (R_CAST(RObject)(obj)) 1096 #define RCLASS(obj) (R_CAST(RClass)(obj)) 1097 #define RMODULE(obj) RCLASS(obj) 1098 #define RFLOAT(obj) (R_CAST(RFloat)(obj)) 1099 #define RSTRING(obj) (R_CAST(RString)(obj)) 1100 #define RREGEXP(obj) (R_CAST(RRegexp)(obj)) 1101 #define RARRAY(obj) (R_CAST(RArray)(obj)) 1102 #define RHASH(obj) (R_CAST(RHash)(obj)) 1103 #define RDATA(obj) (R_CAST(RData)(obj)) 1104 #define RTYPEDDATA(obj) (R_CAST(RTypedData)(obj)) 1105 #define RSTRUCT(obj) (R_CAST(RStruct)(obj)) 1106 #define RBIGNUM(obj) (R_CAST(RBignum)(obj)) 1107 #define RFILE(obj) (R_CAST(RFile)(obj)) 1108 #define RRATIONAL(obj) (R_CAST(RRational)(obj)) 1109 #define RCOMPLEX(obj) (R_CAST(RComplex)(obj)) 1111 #define FL_SINGLETON FL_USER0 1112 #define FL_RESERVED1 (((VALUE)1)<<5) 1113 #define FL_RESERVED2 (((VALUE)1)<<6) 1114 #define FL_FINALIZE (((VALUE)1)<<7) 1115 #define FL_TAINT (((VALUE)1)<<8) 1116 #define FL_UNTRUSTED (((VALUE)1)<<9) 1117 #define FL_EXIVAR (((VALUE)1)<<10) 1118 #define FL_FREEZE (((VALUE)1)<<11) 1120 #define FL_USHIFT 12 1122 #define FL_USER0 (((VALUE)1)<<(FL_USHIFT+0)) 1123 #define FL_USER1 (((VALUE)1)<<(FL_USHIFT+1)) 1124 #define FL_USER2 (((VALUE)1)<<(FL_USHIFT+2)) 1125 #define FL_USER3 (((VALUE)1)<<(FL_USHIFT+3)) 1126 #define FL_USER4 (((VALUE)1)<<(FL_USHIFT+4)) 1127 #define FL_USER5 (((VALUE)1)<<(FL_USHIFT+5)) 1128 #define FL_USER6 (((VALUE)1)<<(FL_USHIFT+6)) 1129 #define FL_USER7 (((VALUE)1)<<(FL_USHIFT+7)) 1130 #define FL_USER8 (((VALUE)1)<<(FL_USHIFT+8)) 1131 #define FL_USER9 (((VALUE)1)<<(FL_USHIFT+9)) 1132 #define FL_USER10 (((VALUE)1)<<(FL_USHIFT+10)) 1133 #define FL_USER11 (((VALUE)1)<<(FL_USHIFT+11)) 1134 #define FL_USER12 (((VALUE)1)<<(FL_USHIFT+12)) 1135 #define FL_USER13 (((VALUE)1)<<(FL_USHIFT+13)) 1136 #define FL_USER14 (((VALUE)1)<<(FL_USHIFT+14)) 1137 #define FL_USER15 (((VALUE)1)<<(FL_USHIFT+15)) 1138 #define FL_USER16 (((VALUE)1)<<(FL_USHIFT+16)) 1139 #define FL_USER17 (((VALUE)1)<<(FL_USHIFT+17)) 1140 #define FL_USER18 (((VALUE)1)<<(FL_USHIFT+18)) 1141 #define FL_USER19 (((VALUE)1)<<(FL_USHIFT+19)) 1143 #define SPECIAL_CONST_P(x) (IMMEDIATE_P(x) || !RTEST(x)) 1145 #define FL_ABLE(x) (!SPECIAL_CONST_P(x) && BUILTIN_TYPE(x) != T_NODE) 1146 #define FL_TEST(x,f) (FL_ABLE(x)?(RBASIC(x)->flags&(f)):0) 1147 #define FL_ANY(x,f) FL_TEST((x),(f)) 1148 #define FL_ALL(x,f) (FL_TEST((x),(f)) == (f)) 1149 #define FL_SET(x,f) do {if (FL_ABLE(x)) RBASIC(x)->flags |= (f);} while (0) 1150 #define FL_UNSET(x,f) do {if (FL_ABLE(x)) RBASIC(x)->flags &= ~(f);} while (0) 1151 #define FL_REVERSE(x,f) do {if (FL_ABLE(x)) RBASIC(x)->flags ^= (f);} while (0) 1153 #define OBJ_TAINTED(x) (!!FL_TEST((x), FL_TAINT)) 1154 #define OBJ_TAINT(x) FL_SET((x), FL_TAINT) 1155 #define OBJ_UNTRUSTED(x) (!!FL_TEST((x), FL_UNTRUSTED)) 1156 #define OBJ_UNTRUST(x) FL_SET((x), FL_UNTRUSTED) 1157 #define OBJ_INFECT(x,s) do { \ 1158 if (FL_ABLE(x) && FL_ABLE(s)) \ 1159 RBASIC(x)->flags |= RBASIC(s)->flags & \ 1160 (FL_TAINT | FL_UNTRUSTED); \ 1163 #define OBJ_FROZEN(x) (!!(FL_ABLE(x)?(RBASIC(x)->flags&(FL_FREEZE)):(FIXNUM_P(x)||FLONUM_P(x)))) 1164 #define OBJ_FREEZE(x) FL_SET((x), FL_FREEZE) 1166 #if SIZEOF_INT < SIZEOF_LONG 1167 # define INT2NUM(v) INT2FIX((int)(v)) 1168 # define UINT2NUM(v) LONG2FIX((unsigned int)(v)) 1178 #define INT2NUM(x) rb_int2num_inline(x) 1188 #define UINT2NUM(x) rb_uint2num_inline(x) 1199 #define LONG2NUM(x) rb_long2num_inline(x) 1209 #define ULONG2NUM(x) rb_ulong2num_inline(x) 1217 return (
char)(
NUM2INT(x) & 0xff);
1219 #define NUM2CHR(x) rb_num2char_inline(x) 1221 #define CHR2FIX(x) INT2FIX((long)((x)&0xff)) 1223 #define ALLOC_N(type,n) ((type*)xmalloc2((n),sizeof(type))) 1224 #define ALLOC(type) ((type*)xmalloc(sizeof(type))) 1225 #define REALLOC_N(var,type,n) ((var)=(type*)xrealloc2((char*)(var),(n),sizeof(type))) 1227 #define ALLOCA_N(type,n) ((type*)alloca(sizeof(type)*(n))) 1234 # define ALLOCV(v, n) rb_alloc_tmp_buffer(&(v), (n)) 1236 # define ALLOCV(v, n) ((n) < 1024 ? (RB_GC_GUARD(v) = 0, alloca(n)) : rb_alloc_tmp_buffer(&(v), (n))) 1238 #define ALLOCV_N(type, v, n) ((type*)ALLOCV((v), sizeof(type)*(n))) 1239 #define ALLOCV_END(v) rb_free_tmp_buffer(&(v)) 1241 #define MEMZERO(p,type,n) memset((p), 0, sizeof(type)*(n)) 1242 #define MEMCPY(p1,p2,type,n) memcpy((p1), (p2), sizeof(type)*(n)) 1243 #define MEMMOVE(p1,p2,type,n) memmove((p1), (p2), sizeof(type)*(n)) 1244 #define MEMCMP(p1,p2,type,n) memcmp((p1), (p2), sizeof(type)*(n)) 1289 #define RUBY_METHOD_FUNC(func) ((VALUE (*)(ANYARGS))(func)) 1311 #define CONST_ID_CACHE(result, str) \ 1313 static ID rb_intern_id_cache; \ 1314 if (!rb_intern_id_cache) \ 1315 rb_intern_id_cache = rb_intern2((str), (long)strlen(str)); \ 1316 result rb_intern_id_cache; \ 1318 #define CONST_ID(var, str) \ 1319 do CONST_ID_CACHE((var) =, (str)) while (0) 1323 #define rb_intern(str) \ 1324 (__builtin_constant_p(str) ? \ 1325 __extension__ (CONST_ID_CACHE((ID), (str))) : \ 1327 #define rb_intern_const(str) \ 1328 (__builtin_constant_p(str) ? \ 1329 __extension__ (rb_intern2((str), (long)strlen(str))) : \ 1332 #define rb_intern_const(str) rb_intern2((str), (long)strlen(str)) 1352 #define HAVE_RB_SCAN_ARGS_OPTIONAL_HASH 1 1363 #define ruby_verbose (*rb_ruby_verbose_ptr()) 1364 #define ruby_debug (*rb_ruby_debug_ptr()) 1511 else if (!
RTEST(obj)) {
1515 return RBASIC(obj)->klass;
1528 else if (!
RTEST(obj)) {
1535 #define RB_FLOAT_TYPE_P(obj) (FLONUM_P(obj) || (!SPECIAL_CONST_P(obj) && BUILTIN_TYPE(obj) == T_FLOAT)) 1537 #define RB_TYPE_P(obj, type) ( \ 1538 ((type) == T_FIXNUM) ? FIXNUM_P(obj) : \ 1539 ((type) == T_TRUE) ? ((obj) == Qtrue) : \ 1540 ((type) == T_FALSE) ? ((obj) == Qfalse) : \ 1541 ((type) == T_NIL) ? ((obj) == Qnil) : \ 1542 ((type) == T_UNDEF) ? ((obj) == Qundef) : \ 1543 ((type) == T_SYMBOL) ? SYMBOL_P(obj) : \ 1544 ((type) == T_FLOAT) ? RB_FLOAT_TYPE_P(obj) : \ 1545 (!SPECIAL_CONST_P(obj) && BUILTIN_TYPE(obj) == (type))) 1548 #define rb_type_p(obj, type) \ 1549 __extension__ (__builtin_constant_p(type) ? RB_TYPE_P((obj), (type)) : \ 1550 rb_type(obj) == (type)) 1552 #define rb_type_p(obj, type) (rb_type(obj) == (type)) 1556 #define rb_special_const_p(obj) \ 1557 __extension__ ({VALUE special_const_obj = (obj); (int)(SPECIAL_CONST_P(special_const_obj) ? Qtrue : Qfalse);}) 1570 #if defined(EXTLIB) && defined(USE_DLN_A_OUT) 1572 static char *dln_libs_to_be_linked[] = { EXTLIB, 0 };
1576 #define HAVE_NATIVETHREAD 1580 #define RUBY_EVENT_NONE 0x0000 1581 #define RUBY_EVENT_LINE 0x0001 1582 #define RUBY_EVENT_CLASS 0x0002 1583 #define RUBY_EVENT_END 0x0004 1584 #define RUBY_EVENT_CALL 0x0008 1585 #define RUBY_EVENT_RETURN 0x0010 1586 #define RUBY_EVENT_C_CALL 0x0020 1587 #define RUBY_EVENT_C_RETURN 0x0040 1588 #define RUBY_EVENT_RAISE 0x0080 1589 #define RUBY_EVENT_ALL 0x00ff 1592 #define RUBY_EVENT_B_CALL 0x0100 1593 #define RUBY_EVENT_B_RETURN 0x0200 1594 #define RUBY_EVENT_THREAD_BEGIN 0x0400 1595 #define RUBY_EVENT_THREAD_END 0x0800 1596 #define RUBY_EVENT_TRACEPOINT_ALL 0xFFFF 1599 #define RUBY_EVENT_SPECIFIED_LINE 0x10000 1600 #define RUBY_EVENT_SWITCH 0x20000 1601 #define RUBY_EVENT_COVERAGE 0x40000 1606 #define RB_EVENT_HOOKS_HAVE_CALLBACK_DATA 1 1612 #define rb_isascii(c) ((unsigned long)(c) < 128) 1629 #define ISASCII(c) rb_isascii((unsigned char)(c)) 1631 #define ISPRINT(c) rb_isprint((unsigned char)(c)) 1632 #define ISSPACE(c) rb_isspace((unsigned char)(c)) 1633 #define ISUPPER(c) rb_isupper((unsigned char)(c)) 1634 #define ISLOWER(c) rb_islower((unsigned char)(c)) 1635 #define ISALNUM(c) rb_isalnum((unsigned char)(c)) 1636 #define ISALPHA(c) rb_isalpha((unsigned char)(c)) 1637 #define ISDIGIT(c) rb_isdigit((unsigned char)(c)) 1638 #define ISXDIGIT(c) rb_isxdigit((unsigned char)(c)) 1640 #define TOUPPER(c) rb_toupper((unsigned char)(c)) 1641 #define TOLOWER(c) rb_tolower((unsigned char)(c)) 1645 #define STRCASECMP(s1, s2) (st_strcasecmp((s1), (s2))) 1646 #define STRNCASECMP(s1, s2, n) (st_strncasecmp((s1), (s2), (n))) 1648 unsigned long ruby_strtoul(
const char *str,
char **endptr,
int base);
1649 #define STRTOUL(str, endptr, base) (ruby_strtoul((str), (endptr), (base))) 1651 #define InitVM(ext) {void InitVM_##ext(void);InitVM_##ext();} 1654 int ruby_vsnprintf(
char *str,
size_t n,
char const *fmt, va_list ap);
1656 #ifndef RUBY_DONT_SUBST 1689 #define RUBY_INIT_STACK \ 1690 VALUE variable_in_this_stack_frame; \ 1691 ruby_init_stack(&variable_in_this_stack_frame); 1696 #define ruby_init_stack(addr) ruby_init_stack((addr), rb_ia64_bsp()) 1700 #define Init_stack(addr) ruby_init_stack(addr) 1726 #if defined __GNUC__ && __GNUC__ >= 4 1727 #pragma GCC visibility pop 1730 #if defined(__cplusplus) RUBY_EXTERN VALUE rb_cString
void rb_define_global_const(const char *, VALUE)
unsigned long ruby_strtoul(const char *str, char **endptr, int base)
int ruby_run_node(void *n)
Runs the given compiled source and exits this process.
void(* RUBY_DATA_FUNC)(void *)
void rb_glob(const char *, void(*)(const char *, VALUE, void *), VALUE)
RUBY_EXTERN VALUE rb_mProcess
ID rb_check_id(volatile VALUE *)
Returns ID for the given name if it is interned already, or 0.
RUBY_EXTERN VALUE rb_eRangeError
RUBY_EXTERN VALUE rb_cData
int ruby_cleanup(volatile int)
Destructs the VM.
RUBY_EXTERN VALUE rb_cFalseClass
RUBY_EXTERN VALUE rb_cFloat
void rb_bug(const char *fmt,...)
char * rb_string_value_ptr(volatile VALUE *)
void rb_gvar_undef_setter(VALUE val, ID id, void *data, struct rb_global_variable *gvar)
void rb_free_tmp_buffer(volatile VALUE *store)
void rb_syserr_fail(int e, const char *mesg)
void ruby_finalize(void)
Runs the VM finalization processes.
void rb_define_virtual_variable(const char *, VALUE(*)(ANYARGS), void(*)(ANYARGS))
VALUE rb_yield_values(int n,...)
ID rb_intern2(const char *, long)
void rb_global_variable(VALUE *)
int ruby_vsnprintf(char *str, size_t n, char const *fmt, va_list ap)
void rb_throw(const char *tag, VALUE val)
RUBY_EXTERN VALUE rb_cUnboundMethod
size_t ruby_stack_length(VALUE **)
SIGNED_VALUE rb_num2long(VALUE)
struct st_table * iv_index_tbl
struct RArray::@76::@77 heap
VALUE rb_str_export(VALUE)
void * ruby_options(int argc, char **argv)
Processes command line arguments and compiles the Ruby source to execute.
int rb_typeddata_inherited_p(const rb_data_type_t *child, const rb_data_type_t *parent)
void ruby_show_version(void)
Prints the version information of the CRuby interpreter to stdout.
int rb_remove_event_hook(rb_event_hook_func_t func)
static VALUE rb_float_new(double d)
VALUE ary[RARRAY_EMBED_LEN_MAX]
RUBY_EXTERN VALUE rb_eNoMethodError
void rb_gc_register_address(VALUE *)
RUBY_EXTERN VALUE rb_cRandom
int ruby_glob(const char *, int, ruby_glob_func *, VALUE)
void rb_add_event_hook(rb_event_hook_func_t func, rb_event_flag_t events, VALUE data)
VALUE rb_iterate(VALUE(*)(VALUE), VALUE, VALUE(*)(ANYARGS), VALUE)
RUBY_EXTERN VALUE rb_stdin
static VALUE rb_uint2num_inline(unsigned int v)
VALUE rb_catch_obj(VALUE, VALUE(*)(ANYARGS), VALUE)
int ruby_exec_node(void *n)
Runs the given compiled source.
void ruby_show_copyright(void)
Prints the copyright notice of the CRuby interpreter to stdout and exits this process successfully...
SSL_METHOD *(* func)(void)
static short rb_num2short_inline(VALUE x)
RUBY_EXTERN VALUE rb_eMathDomainError
char ruby_check_sizeof_int[SIZEOF_INT==sizeof(int) ? 1 :-1]
short rb_fix2short(VALUE)
RUBY_EXTERN VALUE rb_eInterrupt
ID rb_intern(const char *)
RUBY_EXTERN VALUE rb_eThreadError
VALUE rb_funcall(VALUE, ID, int,...)
Calls a method.
struct RString::@73::@74 heap
VALUE rb_iv_set(VALUE, const char *, VALUE)
VALUE rb_iv_get(VALUE, const char *)
struct RBignum::@82::@83 heap
VALUE rb_define_class_under(VALUE, const char *, VALUE)
Defines a class under the namespace of outer.
void rb_raise(VALUE exc, const char *fmt,...)
VALUE ary[RSTRUCT_EMBED_LEN_MAX]
RUBY_EXTERN VALUE rb_cDir
VALUE rb_funcall_with_block(VALUE, ID, int, const VALUE *, VALUE)
const rb_data_type_t * parent
void rb_compile_warn(const char *file, int line, const char *fmt,...)
void * rb_check_typeddata(VALUE, const rb_data_type_t *)
void rb_include_module(VALUE, VALUE)
VALUE rb_syserr_new_str(int n, VALUE arg)
int ruby_snprintf(char *str, size_t n, char const *fmt,...)
void rb_define_global_function(const char *, VALUE(*)(ANYARGS), int)
Defines a global function.
RUBY_EXTERN VALUE rb_mMath
VALUE rb_rescue(VALUE(*)(ANYARGS), VALUE, VALUE(*)(ANYARGS), VALUE)
VALUE rb_block_call(VALUE, ID, int, VALUE *, VALUE(*)(ANYARGS), VALUE)
RUBY_EXTERN VALUE rb_cProc
static volatile VALUE * rb_gc_guarded_ptr(volatile VALUE *ptr)
void rb_gc_register_mark_object(VALUE)
VALUE rb_data_object_alloc(VALUE, void *, RUBY_DATA_FUNC, RUBY_DATA_FUNC)
int ruby_native_thread_p(void)
RUBY_EXTERN VALUE rb_cMethod
void rb_undef_method(VALUE, const char *)
RUBY_EXTERN VALUE rb_eZeroDivError
VALUE rb_string_value(volatile VALUE *)
int ruby_stack_check(void)
const char * rb_obj_classname(VALUE)
static VALUE rb_class_of(VALUE obj)
VALUE rb_gv_set(const char *, VALUE)
void rb_gvar_var_setter(VALUE val, ID id, void *data, struct rb_global_variable *gvar)
void ruby_incpush(const char *)
RUBY_EXTERN VALUE rb_cComplex
RUBY_EXTERN VALUE rb_eIndexError
RUBY_EXTERN VALUE rb_cFile
static VALUE rb_long2num_inline(long v)
RUBY_EXTERN VALUE rb_eEncCompatError
void rb_prepend_module(VALUE, VALUE)
void rb_set_errinfo(VALUE)
RUBY_EXTERN VALUE rb_cCont
int rb_block_given_p(void)
VALUE rb_gv_get(const char *)
void rb_set_safe_level(int)
RUBY_EXTERN VALUE rb_eEncodingError
VALUE rb_require(const char *)
RUBY_EXTERN VALUE rb_mWaitReadable
VALUE rb_data_typed_object_alloc(VALUE klass, void *datap, const rb_data_type_t *)
RUBY_EXTERN VALUE rb_cBinding
union RArray::@76::@77::@78 aux
static int rb_type(VALUE obj)
static VALUE rb_ulong2num_inline(unsigned long v)
int ruby_brace_glob(const char *, int, ruby_glob_func *, VALUE)
RUBY_EXTERN VALUE rb_cObject
RUBY_EXTERN VALUE rb_cNameErrorMesg
char * rb_string_value_cstr(volatile VALUE *)
RUBY_EXTERN VALUE rb_cArray
VALUE rb_eval_string_protect(const char *, int *)
Evaluates the given string in an isolated binding.
void rb_obj_infect(VALUE, VALUE)
static double rb_float_value(VALUE v)
RUBY_EXTERN VALUE rb_eLoadError
RUBY_EXTERN VALUE rb_cStat
RUBY_EXTERN VALUE rb_cBasicObject
RUBY_EXTERN VALUE rb_cRange
RUBY_EXTERN VALUE rb_eFatal
RUBY_EXTERN VALUE rb_mKernel
void rb_secure_update(VALUE)
VALUE rb_define_class(const char *, VALUE)
Defines a top-level class.
RUBY_EXTERN VALUE rb_cTrueClass
RUBY_EXTERN VALUE rb_eStopIteration
void rb_define_const(VALUE, const char *, VALUE)
#define PRINTF_ARGS(decl, string_index, first_to_check)
void rb_sys_fail_str(VALUE mesg)
VALUE rb_eval_string(const char *)
Evaluates the given string in an isolated binding.
RUBY_EXTERN VALUE rb_eLocalJumpError
static long rb_num2long_inline(VALUE x)
void(* rb_event_hook_func_t)(rb_event_flag_t evflag, VALUE data, VALUE self, ID mid, VALUE klass)
char ary[RSTRING_EMBED_LEN_MAX+1]
RUBY_EXTERN VALUE rb_eKeyError
RUBY_EXTERN VALUE rb_eTypeError
RUBY_EXTERN VALUE rb_cModule
struct RStruct::@80::@81 heap
void rb_mod_syserr_fail_str(VALUE mod, int e, VALUE mesg)
size_t(* dsize)(const void *)
void ruby_stop(int ex)
Calls ruby_cleanup() and exits the process.
VALUE rb_get_path_no_checksafe(VALUE)
void rb_throw_obj(VALUE tag, VALUE value)
RUBY_EXTERN VALUE rb_eNameError
VALUE rb_float_new_in_heap(double)
VALUE rb_gvar_getter_t(ID id, void *data, struct rb_global_variable *gvar)
RUBY_EXTERN VALUE rb_cEnumerator
VALUE rb_gvar_undef_getter(ID id, void *data, struct rb_global_variable *gvar)
RUBY_EXTERN VALUE rb_eRegexpError
void ruby_set_script_name(VALUE name)
Sets the current script name to this value.
static unsigned long rb_num2ulong_inline(VALUE x)
void rb_define_alias(VALUE, const char *, const char *)
Defines an alias of a method.
RUBY_EXTERN VALUE rb_cRegexp
struct re_pattern_buffer * ptr
VALUE rb_int2big(SIGNED_VALUE)
void rb_define_module_function(VALUE, const char *, VALUE(*)(ANYARGS), int)
Defines a module function for module.
void rb_gvar_var_marker(VALUE *var)
void rb_define_readonly_variable(const char *, VALUE *)
RUBY_EXTERN VALUE rb_mEnumerable
RUBY_EXTERN VALUE rb_cEncoding
void * rb_alloc_tmp_buffer(volatile VALUE *store, long len)
long rb_fix2int(VALUE val)
VALUE rb_funcall2(VALUE, ID, int, const VALUE *)
Calls a method.
RUBY_EXTERN VALUE rb_cMatch
#define RUBY_BIT_ROTL(v, n)
void rb_fatal(const char *fmt,...)
void ruby_prog_init(void)
Defines built-in variables.
#define RSTRING_EMBED_LEN_MAX
RUBY_EXTERN VALUE rb_mWaitWritable
short rb_num2short(VALUE)
int ruby_glob_func(const char *, VALUE, void *)
VALUE rb_gvar_val_getter(ID id, void *data, struct rb_global_variable *gvar)
int rb_scan_args(int, const VALUE *, const char *,...)
RUBY_EXTERN VALUE rb_eArgError
static char rb_num2char_inline(VALUE x)
VALUE rb_catch(const char *, VALUE(*)(ANYARGS), VALUE)
#define RBIGNUM_EMBED_LEN_MAX
unsigned short rb_fix2ushort(VALUE)
RUBY_EXTERN VALUE rb_eNotImpError
VALUE rb_str_export_locale(VALUE)
VALUE * rb_ruby_debug_ptr(void)
RUBY_EXTERN VALUE rb_cThread
RUBY_EXTERN VALUE rb_eSecurityError
const char * rb_class2name(VALUE)
RUBY_EXTERN VALUE rb_cInteger
ID rb_intern_str(VALUE str)
void rb_mod_syserr_fail(VALUE mod, int e, const char *mesg)
void rb_bug_errno(const char *mesg, int errno_arg)
VALUE rb_uint2inum(VALUE)
VALUE rb_call_super(int, const VALUE *)
void ruby_init_stack(volatile VALUE *)
struct st_table * iv_index_tbl
const char * rb_id2name(ID)
RUBY_EXTERN VALUE rb_mErrno
VALUE rb_block_call_func(VALUE, VALUE, int, VALUE *)
RUBY_EXTERN VALUE rb_cNumeric
RUBY_EXTERN VALUE rb_cClass
void rb_sys_fail(const char *mesg)
RUBY_EXTERN VALUE rb_eScriptError
RUBY_EXTERN VALUE rb_mFileTest
BDIGIT ary[RBIGNUM_EMBED_LEN_MAX]
VALUE ary[ROBJECT_EMBED_LEN_MAX]
VALUE rb_funcall3(VALUE, ID, int, const VALUE *)
Calls a method.
void rb_define_hooked_variable(const char *, VALUE *, VALUE(*)(ANYARGS), void(*)(ANYARGS))
int rb_typeddata_is_kind_of(VALUE, const rb_data_type_t *)
VALUE rb_define_module_under(VALUE, const char *)
void rb_set_safe_level_force(int)
#define RSTRUCT_EMBED_LEN_MAX
void rb_iter_break_value(VALUE val)
VALUE rb_syserr_new(int, const char *)
void rb_extend_object(VALUE, VALUE)
VALUE rb_equal(VALUE, VALUE)
void rb_mod_sys_fail_str(VALUE mod, VALUE mesg)
void rb_insecure_operation(void)
RUBY_EXTERN VALUE rb_stderr
void ruby_set_stack_size(size_t)
VALUE rb_int2inum(SIGNED_VALUE)
VALUE rb_yield_values2(int n, const VALUE *argv)
VALUE rb_funcall_passing_block(VALUE, ID, int, const VALUE *)
int st_strncasecmp(const char *s1, const char *s2, size_t n)
void rb_gc_unregister_address(VALUE *)
static VALUE rb_int2num_inline(int v)
VALUE rb_newobj_of(VALUE, VALUE)
long rb_num2int(VALUE val)
RUBY_EXTERN VALUE rb_eSyntaxError
RUBY_EXTERN VALUE rb_cStruct
void * ruby_process_options(int, char **)
void ruby_script(const char *name)
Sets the current script name to this value.
void rb_define_attr(VALUE, const char *, int, int)
Defines (a) public accessor method(s) for an attribute.
#define ROBJECT_EMBED_LEN_MAX
void rb_mod_sys_fail(VALUE mod, const char *mesg)
RUBY_EXTERN VALUE rb_cBignum
unsigned long rb_event_flag_t
void ruby_sig_finalize(void)
void rb_syserr_fail_str(int e, VALUE mesg)
void rb_compile_warning(const char *file, int line, const char *fmt,...)
union RString::@73::@74::@75 aux
void ruby_init_loadpath(void)
void rb_gvar_readonly_setter(VALUE val, ID id, void *data, struct rb_global_variable *gvar)
VALUE rb_gvar_var_getter(ID id, void *data, struct rb_global_variable *gvar)
static int rb_special_const_p(VALUE obj)
void ruby_set_argv(int, char **)
RUBY_EXTERN VALUE rb_eSysStackError
#define RUBY_BIT_ROTR(v, n)
RUBY_EXTERN VALUE rb_eRuntimeError
void rb_gvar_marker_t(VALUE *var)
VALUE rb_rescue2(VALUE(*)(ANYARGS), VALUE, VALUE(*)(ANYARGS), VALUE,...)
void rb_check_safe_str(VALUE x)
void rb_check_safe_obj(VALUE)
VALUE rb_ensure(VALUE(*)(ANYARGS), VALUE, VALUE(*)(ANYARGS), VALUE)
void rb_define_variable(const char *, VALUE *)
void rb_check_type(VALUE, int)
RUBY_EXTERN VALUE rb_eException
#define RARRAY_EMBED_LEN_MAX
void rb_notimplement(void)
RUBY_EXTERN VALUE rb_eSystemExit
VALUE rb_yield_splat(VALUE)
RUBY_EXTERN VALUE rb_eNoMemError
RUBY_EXTERN VALUE rb_cRational
RUBY_EXTERN VALUE rb_eIOError
RUBY_EXTERN VALUE rb_eStandardError
RUBY_EXTERN VALUE rb_eSystemCallError
RUBY_EXTERN VALUE rb_cHash
void ruby_sysinit(int *argc, char ***argv)
Initializes the process for ruby(1).
RUBY_EXTERN VALUE rb_eFloatDomainError
char ruby_check_sizeof_voidp[SIZEOF_VOIDP==sizeof(void *) ? 1 :-1]
VALUE rb_eval_string_wrap(const char *, int *)
Evaluates the given string under a module binding in an isolated binding.
int st_strcasecmp(const char *s1, const char *s2)
const rb_data_type_t * type
VALUE rb_num2ulong(VALUE)
void rb_warning(const char *fmt,...)
RUBY_EXTERN VALUE rb_eEOFError
const char * wrap_struct_name
RUBY_EXTERN VALUE rb_stdout
VALUE * rb_ruby_verbose_ptr(void)
#define SPECIAL_CONST_P(x)
VALUE rb_define_module(const char *)
RUBY_EXTERN VALUE rb_cSymbol
struct RObject::@71::@72 heap
RUBY_EXTERN VALUE rb_mComparable
void rb_gvar_setter_t(VALUE val, ID id, void *data, struct rb_global_variable *gvar)
RUBY_EXTERN VALUE rb_cFixnum
RUBY_EXTERN VALUE rb_cTime
unsigned short rb_num2ushort(VALUE)
void rb_define_method(VALUE, const char *, VALUE(*)(ANYARGS), int)
void rb_warn(const char *fmt,...)
VALUE rb_str_to_str(VALUE)
void rb_gvar_val_setter(VALUE val, ID id, void *data, struct rb_global_variable *gvar)
RUBY_EXTERN VALUE rb_eSignal
RUBY_EXTERN VALUE rb_cNilClass
int ruby_executable_node(void *n, int *status)
Checks the return value of ruby_options().
void rb_sys_warning(const char *fmt,...)
void rb_gvar_val_marker(VALUE *var)
char ruby_check_sizeof_long[SIZEOF_LONG==sizeof(long) ? 1 :-1]
void rb_gvar_undef_marker(VALUE *var)