Skip to main content

orengine_utils/
config_macro.rs

1/// Generates code only compiled when the target pointer width is 64 bits.
2///
3/// # Example
4///
5/// ```rust
6/// use orengine_utils::{config_target_pointer_width_16, config_target_pointer_width_32, config_target_pointer_width_64};
7///
8/// config_target_pointer_width_64! {
9///     const VALUE: usize = 64;
10/// }
11///
12/// config_target_pointer_width_32! {
13///     const VALUE: usize = 32;
14/// }
15///
16/// config_target_pointer_width_16! {
17///     const VALUE: usize = 16;
18/// }
19///
20/// #[cfg(target_pointer_width = "64")]
21/// const SHOULD_BE: usize = 64;
22///
23/// #[cfg(target_pointer_width = "32")]
24/// const SHOULD_BE: usize = 32;
25///
26/// #[cfg(target_pointer_width = "16")]
27/// const SHOULD_BE: usize = 16;
28///
29/// assert_eq!(VALUE, SHOULD_BE);
30/// ```
31#[macro_export]
32macro_rules! config_target_pointer_width_64 {
33($($item:item)*) => {
34    $(
35        #[cfg(target_pointer_width = "64")]
36        $item
37    )*
38};
39}
40
41/// Generates code only compiled when the target pointer width is 32 bits.
42///
43/// # Example
44///
45/// ```rust
46/// use orengine_utils::{config_target_pointer_width_16, config_target_pointer_width_32, config_target_pointer_width_64};
47///
48/// config_target_pointer_width_64! {
49///     const VALUE: usize = 64;
50/// }
51///
52/// config_target_pointer_width_32! {
53///     const VALUE: usize = 32;
54/// }
55///
56/// config_target_pointer_width_16! {
57///     const VALUE: usize = 16;
58/// }
59///
60/// #[cfg(target_pointer_width = "64")]
61/// const SHOULD_BE: usize = 64;
62///
63/// #[cfg(target_pointer_width = "32")]
64/// const SHOULD_BE: usize = 32;
65///
66/// #[cfg(target_pointer_width = "16")]
67/// const SHOULD_BE: usize = 16;
68///
69/// assert_eq!(VALUE, SHOULD_BE);
70/// ```
71#[macro_export]
72macro_rules! config_target_pointer_width_32 {
73($($item:item)*) => {
74    $(
75        #[cfg(target_pointer_width = "32")]
76        $item
77    )*
78};
79}
80
81/// Generates code only compiled when the target pointer width is 16 bits.
82///
83/// # Example
84///
85/// ```rust
86/// use orengine_utils::{config_target_pointer_width_16, config_target_pointer_width_32, config_target_pointer_width_64};
87///
88/// config_target_pointer_width_64! {
89///     const VALUE: usize = 64;
90/// }
91///
92/// config_target_pointer_width_32! {
93///     const VALUE: usize = 32;
94/// }
95///
96/// config_target_pointer_width_16! {
97///     const VALUE: usize = 16;
98/// }
99///
100/// #[cfg(target_pointer_width = "64")]
101/// const SHOULD_BE: usize = 64;
102///
103/// #[cfg(target_pointer_width = "32")]
104/// const SHOULD_BE: usize = 32;
105///
106/// #[cfg(target_pointer_width = "16")]
107/// const SHOULD_BE: usize = 16;
108///
109/// assert_eq!(VALUE, SHOULD_BE);
110/// ```
111#[macro_export]
112macro_rules! config_target_pointer_width_16 {
113($($item:item)*) => {
114    $(
115        #[cfg(target_pointer_width = "16")]
116        $item
117    )*
118};
119}