Ruby
2.7.2p137(2020-10-01revision5445e0435260b449decf2ac16f9d09bae3cafe72)
|
Go to the documentation of this file.
11 unsigned char a3,
unsigned char a4)
15 result = a1 + a2 + a3 + a4;
17 printf(
"%d %d %d %d: %d\n", a1, a2, a3, a4, result);
23 static void test_func_gn(ffi_cif *cif
__UNUSED__,
void *rval,
void **avals,
26 unsigned char a1, a2, a3, a4;
28 a1 = *(
unsigned char *)avals[0];
29 a2 = *(
unsigned char *)avals[1];
30 a3 = *(
unsigned char *)avals[2];
31 a4 = *(
unsigned char *)avals[3];
43 printf(
"%d %d %d %d\n", *(
unsigned char *)avals[0],
44 *(
unsigned char *)avals[1], *(
unsigned char *)avals[2],
45 *(
unsigned char *)avals[3]);
51 ffi_closure *pcl = ffi_closure_alloc(
sizeof(ffi_closure), &code);
53 ffi_type * cl_arg_types[5];
55 unsigned char a, b, c, d, res_closure;
72 cl_arg_types[4] =
NULL;
80 printf(
"res: %d\n", (
unsigned char)res_call);
85 res_closure = (*((
test_type)code))(1, 2, 127, 125);
87 printf(
"res: %d\n", res_closure);
void test_func(ffi_cif *cif __UNUSED__, void *rval __UNUSED__, void **avals, void *data __UNUSED__)
unsigned char test_func_fn(unsigned char a1, unsigned char a2, unsigned char a3, unsigned char a4)
unsigned char(* test_type)(unsigned char, unsigned char, unsigned char, unsigned char)
ffi_status ffi_prep_cif(ffi_cif *cif, ffi_abi abi, unsigned int nargs, ffi_type *rtype, ffi_type **atypes)
void ffi_call(ffi_cif *cif, void(*fn)(void), void *rvalue, void **avalue)
ffi_status ffi_prep_closure_loc(ffi_closure *closure, ffi_cif *cif, void(*fun)(ffi_cif *, void *, void **, void *), void *user_data, void *codeloc)