• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 #![allow(
2     dead_code,
3     non_snake_case,
4     non_camel_case_types,
5     non_upper_case_globals
6 )]
7 
8 #[repr(C)]
9 #[derive(Debug, Default, Copy, Clone)]
10 pub struct pad_me {
11     pub first: u8,
12     pub __bindgen_padding_0: [u8; 3usize],
13     pub second: u32,
14     pub third: u16,
15     pub __bindgen_padding_1: [u8; 2usize],
16 }
17 #[test]
bindgen_test_layout_pad_me()18 fn bindgen_test_layout_pad_me() {
19     const UNINIT: ::std::mem::MaybeUninit<pad_me> =
20         ::std::mem::MaybeUninit::uninit();
21     let ptr = UNINIT.as_ptr();
22     assert_eq!(
23         ::std::mem::size_of::<pad_me>(),
24         12usize,
25         concat!("Size of: ", stringify!(pad_me))
26     );
27     assert_eq!(
28         ::std::mem::align_of::<pad_me>(),
29         4usize,
30         concat!("Alignment of ", stringify!(pad_me))
31     );
32     assert_eq!(
33         unsafe { ::std::ptr::addr_of!((*ptr).first) as usize - ptr as usize },
34         0usize,
35         concat!(
36             "Offset of field: ",
37             stringify!(pad_me),
38             "::",
39             stringify!(first)
40         )
41     );
42     assert_eq!(
43         unsafe { ::std::ptr::addr_of!((*ptr).second) as usize - ptr as usize },
44         4usize,
45         concat!(
46             "Offset of field: ",
47             stringify!(pad_me),
48             "::",
49             stringify!(second)
50         )
51     );
52     assert_eq!(
53         unsafe { ::std::ptr::addr_of!((*ptr).third) as usize - ptr as usize },
54         8usize,
55         concat!(
56             "Offset of field: ",
57             stringify!(pad_me),
58             "::",
59             stringify!(third)
60         )
61     );
62 }
63 #[repr(C)]
64 #[derive(Copy, Clone)]
65 pub union dont_pad_me {
66     pub first: u8,
67     pub second: u32,
68     pub third: u16,
69 }
70 #[test]
bindgen_test_layout_dont_pad_me()71 fn bindgen_test_layout_dont_pad_me() {
72     const UNINIT: ::std::mem::MaybeUninit<dont_pad_me> =
73         ::std::mem::MaybeUninit::uninit();
74     let ptr = UNINIT.as_ptr();
75     assert_eq!(
76         ::std::mem::size_of::<dont_pad_me>(),
77         4usize,
78         concat!("Size of: ", stringify!(dont_pad_me))
79     );
80     assert_eq!(
81         ::std::mem::align_of::<dont_pad_me>(),
82         4usize,
83         concat!("Alignment of ", stringify!(dont_pad_me))
84     );
85     assert_eq!(
86         unsafe { ::std::ptr::addr_of!((*ptr).first) as usize - ptr as usize },
87         0usize,
88         concat!(
89             "Offset of field: ",
90             stringify!(dont_pad_me),
91             "::",
92             stringify!(first)
93         )
94     );
95     assert_eq!(
96         unsafe { ::std::ptr::addr_of!((*ptr).second) as usize - ptr as usize },
97         0usize,
98         concat!(
99             "Offset of field: ",
100             stringify!(dont_pad_me),
101             "::",
102             stringify!(second)
103         )
104     );
105     assert_eq!(
106         unsafe { ::std::ptr::addr_of!((*ptr).third) as usize - ptr as usize },
107         0usize,
108         concat!(
109             "Offset of field: ",
110             stringify!(dont_pad_me),
111             "::",
112             stringify!(third)
113         )
114     );
115 }
116 impl Default for dont_pad_me {
default() -> Self117     fn default() -> Self {
118         let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
119         unsafe {
120             ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
121             s.assume_init()
122         }
123     }
124 }
125