/* automatically generated by rust-bindgen */


#![allow(non_snake_case)]


#[repr(C)]
#[derive(Debug, Default, Copy)]
pub struct mach_msg_type_descriptor_t {
    pub _bitfield_1: u32,
    pub __bindgen_align: [u32; 0usize],
}
#[test]
fn bindgen_test_layout_mach_msg_type_descriptor_t() {
    assert_eq!(::std::mem::size_of::<mach_msg_type_descriptor_t>() , 4usize ,
               concat ! (
               "Size of: " , stringify ! ( mach_msg_type_descriptor_t ) ));
    assert_eq! (::std::mem::align_of::<mach_msg_type_descriptor_t>() , 4usize
                , concat ! (
                "Alignment of " , stringify ! ( mach_msg_type_descriptor_t )
                ));
}
impl Clone for mach_msg_type_descriptor_t {
    fn clone(&self) -> Self { *self }
}
