15#include "ruby/internal/config.h"
19#ifdef HAVE_INTRINSICS_H
20# include <intrinsics.h>
54#include "ruby/backward/2/inttypes.h"
55#include "ruby/backward/2/limits.h"
67#define USE_SYMBOL_AS_METHOD_NAME 1
90#define FilePathValue(v) (RB_GC_GUARD(v) = rb_get_path(v))
103#define FilePathStringValue(v) ((v) = rb_get_path(v))
106#if defined(HAVE_BUILTIN___BUILTIN_CONSTANT_P) && defined(HAVE_STMT_AND_DECL_IN_EXPR)
107# define rb_varargs_argc_check_runtime(argc, vargc) \
108 (((argc) <= (vargc)) ? (argc) : \
109 (rb_fatal("argc(%d) exceeds actual arguments(%d)", \
111# define rb_varargs_argc_valid_p(argc, vargc) \
112 ((argc) == 0 ? (vargc) <= 1 : \
114# if defined(HAVE_BUILTIN___BUILTIN_CHOOSE_EXPR_CONSTANT_P)
115# ifdef HAVE_ATTRIBUTE_ERRORFUNC
116ERRORFUNC((
" argument length doesn't match"),
int rb_varargs_bad_length(
int,
int));
118# define rb_varargs_bad_length(argc, vargc) \
119 ((argc)/rb_varargs_argc_valid_p(argc, vargc))
121# define rb_varargs_argc_check(argc, vargc) \
122 __builtin_choose_expr(__builtin_constant_p(argc), \
123 (rb_varargs_argc_valid_p(argc, vargc) ? (argc) : \
124 rb_varargs_bad_length(argc, vargc)), \
125 rb_varargs_argc_check_runtime(argc, vargc))
127# define rb_varargs_argc_check(argc, vargc) \
128 rb_varargs_argc_check_runtime(argc, vargc)
177VALUE
rb_equal(VALUE lhs, VALUE rhs);
210#define HAVE_NATIVETHREAD
229#define InitVM(ext) {void InitVM_##ext(void);InitVM_##ext();}
271int ruby_vsnprintf(
char *str,
size_t n,
char const *fmt, va_list ap);
274#if RBIMPL_HAS_WARNING("-Wgnu-zero-variadic-macro-arguments")
276#elif defined(__GNUC__) && defined(HAVE_VA_ARGS_MACRO) && defined(__OPTIMIZE__)
277# define rb_yield_values(argc, ...) \
279 const int rb_yield_values_argc = (argc); \
280 const VALUE rb_yield_values_args[] = {__VA_ARGS__}; \
281 const int rb_yield_values_nargs = \
282 (int)(sizeof(rb_yield_values_args) / sizeof(VALUE)); \
284 rb_varargs_argc_check(rb_yield_values_argc, rb_yield_values_nargs), \
285 rb_yield_values_nargs ? rb_yield_values_args : NULL); \
288# define rb_funcall(recv, mid, argc, ...) \
290 const int rb_funcall_argc = (argc); \
291 const VALUE rb_funcall_args[] = {__VA_ARGS__}; \
292 const int rb_funcall_nargs = \
293 (int)(sizeof(rb_funcall_args) / sizeof(VALUE)); \
294 rb_funcallv(recv, mid, \
295 rb_varargs_argc_check(rb_funcall_argc, rb_funcall_nargs), \
296 rb_funcall_nargs ? rb_funcall_args : NULL); \
301#ifndef RUBY_DONT_SUBST
302#include "ruby/subst.h"
305#if !defined RUBY_EXPORT && !defined RUBY_NO_OLD_COMPATIBILITY
306# include "ruby/backward.h"
Function overloads to issue warnings around ANYARGS.
Conversion between C's arithmtic types and Ruby's numeric types.
Defines ASSUME / RB_LIKELY / UNREACHABLE.
Core data structures, definitions and manipulations.
Our own, locale independent, character handling routines.
Tweaking visibility of C variables/functions.
#define RBIMPL_SYMBOL_EXPORT_END()
Counterpart of RBIMPL_SYMBOL_EXPORT_BEGIN.
#define RBIMPL_SYMBOL_EXPORT_BEGIN()
Shortcut macro equivalent to RUBY_SYMBOL_EXPORT_BEGIN extern "C" {.
Debugging and tracing APIs.
Defines enum ruby_fl_type.
Ruby-level global variables / constants, visible from C.
VALUE rb_equal(VALUE lhs, VALUE rhs)
This function is an optimised version of calling #==.
Defines RBIMPL_HAS_WARNING.
Declares rb_eval_string().
Registering values to the GC.
Creation and modification of Ruby methods.
Declares rb_define_variable().
Interpreter embedding APIs.
Creation and modification of Ruby modules.
#define RBIMPL_ATTR_NONNULL(list)
Wraps (or simulates) __attribute__((nonnull))
RGENGC write-barrier APIs.
VALUE rb_get_path(VALUE obj)
Converts an object to a path.
const char * rb_class2name(VALUE klass)
Queries the name of the passed class.
VALUE rb_require(const char *feature)
Identical to rb_require_string(), except it takes C's string instead of Ruby's.
const char * rb_obj_classname(VALUE obj)
Queries the name of the class of the passed object.
void rb_p(VALUE obj)
Inspects an object.
int ruby_vsnprintf(char *str, size_t n, char const *fmt, va_list ap)
Identical to ruby_snprintf(), except it takes a va_list.
VALUE rb_get_path_no_checksafe(VALUE)
int ruby_native_thread_p(void)
Queries if the thread which calls this function is a ruby's thread.
int ruby_snprintf(char *str, size_t n, char const *fmt,...)
Our own locale-insensitive version of snprintf(3).
Compile-time static implementation of rb_scan_args().
Defines enum ruby_special_consts.
Defines enum ruby_value_type.