12static double floating_1(
float a,
double b,
long double c)
14 return (
double) a + b + (
double) c;
17static double floating_2(
long double a,
double b,
float c)
19 return (
double) a + b + (
double) c;
33 args[0] = &ffi_type_float;
35 args[1] = &ffi_type_double;
37 args[2] = &ffi_type_longdouble;
42 &ffi_type_double, args) == FFI_OK);
45 d = (
double)1.0/(
double)3.0;
48 floating_1 (
f, d, ld);
50 ffi_call(&cif, FFI_FN(floating_1), &rd, values);
54 args[0] = &ffi_type_longdouble;
56 args[1] = &ffi_type_double;
58 args[2] = &ffi_type_float;
63 &ffi_type_double, args) == FFI_OK);
65 floating_2 (ld, d,
f);
67 ffi_call(&cif, FFI_FN(floating_2), &rd, values);
void ffi_call(ffi_cif *cif, void(*fn)(void), void *rvalue, void **avalue)
ffi_status ffi_prep_cif(ffi_cif *cif, ffi_abi abi, unsigned int nargs, ffi_type *rtype, ffi_type **atypes)