#[doc(hidden)]
#[macro_export]
#[cfg(radium_atomic_8)]
macro_rules! __radium_if_atomic_8 {
( [ $( $a:tt )* ] [ $( $b:tt )* ] ) => { $($a)* }
}
#[doc(hidden)]
#[macro_export]
#[cfg(not(radium_atomic_8))]
macro_rules! __radium_if_atomic_8 {
( [ $( $a:tt )* ] [ $( $b:tt )* ] ) => { $($b)* }
}
#[doc(hidden)]
#[macro_export]
#[cfg(radium_atomic_16)]
macro_rules! __radium_if_atomic_16 {
( [ $( $a:tt )* ] [ $( $b:tt )* ] ) => { $($a)* }
}
#[doc(hidden)]
#[macro_export]
#[cfg(not(radium_atomic_16))]
macro_rules! __radium_if_atomic_16 {
( [ $( $a:tt )* ] [ $( $b:tt )* ] ) => { $($b)* }
}
#[doc(hidden)]
#[macro_export]
#[cfg(radium_atomic_32)]
macro_rules! __radium_if_atomic_32 {
( [ $( $a:tt )* ] [ $( $b:tt )* ] ) => { $($a)* }
}
#[doc(hidden)]
#[macro_export]
#[cfg(not(radium_atomic_32))]
macro_rules! __radium_if_atomic_32 {
( [ $( $a:tt )* ] [ $( $b:tt )* ] ) => { $($b)* }
}
#[doc(hidden)]
#[macro_export]
#[cfg(radium_atomic_64)]
macro_rules! __radium_if_atomic_64 {
( [ $( $a:tt )* ] [ $( $b:tt )* ] ) => { $($a)* }
}
#[doc(hidden)]
#[macro_export]
#[cfg(not(radium_atomic_64))]
macro_rules! __radium_if_atomic_64 {
( [ $( $a:tt )* ] [ $( $b:tt )* ] ) => { $($b)* }
}
#[doc(hidden)]
#[macro_export]
#[cfg(radium_atomic_ptr)]
macro_rules! __radium_if_atomic_ptr {
( [ $( $a:tt )* ] [ $( $b:tt )* ] ) => { $($a)* }
}
#[doc(hidden)]
#[macro_export]
#[cfg(not(radium_atomic_ptr))]
macro_rules! __radium_if_atomic_ptr {
( [ $( $a:tt )* ] [ $( $b:tt )* ] ) => { $($b)* }
}
#[macro_export]
macro_rules! if_atomic {
( if atomic(8) { $($a:tt)* } $( else { $($b:tt)* } )? $( if $($rest:tt)* )? ) => {
$crate::__radium_if_atomic_8! {
[ $($a)* ] [ $( $($b)* )? ]
}
$($crate::if_atomic! { if $($rest)* })?
};
( if atomic(16) { $($a:tt)* } $( else { $($b:tt)* } )? $( if $($rest:tt)* )? ) => {
$crate::__radium_if_atomic_16! {
[ $($a)* ] [ $( $($b)* )? ]
}
$( $crate::if_atomic! { if $($rest)* } )?
};
( if atomic(32) { $($a:tt)* } $( else { $($b:tt)* } )? $( if $($rest:tt)* )? ) => {
$crate::__radium_if_atomic_32! {
[ $($a)* ] [ $( $($b)* )? ]
}
$( $crate::if_atomic! { if $($rest)* } )?
};
( if atomic(64) { $($a:tt)* } $( else { $($b:tt)* } )? $( if $($rest:tt)* )? ) => {
$crate::__radium_if_atomic_64! {
[ $($a)* ] [ $( $($b)* )? ]
}
$( $crate::if_atomic! { if $($rest)* } )?
};
( if atomic(ptr) { $($a:tt)* } $( else { $($b:tt)* } )? $( if $($rest:tt)* )? ) => {
$crate::__radium_if_atomic_ptr! {
[ $($a)* ] [ $( $($b)* )? ]
}
$( $crate::if_atomic! { if $($rest)* } )?
};
( if atomic(bool) $($rest:tt)* ) => {
$crate::if_atomic! { if atomic(8) $($rest)* }
};
( if atomic(size) $($rest:tt)* ) => {
$crate::if_atomic! { if atomic(ptr) $($rest)* }
};
( if ! atomic( $t:tt ) { $($a:tt)* } $( else { $($b:tt)* } )? $( if $($rest:tt)* )? ) => {
$crate::if_atomic! {
if atomic($t) { $( $($b)* )? } else { $($a)* } $( if $($rest)* )?
}
};
}