#[macro_export]
macro_rules! bits {
(
$(
$( #[ $attr:meta ] )*
$vis:vis const $name:ident : $type:ident < $( $args:literal ),+ >;
)*
) => {
$(
bits! { @expand $( #[ $attr ] )* $vis const $name : $type ( $( $args ),+ ) }
)*
};
(
$(
$( #[ $attr:meta ] )*
$vis:vis $name:ident : $type:ident < $( $args:literal ),+ >;
)*
) => {
$(
bits! { @expand $( #[ $attr ] )* $vis $name : $type ( $( $args ),+ ) }
)*
};
( @expand $( #[ $attr:meta ] )* $vis:vis const $name:ident : Flag ( $offset:expr ) ) => {
$( #[ $attr ] )*
$vis const $name: bitable::bit::Flag<$offset> = bitable::bit::Flag::<$offset>::new();
};
( @expand $( #[ $attr:meta ] )* $vis:vis $name:ident : Flag ( $offset:expr ) ) => {
$( #[ $attr ] )*
$vis $name: bitable::bit::Flag<$offset> = bitable::bit::Flag::<$offset>::new();
};
( @expand $( #[ $attr:meta ] )* $vis:vis const $name:ident : Field ( $offset:expr, $size:expr ) ) => {
$( #[ $attr ] )*
$vis const $name: bitable::bit::Field<$offset, $size> = bitable::bit::Field::<$offset, $size>::new();
};
( @expand $( #[ $attr:meta ] )* $vis:vis $name:ident : Field ( $offset:expr, $size:expr ) ) => {
$( #[ $attr ] )*
$vis $name: bitable::bit::Field<$offset, $size> = bitable::bit::Field::<$offset, $size>::new();
};
}