summaryrefslogtreecommitdiff
path: root/spec/ruby/optional/capi/ext/rubyspec.h
blob: 4f50450dfb90a05612398dcab29f228e92537c54 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
#ifndef RUBYSPEC_H
#define RUBYSPEC_H

/* Define convenience macros similar to the mspec guards to assist
 * with version incompatibilities.
 */

#include <ruby.h>
#ifdef HAVE_RUBY_VERSION_H
# include <ruby/version.h>
#else
# include <version.h>
#endif

#ifndef RUBY_VERSION_MAJOR
#define RUBY_VERSION_MAJOR RUBY_API_VERSION_MAJOR
#define RUBY_VERSION_MINOR RUBY_API_VERSION_MINOR
#define RUBY_VERSION_TEENY RUBY_API_VERSION_TEENY
#endif

#define RUBY_VERSION_BEFORE(major,minor,teeny) \
  ((RUBY_VERSION_MAJOR < (major)) || \
   (RUBY_VERSION_MAJOR == (major) && RUBY_VERSION_MINOR < (minor)) || \
   (RUBY_VERSION_MAJOR == (major) && RUBY_VERSION_MINOR == (minor) && RUBY_VERSION_TEENY < (teeny)))

#if RUBY_VERSION_MAJOR > 2 || (RUBY_VERSION_MAJOR == 2 && RUBY_VERSION_MINOR >= 4)
#define RUBY_VERSION_IS_2_4
#endif

#if RUBY_VERSION_MAJOR > 2 || (RUBY_VERSION_MAJOR == 2 && RUBY_VERSION_MINOR >= 3)
#define RUBY_VERSION_IS_2_3
#endif

/* Define all function flags */

/* Array */
#define HAVE_RB_ARRAY                      1
#define HAVE_RARRAY_AREF                   1
#define HAVE_RARRAY_LEN                    1
#define HAVE_RARRAY_PTR                    1
#define HAVE_RB_ARY_AREF                   1
#define HAVE_RB_ARY_CLEAR                  1
#define HAVE_RB_ARY_DELETE                 1
#define HAVE_RB_ARY_DELETE_AT              1
#define HAVE_RB_ARY_DUP                    1
#define HAVE_RB_ARY_ENTRY                  1
#define HAVE_RB_ARY_FREEZE                 1
#define HAVE_RB_ARY_INCLUDES               1
#define HAVE_RB_ARY_JOIN                   1
#define HAVE_RB_ARY_NEW                    1
#define HAVE_RB_ARY_NEW2                   1
#define HAVE_RB_ARY_NEW_CAPA               1
#define HAVE_RB_ARY_NEW3                   1
#define HAVE_RB_ARY_NEW_FROM_ARGS          1
#define HAVE_RB_ARY_NEW4                   1
#define HAVE_RB_ARY_NEW_FROM_VALUES        1
#define HAVE_RB_ARY_POP                    1
#define HAVE_RB_ARY_PUSH                   1
#define HAVE_RB_ARY_CAT                    1
#define HAVE_RB_ARY_REVERSE                1
#define HAVE_RB_ARY_ROTATE                 1
#define HAVE_RB_ARY_SHIFT                  1
#define HAVE_RB_ARY_STORE                  1
#define HAVE_RB_ARY_CONCAT                 1
#define HAVE_RB_ARY_PLUS                   1
#define HAVE_RB_ARY_TO_ARY                 1
#define HAVE_RB_ARY_SUBSEQ                 1
#define HAVE_RB_ARY_TO_S                   1
#define HAVE_RB_ARY_UNSHIFT                1
#define HAVE_RB_ASSOC_NEW                  1

#define HAVE_RB_EACH                       1
#define HAVE_RB_ITERATE                    1
#define HAVE_RB_MEM_CLEAR                  1

/* Bignum */
#define HAVE_ABSINT_SIZE                   1
#define HAVE_RB_BIG2DBL                    1
#define HAVE_RB_DBL2BIG                    1
#define HAVE_RB_BIG2LL                     1
#define HAVE_RB_BIG2LONG                   1
#define HAVE_RB_BIG2STR                    1
#define HAVE_RB_BIG2ULONG                  1
#define HAVE_RB_BIG_CMP                    1
#define HAVE_RB_BIG_PACK                   1

/* Class */
#define HAVE_RB_CALL_SUPER                 1
#define HAVE_RB_CLASS2NAME                 1
#define HAVE_RB_CLASS_NAME                 1
#define HAVE_RB_CLASS_NEW                  1
#define HAVE_RB_CLASS_NEW_INSTANCE         1
#define HAVE_RB_CLASS_PATH                 1
#define HAVE_RB_CLASS_REAL                 1
#define HAVE_RB_CVAR_DEFINED               1
#define HAVE_RB_CVAR_GET                   1
#define HAVE_RB_CVAR_SET                   1
#define HAVE_RB_CV_GET                     1
#define HAVE_RB_CV_SET                     1
#define HAVE_RB_DEFINE_ATTR                1
#define HAVE_RB_DEFINE_CLASS_VARIABLE      1
#define HAVE_RB_INCLUDE_MODULE             1
#define HAVE_RB_PATH2CLASS                 1
#define HAVE_RB_PATH_TO_CLASS              1
#define HAVE_RB_CLASS_SUPERCLASS           1

/* Complex */
#define HAVE_RB_COMPLEX                    1
#define HAVE_RB_COMPLEX1                   1
#define HAVE_RB_COMPLEX2                   1
#define HAVE_RB_COMPLEX_NEW                1
#define HAVE_RB_COMPLEX_NEW1               1
#define HAVE_RB_COMPLEX_NEW2               1

/* Constants */
#define HAVE_RB_CARRAY                     1
#ifndef RUBY_INTEGER_UNIFICATION
#define HAVE_RB_CBIGNUM                    1
#endif
#define HAVE_RB_CCLASS                     1
#define HAVE_RB_CDATA                      1
#define HAVE_RB_CFALSECLASS                1
#define HAVE_RB_CFILE                      1
#ifndef RUBY_INTEGER_UNIFICATION
#define HAVE_RB_CFIXNUM                    1
#endif
#define HAVE_RB_CFLOAT                     1
#define HAVE_RB_CHASH                      1
#define HAVE_RB_CINTEGER                   1
#define HAVE_RB_CIO                        1
#define HAVE_RB_CMATCH                     1
#define HAVE_RB_CMODULE                    1
#define HAVE_RB_CNILCLASS                  1
#define HAVE_RB_CNUMERIC                   1
#define HAVE_RB_COBJECT                    1
#define HAVE_RB_CPROC                      1
#define HAVE_RB_CMETHOD                    1
#define HAVE_RB_CRANGE                     1
#define HAVE_RB_CREGEXP                    1
#define HAVE_RB_CSTRING                    1
#define HAVE_RB_CSTRUCT                    1
#define HAVE_RB_CSYMBOL                    1
#define HAVE_RB_CTIME                      1
#define HAVE_RB_CTHREAD                    1
#define HAVE_RB_CTRUECLASS                 1
#define HAVE_RB_CNUMERATOR                 1
#define HAVE_RB_EARGERROR                  1
#define HAVE_RB_EEOFERROR                  1
#define HAVE_RB_EEXCEPTION                 1
#define HAVE_RB_EFLOATDOMAINERROR          1
#define HAVE_RB_EINDEXERROR                1
#define HAVE_RB_EINTERRUPT                 1
#define HAVE_RB_EIOERROR                   1
#define HAVE_RB_ELOADERROR                 1
#define HAVE_RB_ELOCALJUMPERROR            1
#define HAVE_RB_EMATHDOMAINERROR           1
#define HAVE_RB_ENAMEERROR                 1
#define HAVE_RB_ENOMEMERROR                1
#define HAVE_RB_ENOMETHODERROR             1
#define HAVE_RB_ENOTIMPERROR               1
#define HAVE_RB_ERANGEERROR                1
#define HAVE_RB_EREGEXPERROR               1
#define HAVE_RB_ERUNTIMEERROR              1
#define HAVE_RB_ESCRIPTERROR               1
#define HAVE_RB_ESECURITYERROR             1
#define HAVE_RB_ESIGNAL                    1
#define HAVE_RB_ESTANDARDERROR             1
#define HAVE_RB_ESYNTAXERROR               1
#define HAVE_RB_ESYSSTACKERROR             1
#define HAVE_RB_ESYSTEMCALLERROR           1
#define HAVE_RB_ESYSTEMEXIT                1
#define HAVE_RB_ETHREADERROR               1
#define HAVE_RB_ETYPEERROR                 1
#define HAVE_RB_EZERODIVERROR              1
#define HAVE_RB_MCOMPARABLE                1
#define HAVE_RB_MENUMERABLE                1
#define HAVE_RB_MERRNO                     1
#define HAVE_RB_MKERNEL                    1
#define HAVE_RB_CDIR                       1

/* Data */
#define HAVE_DATA_WRAP_STRUCT              1
#define HAVE_RDATA                         1

#define HAVE_TYPEDDATA_WRAP_STRUCT         1
#define HAVE_RTYPEDDATA

/* Encoding */
#define HAVE_ENCODING_GET                  1
#define HAVE_ENCODING_SET                  1
#define HAVE_ENC_CODERANGE_ASCIIONLY       1

#define HAVE_RB_ASCII8BIT_ENCODING         1
#define HAVE_RB_ASCII8BIT_ENCINDEX         1
#define HAVE_RB_USASCII_ENCODING           1
#define HAVE_RB_USASCII_ENCINDEX           1
#define HAVE_RB_UTF8_ENCODING              1
#define HAVE_RB_UTF8_ENCINDEX              1
#define HAVE_RB_LOCALE_ENCODING            1
#define HAVE_RB_LOCALE_ENCINDEX            1
#define HAVE_RB_FILESYSTEM_ENCODING        1
#define HAVE_RB_FILESYSTEM_ENCINDEX        1

#define HAVE_RB_DEFAULT_INTERNAL_ENCODING  1
#define HAVE_RB_DEFAULT_EXTERNAL_ENCODING  1

#define HAVE_RB_ENCDB_ALIAS                1
#define HAVE_RB_ENC_ASSOCIATE              1
#define HAVE_RB_ENC_ASSOCIATE_INDEX        1
#define HAVE_RB_ENC_CODEPOINT_LEN          1
#define HAVE_RB_ENC_COMPATIBLE             1
#define HAVE_RB_ENC_COPY                   1
#define HAVE_RB_ENC_FIND                   1
#define HAVE_RB_ENC_FIND_INDEX             1
#define HAVE_RB_ENC_FROM_ENCODING          1
#define HAVE_RB_ENC_FROM_INDEX             1
#define HAVE_RB_ENC_GET                    1
#define HAVE_RB_ENC_GET_INDEX              1
#define HAVE_RB_ENC_SET_INDEX              1
#define HAVE_RB_ENC_STR_CODERANGE          1
#define HAVE_RB_ENC_STR_NEW                1
#define HAVE_RB_ENC_TO_INDEX               1
#define HAVE_RB_OBJ_ENCODING               1

#define HAVE_RB_STR_ENCODE                 1
#define HAVE_RB_STR_NEW_CSTR               1
#define HAVE_RB_USASCII_STR_NEW            1
#define HAVE_RB_USASCII_STR_NEW_CSTR       1
#define HAVE_RB_EXTERNAL_STR_NEW           1
#define HAVE_RB_EXTERNAL_STR_NEW_CSTR      1
#define HAVE_RB_EXTERNAL_STR_NEW_WITH_ENC  1

#define HAVE_RB_TO_ENCODING                1
#define HAVE_RB_TO_ENCODING_INDEX          1
#define HAVE_RB_ENC_NTH                    1

#define HAVE_RB_EENCCOMPATERROR            1

#define HAVE_RB_MWAITREADABLE              1
#define HAVE_RB_MWAITWRITABLE              1

#define HAVE_RSTRING_LENINT                1
#define HAVE_TIMET2NUM                     1

#define HAVE_RB_LONG2INT                   1
#define HAVE_RB_INTERN3                    1

#define HAVE_RB_ITER_BREAK                 1
#define HAVE_RB_SOURCEFILE                 1
#define HAVE_RB_SOURCELINE                 1
#define HAVE_RB_METHOD_BOUNDP              1

/* Enumerable */
#define HAVE_RB_ENUMERATORIZE              1
#define HAVE_RB_ENUMERATORIZE_WITH_SIZE    1

/* Exception */
#define HAVE_RB_EXC_NEW                    1
#define HAVE_RB_EXC_NEW2                   1
#define HAVE_RB_EXC_NEW3                   1
#define HAVE_RB_EXC_RAISE                  1
#define HAVE_RB_SET_ERRINFO                1

/* File */
#define HAVE_RB_FILE_OPEN                  1
#define HAVE_RB_FILE_OPEN_STR              1
#define HAVE_FILEPATHVALUE                 1

/* Float */
#define HAVE_RB_FLOAT_NEW                  1
#define HAVE_RB_RFLOAT                     1
#define HAVE_RFLOAT_VALUE                  1

/* Globals */
#define HAVE_RB_DEFAULT_RS                 1
#define HAVE_RB_DEFINE_HOOKED_VARIABLE     1
#define HAVE_RB_DEFINE_READONLY_VARIABLE   1
#define HAVE_RB_DEFINE_VARIABLE            1
#define HAVE_RB_F_GLOBAL_VARIABLES         1
#define HAVE_RB_GV_GET                     1
#define HAVE_RB_GV_SET                     1
#define HAVE_RB_RS                         1
#define HAVE_RB_OUTPUT_RS                  1
#define HAVE_RB_OUTPUT_FS                  1
#define HAVE_RB_STDERR                     1
#define HAVE_RB_STDIN                      1
#define HAVE_RB_STDOUT                     1
#define HAVE_RB_DEFOUT                     1

#define HAVE_RB_LASTLINE_SET               1
#define HAVE_RB_LASTLINE_GET               1

/* Hash */
#define HAVE_RB_HASH                       1
#define HAVE_RB_HASH2                      1
#define HAVE_RB_HASH_DUP                   1
#define HAVE_RB_HASH_FREEZE                1
#define HAVE_RB_HASH_AREF                  1
#define HAVE_RB_HASH_ASET                  1
#define HAVE_RB_HASH_CLEAR                 1
#define HAVE_RB_HASH_DELETE                1
#define HAVE_RB_HASH_DELETE_IF             1
#define HAVE_RB_HASH_FETCH                 1
#define HAVE_RB_HASH_FOREACH               1
#define HAVE_RB_HASH_LOOKUP                1
#define HAVE_RB_HASH_LOOKUP2               1
#define HAVE_RB_HASH_NEW                   1
#define HAVE_RB_HASH_SET_IFNONE            1
#define HAVE_RB_HASH_SIZE                  1

/* Integer */
#define HAVE_RB_INTEGER_PACK               1

/* IO */
#define HAVE_GET_OPEN_FILE                 1
#define HAVE_RB_IO_ADDSTR                  1
#define HAVE_RB_IO_CHECK_IO                1
#define HAVE_RB_IO_CHECK_CLOSED            1
#define HAVE_RB_IO_TAINT_CHECK             1
#define HAVE_RB_IO_CHECK_READABLE          1
#define HAVE_RB_IO_CHECK_WRITABLE          1
#define HAVE_RB_IO_CLOSE                   1
#define HAVE_RB_IO_PRINT                   1
#define HAVE_RB_IO_PRINTF                  1
#define HAVE_RB_IO_PUTS                    1
#define HAVE_RB_IO_WAIT_READABLE           1
#define HAVE_RB_IO_WAIT_WRITABLE           1
#define HAVE_RB_IO_WRITE                   1
#define HAVE_RB_IO_BINMODE                 1

#define HAVE_RB_THREAD_FD_WRITABLE         1
#define HAVE_RB_THREAD_WAIT_FD             1

#define HAVE_RB_MUTEX_NEW                  1
#define HAVE_RB_MUTEX_LOCKED_P             1
#define HAVE_RB_MUTEX_TRYLOCK              1
#define HAVE_RB_MUTEX_LOCK                 1
#define HAVE_RB_MUTEX_UNLOCK               1
#define HAVE_RB_MUTEX_SLEEP                1
#define HAVE_RB_MUTEX_SYNCHRONIZE          1

#define HAVE_RB_FD_FIX_CLOEXEC             1
#define HAVE_RB_CLOEXEC_OPEN               1

/* Kernel */
#define HAVE_RB_BLOCK_GIVEN_P              1
#define HAVE_RB_BLOCK_PROC                 1
#define HAVE_RB_BLOCK_CALL                 1
#define HAVE_RB_ENSURE                     1
#define HAVE_RB_EVAL_STRING                1
#define HAVE_RB_EXEC_RECURSIVE             1
#define HAVE_RB_FRAME_THIS_FUNC             1
#define HAVE_RB_F_SPRINTF                  1
#define HAVE_RB_NEED_BLOCK                 1
#define HAVE_RB_RAISE                      1
#define HAVE_RB_RESCUE                     1
#define HAVE_RB_RESCUE2                    1
#define HAVE_RB_SET_END_PROC               1
#define HAVE_RB_SYS_FAIL                   1
#define HAVE_RB_SYSERR_FAIL                1
#define HAVE_RB_MAKE_BACKTRACE             1
#define HAVE_RB_THROW                      1
#define HAVE_RB_CATCH                      1
#define HAVE_RB_THROW_OBJ                  1
#define HAVE_RB_CATCH_OBJ                  1
#define HAVE_RB_WARN                       1
#define HAVE_RB_YIELD                      1
#define HAVE_RB_YIELD_SPLAT                1
#define HAVE_RB_YIELD_VALUES               1
#define HAVE_RB_FUNCALL3                   1
#define HAVE_RB_FUNCALL_WITH_BLOCK         1
#define HAVE_RB_PROTECT                    1

/* GC */
#define HAVE_RB_GC_REGISTER_ADDRESS        1
#define HAVE_RB_GC_ENABLE                  1
#define HAVE_RB_GC_DISABLE                 1
#define HAVE_RB_GC                         1

/* Marshal */
#define HAVE_RB_MARSHAL_DUMP               1
#define HAVE_RB_MARSHAL_LOAD               1

/* Module */
#define HAVE_RB_ALIAS                      1
#define HAVE_RB_CONST_DEFINED              1
#define HAVE_RB_CONST_DEFINED_AT           1
#define HAVE_RB_CONST_GET                  1
#define HAVE_RB_CONST_GET_AT               1
#define HAVE_RB_CONST_GET_FROM             1
#define HAVE_RB_CONST_SET                  1
#define HAVE_RB_DEFINE_ALIAS               1
#define HAVE_RB_DEFINE_CLASS               1
#define HAVE_RB_DEFINE_CLASS_UNDER         1
#define HAVE_RB_DEFINE_CLASS_ID_UNDER      1
#define HAVE_RB_DEFINE_CONST               1
#define HAVE_RB_DEFINE_GLOBAL_CONST        1
#define HAVE_RB_DEFINE_GLOBAL_FUNCTION     1
#define HAVE_RB_DEFINE_METHOD              1
#define HAVE_RB_DEFINE_MODULE_FUNCTION     1
#define HAVE_RB_DEFINE_MODULE              1
#define HAVE_RB_DEFINE_MODULE_UNDER        1
#define HAVE_RB_DEFINE_PRIVATE_METHOD      1
#define HAVE_RB_DEFINE_PROTECTED_METHOD    1
#define HAVE_RB_DEFINE_SINGLETON_METHOD    1
#define HAVE_RB_MOD_ANCESTORS              1
#define HAVE_RB_UNDEF                      1
#define HAVE_RB_UNDEF_METHOD               1

/* Numeric */
#define HAVE_NUM2CHR                       1
#define HAVE_RB_CMPINT                     1
#define HAVE_RB_INT2INUM                   1
#define HAVE_RB_UINT2INUM                  1
#define HAVE_RB_INTEGER                    1
#define HAVE_RB_LL2INUM                    1
#define HAVE_RB_ULL2INUM                   1
#define HAVE_RB_NUM2DBL                    1
#if SIZEOF_INT < SIZEOF_LONG
#define HAVE_RB_NUM2INT                    1
#define HAVE_RB_NUM2UINT                   1
#endif
#define HAVE_RB_NUM2LONG                   1
#define HAVE_RB_INT2NUM                    1
#define HAVE_RB_NUM2ULONG                  1
#define HAVE_RB_NUM_COERCE_BIN             1
#define HAVE_RB_NUM_COERCE_CMP             1
#define HAVE_RB_NUM_COERCE_RELOP           1
#define HAVE_RB_ABSINT_SINGLEBIT_P         1
#define HAVE_RB_NUM_ZERODIV                1

/* Fixnum */
#if SIZEOF_INT < SIZEOF_LONG
#define HAVE_RB_FIX2UINT                   1
#define HAVE_RB_FIX2INT                    1
#endif

/* Object */
#define HAVE_FL_ABLE                       1
#define HAVE_FL_TEST                       1
#define HAVE_OBJ_TAINT                     1
#define HAVE_OBJ_TAINTED                   1
#define HAVE_OBJ_INFECT                    1
#define HAVE_RB_ANY_TO_S                   1
#define HAVE_RB_ATTR_GET                   1
#define HAVE_RB_OBJ_INSTANCE_VARIABLES     1
#define HAVE_RB_CHECK_ARRAY_TYPE           1
#define HAVE_RB_CHECK_CONVERT_TYPE         1
#define HAVE_RB_CHECK_TO_INTEGER           1
#define HAVE_RB_CHECK_FROZEN               1
#define HAVE_RB_CHECK_STRING_TYPE          1
#define HAVE_RB_CLASS_OF                   1
#define HAVE_RB_CONVERT_TYPE               1
#define HAVE_RB_EQUAL                      1
#define HAVE_RB_CLASS_INHERITED_P          1
#define HAVE_RB_EXTEND_OBJECT              1
#define HAVE_RB_INSPECT                    1
#define HAVE_RB_IVAR_DEFINED               1
#define HAVE_RB_IVAR_GET                   1
#define HAVE_RB_IVAR_SET                   1
#define HAVE_RB_IV_GET                     1
#define HAVE_RB_IV_SET                     1
#define HAVE_RB_OBJ_ALLOC                  1
#define HAVE_RB_OBJ_CALL_INIT              1
#define HAVE_RB_OBJ_CLASSNAME              1
#define HAVE_RB_OBJ_DUP                    1
#define HAVE_RB_OBJ_FREEZE                 1
#define HAVE_RB_OBJ_FROZEN_P               1
#define HAVE_RB_OBJ_ID                     1
#define HAVE_RB_OBJ_INSTANCE_EVAL          1
#define HAVE_RB_OBJ_IS_INSTANCE_OF         1
#define HAVE_RB_OBJ_IS_KIND_OF             1
#define HAVE_RB_OBJ_TAINT                  1
#define HAVE_RB_OBJ_METHOD                 1
#define HAVE_RB_OBJ_METHOD_ARITY           1
#define HAVE_RB_REQUIRE                    1
#define HAVE_RB_RESPOND_TO                 1
#define HAVE_RB_OBJ_RESPOND_TO             1
#define HAVE_RB_SPECIAL_CONST_P            1
#define HAVE_RB_TO_ID                      1
#define HAVE_RB_TO_INT                     1
#define HAVE_RTEST                         1
#define HAVE_TYPE                          1
#define HAVE_RB_TYPE_P                     1
#define HAVE_BUILTIN_TYPE                  1

/* Proc */
#define HAVE_RB_PROC_NEW                   1
#define HAVE_RB_PROC_ARITY                 1
#define HAVE_RB_PROC_CALL                  1

/* Range */
#define HAVE_RB_RANGE_NEW                  1
#define HAVE_RB_RANGE_VALUES               1
#define HAVE_RB_RANGE_BEG_LEN              1

/* Rational */
#define HAVE_RB_RATIONAL                   1
#define HAVE_RB_RATIONAL1                  1
#define HAVE_RB_RATIONAL2                  1
#define HAVE_RB_RATIONAL_NEW               1
#define HAVE_RB_RATIONAL_NEW1              1
#define HAVE_RB_RATIONAL_NEW2              1
#define HAVE_RB_RATIONAL_NUM               1
#define HAVE_RB_RATIONAL_DEN               1

/* Regexp */
#define HAVE_RB_BACKREF_GET                1
#define HAVE_RB_REG_MATCH                  1
#define HAVE_RB_REG_NEW                    1
#define HAVE_RB_REG_NTH_MATCH              1
#define HAVE_RB_REG_OPTIONS                1
#define HAVE_RB_REG_REGCOMP                1

/* st */
#define HAVE_RB_ST                         1

/* String */
#define HAVE_RB_CSTR2INUM                  1
#define HAVE_RB_CSTR_TO_INUM               1
#define HAVE_RB_STR2INUM                   1
#define HAVE_RB_STR_APPEND                 1
#define HAVE_RB_STR_BUF_CAT                1
#define HAVE_RB_STR_BUF_NEW                1
#define HAVE_RB_STR_BUF_NEW2               1
#define HAVE_RB_STR_CAT                    1
#define HAVE_RB_STR_CAT2                   1
#define HAVE_RB_STR_CMP                    1
#define HAVE_RB_STR_DUP                    1
#define HAVE_RB_STR_FLUSH                  1
#define HAVE_RB_STR_FREEZE                 1
#define HAVE_RB_STR_HASH                   1
#define HAVE_RB_STR_UPDATE                 1
#define HAVE_RB_STR_INSPECT                1
#define HAVE_RB_STR_INTERN                 1
#define HAVE_RB_STR_NEW                    1
#define HAVE_RB_STR_NEW2                   1
#define HAVE_RB_STR_NEW3                   1
#define HAVE_RB_STR_NEW4                   1
#define HAVE_RB_STR_NEW5                   1
#define HAVE_RB_TAINTED_STR_NEW            1
#define HAVE_RB_TAINTED_STR_NEW2           1
#define HAVE_RB_STR_PLUS                   1
#define HAVE_RB_STR_TIMES                  1
#define HAVE_RB_STR_RESIZE                 1
#define HAVE_RB_STR_SET_LEN                1
#define HAVE_RB_STR_SPLIT                  1
#define HAVE_RB_STR_SUBSTR                 1
#define HAVE_RB_STR_TO_STR                 1
#define HAVE_RSTRING_LEN                   1
#define HAVE_RSTRING_PTR                   1
#define HAVE_STRINGVALUE                   1

#define HAVE_RB_STR_FREE                   1
#define HAVE_RB_SPRINTF                    1
#define HAVE_RB_LOCALE_STR_NEW             1
#define HAVE_RB_LOCALE_STR_NEW_CSTR        1
#define HAVE_RB_STR_CONV_ENC               1
#define HAVE_RB_STR_CONV_ENC_OPTS          1
#define HAVE_RB_STR_EXPORT                 1
#define HAVE_RB_STR_EXPORT_LOCALE          1
#define HAVE_RB_STR_LENGTH                 1
#define HAVE_RB_STR_EQUAL                  1
#define HAVE_RB_STR_SUBSEQ                 1
#define HAVE_RB_VSPRINTF                   1
#define HAVE_RB_STRING                     1
#define HAVE_SAFE_STRING_VALUE             1
#define HAVE_RB_STRING_VALUE_CSTR          1

/* Struct */
#define HAVE_RB_STRUCT_AREF                1
#define HAVE_RB_STRUCT_ASET                1
#define HAVE_RB_STRUCT_DEFINE              1
#define HAVE_RB_STRUCT_DEFINE_UNDER        1
#define HAVE_RB_STRUCT_NEW                 1
#define HAVE_RB_STRUCT_GETMEMBER           1
#define HAVE_RB_STRUCT_S_MEMBERS           1
#define HAVE_RB_STRUCT_MEMBERS             1
#ifdef RUBY_VERSION_IS_2_4
#define HAVE_RB_STRUCT_SIZE                1
#endif

/* Symbol */
#define HAVE_RB_ID2NAME                    1
#define HAVE_RB_ID2STR                     1
#define HAVE_RB_INTERN_STR                 1
#define HAVE_RB_INTERN                     1
#define HAVE_RB_IS_CLASS_ID                1
#define HAVE_RB_IS_CONST_ID                1
#define HAVE_RB_IS_INSTANCE_ID             1
#define HAVE_RB_SYM2STR                    1

/* Thread */
#define HAVE_RB_THREAD_ALONE               1
#define HAVE_RB_THREAD_CALL_WITHOUT_GVL    1
#define HAVE_RB_THREAD_CURRENT             1
#define HAVE_RB_THREAD_LOCAL_AREF          1
#define HAVE_RB_THREAD_LOCAL_ASET          1
#define HAVE_RB_THREAD_WAIT_FOR            1
#define HAVE_RB_THREAD_WAKEUP              1
#define HAVE_RB_THREAD_CREATE              1

/* Time */
#define HAVE_RB_TIME_NEW                   1
#define HAVE_RB_TIME_NANO_NEW              1
#define HAVE_RB_TIME_NUM_NEW               1
#define HAVE_RB_TIME_INTERVAL              1
#define HAVE_RB_TIME_TIMEVAL               1
#define HAVE_RB_TIME_TIMESPEC              1
#ifdef RUBY_VERSION_IS_2_3
#define HAVE_RB_TIMESPEC_NOW               1
#define HAVE_RB_TIME_TIMESPEC_NEW          1
#endif

/* Util */
#define HAVE_RB_SCAN_ARGS                  1

#endif