userspace_build 0.1.123

Standard library for userspace applications
Documentation
#[macro_export]
macro_rules! tuple {
    ($tuple_visualization:vis $tuple_identifier:ident, $($ordinal_type:ty),*) => {
        $tuple_visualization struct $tuple_identifier($($ordinal_type),*);



        // impl macros::traits::ByteXElfSize for $tuple_identifier {
        //     const SIZE: usize = $(<$ordinal_type>::BYTES_SIZE + )* 0;
        // }


        impl crate::traits::Bytes<crate::Origin,crate::Origin> for $tuple_identifier {

            fn to_bytes(&self, endianness: bool) -> [u8; $tuple_identifier::BYTES_SIZE] {
                let mut b = [0u8; $tuple_identifier::BYTES_SIZE];
                let mut o = 0;
                $(
                    b[o..(o+<$ordinal_type>::BYTES_SIZE)].copy_from_slice(
                        &if endianness {
                            self.$ordinal_type.to_le_bytes()
                        } else {
                            self.$ordinal_type.to_be_bytes()
                        }
                    );
                    o = o + <$ordinal_type>::BYTES_SIZE;
                )*
                b
            }

            fn from_bytes(bytes : [u8; $tuple_identifier::BYTES_SIZE], endianness: bool) -> $tuple_identifier {
                let mut o = 0;
                $tuple_identifier (
                    $(
                        {
                            let mut field_bytes = [0u8; <$ordinal_type>::BYTES_SIZE];
                            field_bytes.copy_from_slice(&bytes[o..(o+<$ordinal_type>::BYTES_SIZE)]);
                            let ordinal = if endianness {
                                <$ordinal_type>::from_le_bytes(field_bytes)
                            } else {
                                <$ordinal_type>::from_be_bytes(field_bytes)
                            };
                            o = o + <$ordinal_type>::BYTES_SIZE;
                            ordinal
                        }
                    ),*
                )
            }
        }
    };
}
pub use tuple;