int main() { void *obj = truffle_import("foreign"); double sum = 0; sum += truffle_invoke_i(obj, "addI", 1); // 4 sum += truffle_invoke_c(obj, "addB", 2); // 3 sum += truffle_invoke_l(obj, "addL", 3); // 7 sum += truffle_invoke_f(obj, "addF", 4.5); // 10 sum += truffle_invoke_d(obj, "addD", 5.5); // 12 return sum; // 36 }
int rb_long2int(long value) { return truffle_invoke_l(RUBY_CEXT, "rb_long2int", value); }
unsigned long rb_fix2uint(VALUE value) { return truffle_invoke_l(RUBY_CEXT, "rb_fix2uint", value); }
long FIX2LONG(VALUE value) { return truffle_invoke_l(RUBY_CEXT, "FIX2LONG", value); }
unsigned long NUM2ULONG(VALUE value) { // TODO CS 24-Jul-16 _invoke_l but what about the unsigned part? return truffle_invoke_l(RUBY_CEXT, "NUM2ULONG", value); }
void *rb_jt_to_native_handle(VALUE managed) { return (void *)truffle_invoke_l(RUBY_CEXT, "rb_jt_to_native_handle", managed); }
void *R_ExternalPtrAddr(SEXP s) { IMPORT_CALLHELPER(); return (void*) truffle_invoke_l(obj, "R_ExternalPtrAddr", s); }