• 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(Default)]
10 pub struct __IncompleteArrayField<T>(::std::marker::PhantomData<T>, [T; 0]);
11 impl<T> __IncompleteArrayField<T> {
12     #[inline]
new() -> Self13     pub const fn new() -> Self {
14         __IncompleteArrayField(::std::marker::PhantomData, [])
15     }
16     #[inline]
as_ptr(&self) -> *const T17     pub fn as_ptr(&self) -> *const T {
18         self as *const _ as *const T
19     }
20     #[inline]
as_mut_ptr(&mut self) -> *mut T21     pub fn as_mut_ptr(&mut self) -> *mut T {
22         self as *mut _ as *mut T
23     }
24     #[inline]
as_slice(&self, len: usize) -> &[T]25     pub unsafe fn as_slice(&self, len: usize) -> &[T] {
26         ::std::slice::from_raw_parts(self.as_ptr(), len)
27     }
28     #[inline]
as_mut_slice(&mut self, len: usize) -> &mut [T]29     pub unsafe fn as_mut_slice(&mut self, len: usize) -> &mut [T] {
30         ::std::slice::from_raw_parts_mut(self.as_mut_ptr(), len)
31     }
32 }
33 impl<T> ::std::fmt::Debug for __IncompleteArrayField<T> {
fmt(&self, fmt: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result34     fn fmt(&self, fmt: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
35         fmt.write_str("__IncompleteArrayField")
36     }
37 }
38 #[repr(C)]
39 #[derive(Debug, Default)]
40 pub struct test {
41     pub a: ::std::os::raw::c_int,
42     pub zero_length_array: __IncompleteArrayField<::std::os::raw::c_char>,
43 }
44 #[test]
bindgen_test_layout_test()45 fn bindgen_test_layout_test() {
46     const UNINIT: ::std::mem::MaybeUninit<test> =
47         ::std::mem::MaybeUninit::uninit();
48     let ptr = UNINIT.as_ptr();
49     assert_eq!(
50         ::std::mem::size_of::<test>(),
51         4usize,
52         concat!("Size of: ", stringify!(test))
53     );
54     assert_eq!(
55         ::std::mem::align_of::<test>(),
56         4usize,
57         concat!("Alignment of ", stringify!(test))
58     );
59     assert_eq!(
60         unsafe { ::std::ptr::addr_of!((*ptr).a) as usize - ptr as usize },
61         0usize,
62         concat!("Offset of field: ", stringify!(test), "::", stringify!(a))
63     );
64     assert_eq!(
65         unsafe {
66             ::std::ptr::addr_of!((*ptr).zero_length_array) as usize -
67                 ptr as usize
68         },
69         4usize,
70         concat!(
71             "Offset of field: ",
72             stringify!(test),
73             "::",
74             stringify!(zero_length_array)
75         )
76     );
77 }
78 #[repr(C)]
79 #[derive(Debug, Default)]
80 pub struct test2 {
81     pub a: ::std::os::raw::c_int,
82     pub incomplete_array: __IncompleteArrayField<::std::os::raw::c_char>,
83 }
84 #[test]
bindgen_test_layout_test2()85 fn bindgen_test_layout_test2() {
86     const UNINIT: ::std::mem::MaybeUninit<test2> =
87         ::std::mem::MaybeUninit::uninit();
88     let ptr = UNINIT.as_ptr();
89     assert_eq!(
90         ::std::mem::size_of::<test2>(),
91         4usize,
92         concat!("Size of: ", stringify!(test2))
93     );
94     assert_eq!(
95         ::std::mem::align_of::<test2>(),
96         4usize,
97         concat!("Alignment of ", stringify!(test2))
98     );
99     assert_eq!(
100         unsafe { ::std::ptr::addr_of!((*ptr).a) as usize - ptr as usize },
101         0usize,
102         concat!("Offset of field: ", stringify!(test2), "::", stringify!(a))
103     );
104     assert_eq!(
105         unsafe {
106             ::std::ptr::addr_of!((*ptr).incomplete_array) as usize -
107                 ptr as usize
108         },
109         4usize,
110         concat!(
111             "Offset of field: ",
112             stringify!(test2),
113             "::",
114             stringify!(incomplete_array)
115         )
116     );
117 }
118 #[repr(C)]
119 #[derive(Debug, Default)]
120 pub struct test3 {
121     pub a: ::std::os::raw::c_int,
122     pub zero_length_array: __IncompleteArrayField<::std::os::raw::c_char>,
123     pub incomplete_array: __IncompleteArrayField<::std::os::raw::c_char>,
124 }
125 #[test]
bindgen_test_layout_test3()126 fn bindgen_test_layout_test3() {
127     const UNINIT: ::std::mem::MaybeUninit<test3> =
128         ::std::mem::MaybeUninit::uninit();
129     let ptr = UNINIT.as_ptr();
130     assert_eq!(
131         ::std::mem::size_of::<test3>(),
132         4usize,
133         concat!("Size of: ", stringify!(test3))
134     );
135     assert_eq!(
136         ::std::mem::align_of::<test3>(),
137         4usize,
138         concat!("Alignment of ", stringify!(test3))
139     );
140     assert_eq!(
141         unsafe { ::std::ptr::addr_of!((*ptr).a) as usize - ptr as usize },
142         0usize,
143         concat!("Offset of field: ", stringify!(test3), "::", stringify!(a))
144     );
145     assert_eq!(
146         unsafe {
147             ::std::ptr::addr_of!((*ptr).zero_length_array) as usize -
148                 ptr as usize
149         },
150         4usize,
151         concat!(
152             "Offset of field: ",
153             stringify!(test3),
154             "::",
155             stringify!(zero_length_array)
156         )
157     );
158     assert_eq!(
159         unsafe {
160             ::std::ptr::addr_of!((*ptr).incomplete_array) as usize -
161                 ptr as usize
162         },
163         4usize,
164         concat!(
165             "Offset of field: ",
166             stringify!(test3),
167             "::",
168             stringify!(incomplete_array)
169         )
170     );
171 }
172