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