abi_stable/library/c_abi_testing/
c_abi_testing_macros.rs
1macro_rules! check_roundtrip {
2 (
3 $funcs:ident,
4 $initial_int:expr,
5 ($($ret_val:ident=$composite:expr),* $(,)*),
6
7 $ret_fn:ident,
8 $take_fn:ident
9 $(,)*
10 ) => {
11 #[allow(unused_parens)]
12 {
13 let res=($funcs.$ret_fn)($initial_int);
14 let composite=($($composite),*);
15
16 if res!=composite {
17 return Err(make_invalid_cabi_err(composite.clone(),res.clone()));
18 }
19 let ($($ret_val),*)=res.clone();
20 let int=($funcs.$take_fn)($($ret_val),*);
21 if int!=$initial_int {
22 return Err(make_invalid_cabi_err(
23 (composite.clone(),$initial_int),
24 (res.clone(),int),
25 ));
26 }
27 }}
28}
29
30macro_rules! anon_struct {
31 (
32 $($fname:ident : $fval:expr),*
33 $(,)*
34 ) => {{
35 #[allow(non_camel_case_types)]
36 struct Anonymous<$($fname),*>{
37 $($fname:$fname,)*
38 }
39 Anonymous{
40 $($fname:$fval,)*
41 }
42 }};
43}