1macro_rules! cfg_if {
10 ($(
11 if #[cfg($($meta:meta),*)] { $($it:item)* }
12 ) else * else {
13 $($it2:item)*
14 }) => {
15 __cfg_if_items! {
16 () ;
17 $( ( ($($meta),*) ($($it)*) ), )*
18 ( () ($($it2)*) ),
19 }
20 }
21}
22
23macro_rules! __cfg_if_items {
24 (($($not:meta,)*) ; ) => {};
25 (($($not:meta,)*) ; ( ($($m:meta),*) ($($it:item)*) ), $($rest:tt)*) => {
26 __cfg_if_apply! { cfg(all(not(any($($not),*)), $($m,)*)), $($it)* }
27 __cfg_if_items! { ($($not,)* $($m,)*) ; $($rest)* }
28 }
29}
30
31macro_rules! __cfg_if_apply {
32 ($m:meta, $($it:item)*) => {
33 $(#[$m] $it)*
34 }
35}
36
37macro_rules! s {
38 ($($(#[$attr:meta])* pub $t:ident $i:ident { $($field:tt)* })*) => ($(
39 __item! {
40 #[repr(C)]
41 #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash)]
42 $(#[$attr])*
43 pub $t $i { $($field)* }
44 }
45 )*)
46}
47
48macro_rules! f {
49 ($(pub fn $i:ident($($arg:ident: $argty:ty),*) -> $ret:ty {
50 $($body:stmt);*
51 })*) => ($(
52 #[inline]
53 #[cfg(not(cross_platform_docs))]
54 pub unsafe extern fn $i($($arg: $argty),*) -> $ret {
55 $($body);*
56 }
57
58 #[cfg(cross_platform_docs)]
59 #[allow(dead_code)]
60 pub unsafe extern fn $i($($arg: $argty),*) -> $ret {
61 loop {}
62 }
63 )*)
64}
65
66macro_rules! __item {
67 ($i:item) => ($i)
68}
69
70#[allow(unused_macros)]
71macro_rules! align_const {
72 ($($(#[$attr:meta])* pub const $name:ident : $t1:ty = $t2:ident { $($field:tt)* };)*) => ($(
73 #[cfg(feature = "align")]
74 $(#[$attr])*
75 pub const $name : $t1 = $t2 {
76 $($field)*
77 };
78 #[cfg(not(feature = "align"))]
79 $(#[$attr])*
80 pub const $name : $t1 = $t2 {
81 $($field)*
82 __align: [],
83 };
84 )*)
85}