1#[doc(hidden)]
2#[macro_export]
3#[cfg(radium_atomic_8)]
4macro_rules! __radium_if_atomic_8 {
5 ( [ $( $a:tt )* ] [ $( $b:tt )* ] ) => { $($a)* }
6}
7
8#[doc(hidden)]
9#[macro_export]
10#[cfg(not(radium_atomic_8))]
11macro_rules! __radium_if_atomic_8 {
12 ( [ $( $a:tt )* ] [ $( $b:tt )* ] ) => { $($b)* }
13}
14
15#[doc(hidden)]
16#[macro_export]
17#[cfg(radium_atomic_16)]
18macro_rules! __radium_if_atomic_16 {
19 ( [ $( $a:tt )* ] [ $( $b:tt )* ] ) => { $($a)* }
20}
21
22#[doc(hidden)]
23#[macro_export]
24#[cfg(not(radium_atomic_16))]
25macro_rules! __radium_if_atomic_16 {
26 ( [ $( $a:tt )* ] [ $( $b:tt )* ] ) => { $($b)* }
27}
28
29#[doc(hidden)]
30#[macro_export]
31#[cfg(radium_atomic_32)]
32macro_rules! __radium_if_atomic_32 {
33 ( [ $( $a:tt )* ] [ $( $b:tt )* ] ) => { $($a)* }
34}
35
36#[doc(hidden)]
37#[macro_export]
38#[cfg(not(radium_atomic_32))]
39macro_rules! __radium_if_atomic_32 {
40 ( [ $( $a:tt )* ] [ $( $b:tt )* ] ) => { $($b)* }
41}
42
43#[doc(hidden)]
44#[macro_export]
45#[cfg(radium_atomic_64)]
46macro_rules! __radium_if_atomic_64 {
47 ( [ $( $a:tt )* ] [ $( $b:tt )* ] ) => { $($a)* }
48}
49
50#[doc(hidden)]
51#[macro_export]
52#[cfg(not(radium_atomic_64))]
53macro_rules! __radium_if_atomic_64 {
54 ( [ $( $a:tt )* ] [ $( $b:tt )* ] ) => { $($b)* }
55}
56
57#[doc(hidden)]
58#[macro_export]
59#[cfg(radium_atomic_ptr)]
60macro_rules! __radium_if_atomic_ptr {
61 ( [ $( $a:tt )* ] [ $( $b:tt )* ] ) => { $($a)* }
62}
63
64#[doc(hidden)]
65#[macro_export]
66#[cfg(not(radium_atomic_ptr))]
67macro_rules! __radium_if_atomic_ptr {
68 ( [ $( $a:tt )* ] [ $( $b:tt )* ] ) => { $($b)* }
69}
70
71#[macro_export]
129macro_rules! if_atomic {
130 ( if atomic(8) { $($a:tt)* } $( else { $($b:tt)* } )? $( if $($rest:tt)* )? ) => {
131 $crate::__radium_if_atomic_8! {
132 [ $($a)* ] [ $( $($b)* )? ]
133 }
134 $($crate::if_atomic! { if $($rest)* })?
135 };
136
137 ( if atomic(16) { $($a:tt)* } $( else { $($b:tt)* } )? $( if $($rest:tt)* )? ) => {
138 $crate::__radium_if_atomic_16! {
139 [ $($a)* ] [ $( $($b)* )? ]
140 }
141 $( $crate::if_atomic! { if $($rest)* } )?
142 };
143
144 ( if atomic(32) { $($a:tt)* } $( else { $($b:tt)* } )? $( if $($rest:tt)* )? ) => {
145 $crate::__radium_if_atomic_32! {
146 [ $($a)* ] [ $( $($b)* )? ]
147 }
148 $( $crate::if_atomic! { if $($rest)* } )?
149 };
150
151 ( if atomic(64) { $($a:tt)* } $( else { $($b:tt)* } )? $( if $($rest:tt)* )? ) => {
152 $crate::__radium_if_atomic_64! {
153 [ $($a)* ] [ $( $($b)* )? ]
154 }
155 $( $crate::if_atomic! { if $($rest)* } )?
156 };
157
158 ( if atomic(ptr) { $($a:tt)* } $( else { $($b:tt)* } )? $( if $($rest:tt)* )? ) => {
159 $crate::__radium_if_atomic_ptr! {
160 [ $($a)* ] [ $( $($b)* )? ]
161 }
162 $( $crate::if_atomic! { if $($rest)* } )?
163 };
164
165 ( if atomic(bool) $($rest:tt)* ) => {
166 $crate::if_atomic! { if atomic(8) $($rest)* }
167 };
168
169 ( if atomic(size) $($rest:tt)* ) => {
170 $crate::if_atomic! { if atomic(ptr) $($rest)* }
171 };
172
173 ( if ! atomic( $t:tt ) { $($a:tt)* } $( else { $($b:tt)* } )? $( if $($rest:tt)* )? ) => {
174 $crate::if_atomic! {
175 if atomic($t) { $( $($b)* )? } else { $($a)* } $( if $($rest)* )?
176 }
177 };
178}