VALUE rb_str_new_cstr(const char *string) { if (truffle_is_truffle_object((VALUE) string)) { return (VALUE) truffle_invoke(RUBY_CEXT, "to_ruby_string", string); } else { return (VALUE) truffle_invoke(RUBY_CEXT, "rb_str_new_cstr", truffle_read_string(string)); } }
VALUE rb_str_new(const char *string, long length) { if (string == NULL) { return (VALUE) truffle_invoke(RUBY_CEXT, "rb_str_new_nul", length); } else if (truffle_is_truffle_object((VALUE) string)) { return (VALUE) truffle_invoke(RUBY_CEXT, "rb_str_new", string, length); } else { return (VALUE) truffle_invoke(RUBY_CEXT, "rb_str_new_cstr", truffle_read_n_string(string, length)); } }
SEXP Rf_allocVector3(SEXPTYPE t, R_xlen_t len, R_allocator_t* allocator) { if (allocator != NULL) { return unimplemented("RF_allocVector with custom allocator"); } IMPORT_CALLHELPER(); return truffle_invoke(obj, "Rf_allocateVector", t, len); }
void rb_warning(const char *format, ...) { if (truffle_invoke(RUBY_CEXT, "verbose") == Qtrue) { va_list args; va_start(args, format); vfprintf(stderr, format, args); va_end(args); } }
void rb_warn(const char *format, ...) { if (!truffle_invoke_b(truffle_invoke(RUBY_CEXT, "verbose"), "nil?")) { va_list args; va_start(args, format); vfprintf(stderr, format, args); va_end(args); } }
char *ensure_truffle_chararray_n(const char *x, int n) { if (truffle_is_truffle_object(x)) { return x; } else { IMPORT_CALLHELPER(); return truffle_invoke(obj, "bytesToNativeCharArray", truffle_read_n_bytes(x, n)); } }
void Rprintf(const char *format, ...) { char buf[8192]; va_list(ap); va_start(ap,format); Rvsnprintf(buf, BUFSIZE - 1, format, ap); va_end(ap); void *str = truffle_read_string(buf); IMPORT_CALLHELPER(); truffle_invoke(obj, "printf", str); }
int rb_nativethread_lock_initialize(rb_nativethread_lock_t *lock) { *lock = truffle_invoke(RUBY_CEXT, "rb_nativethread_lock_initialize"); return 0; }
VALUE rb_gc_disable() { return (VALUE) truffle_invoke(RUBY_CEXT, "rb_gc_disable"); }
VALUE rb_mutex_sleep(VALUE mutex, VALUE timeout) { return (VALUE) truffle_invoke(RUBY_CEXT, "rb_mutex_sleep", mutex, timeout); }
VALUE rb_mutex_locked_p(VALUE mutex) { return (VALUE) truffle_invoke(RUBY_CEXT, "rb_mutex_locked_p", mutex); }
VALUE rb_complex_set_imag(VALUE complex, VALUE imag) { return (VALUE) truffle_invoke(RUBY_CEXT, "rb_complex_set_imag", complex, imag); }
VALUE rb_complex_polar(VALUE r, VALUE theta) { return (VALUE) truffle_invoke(RUBY_CEXT, "rb_complex_polar", r, theta); }
void rb_attr(VALUE ruby_class, ID name, int read, int write, int ex) { truffle_invoke(RUBY_CEXT, "rb_attr", ruby_class, name, read, write, ex); }
void rb_undef(VALUE module, ID name) { truffle_invoke(RUBY_CEXT, "rb_undef", module, name); }
VALUE rb_Complex(VALUE real, VALUE imag) { return (VALUE) truffle_invoke(RUBY_CEXT, "rb_Complex", real, imag); }
VALUE rb_complex_raw(VALUE real, VALUE imag) { return (VALUE) truffle_invoke(RUBY_CEXT, "rb_complex_raw", real, imag); }
void rb_define_alloc_func(VALUE ruby_class, rb_alloc_func_t alloc_function) { truffle_invoke(RUBY_CEXT, "rb_define_alloc_func", ruby_class, truffle_address_to_function(alloc_function)); }
VALUE rb_complex_set_real(VALUE complex, VALUE real) { return (VALUE) truffle_invoke(RUBY_CEXT, "rb_complex_set_real", complex, real); }
VALUE rb_Rational(VALUE num, VALUE den) { return (VALUE) truffle_invoke(RUBY_CEXT, "rb_Rational", num, den); }
VALUE rb_mutex_new(void) { return (VALUE) truffle_invoke(RUBY_CEXT, "rb_mutex_new"); }
VALUE rb_rational_new(VALUE num, VALUE den) { return (VALUE) truffle_invoke(RUBY_CEXT, "rb_rational_new", num, den); }
VALUE rb_mutex_unlock(VALUE mutex) { return (VALUE) truffle_invoke(RUBY_CEXT, "rb_mutex_unlock", mutex); }
VALUE rb_rational_num(VALUE rat) { return (VALUE) truffle_invoke((void *)rat, "numerator"); }
VALUE rb_mutex_synchronize(VALUE mutex, VALUE (*func)(VALUE arg), VALUE arg) { return (VALUE) truffle_invoke(RUBY_CEXT, "rb_mutex_synchronize", mutex, func, arg); }
VALUE rb_rational_den(VALUE rat) { return (VALUE) truffle_invoke((void *)rat, "denominator"); }
rb_nativethread_id_t rb_nativethread_self() { return (VALUE) truffle_invoke(RUBY_CEXT, "rb_nativethread_self"); }
VALUE rb_flt_rationalize_with_prec(VALUE value, VALUE precision) { return (VALUE) truffle_invoke((void *)value, "rationalize", precision); }
int rb_nativethread_lock_unlock(rb_nativethread_lock_t *lock) { truffle_invoke((void *)lock, "unlock"); return 0; }
VALUE rb_flt_rationalize(VALUE value) { return (VALUE) truffle_invoke((void *)value, "rationalize"); }