19 printf(
"%.1f %.1f\n", p.
x, p.
y);
24 void** args,
void* userdata __UNUSED__)
34 ffi_closure* pcl = ffi_closure_alloc(
sizeof(ffi_closure), &code);
35 ffi_type* cl_arg_types[1];
38 ffi_type* ts1_type_elements[4];
40 Dbls arg = { 1.0, 2.0 };
43 ts1_type.alignment = 0;
44 ts1_type.type = FFI_TYPE_STRUCT;
45 ts1_type.elements = ts1_type_elements;
47 ts1_type_elements[0] = &ffi_type_double;
48 ts1_type_elements[1] = &ffi_type_double;
49 ts1_type_elements[2] =
NULL;
51 cl_arg_types[0] = &ts1_type;
59 ((
void*(*)(
Dbls))(code))(arg);
int main(int argc __UNUSED__, char **argv __UNUSED__)
void closure_test_fn(Dbls p)
void closure_test_gn(ffi_cif *cif __UNUSED__, void *resp __UNUSED__, void **args, void *userdata __UNUSED__)
ffi_status ffi_prep_closure_loc(ffi_closure *closure, ffi_cif *cif, void(*fun)(ffi_cif *, void *, void **, void *), void *user_data, void *codeloc)
const ffi_type ffi_type_void
ffi_status ffi_prep_cif(ffi_cif *cif, ffi_abi abi, unsigned int nargs, ffi_type *rtype, ffi_type **atypes)