openzeppelin_crypto/
const_helpers.rs1#[macro_export]
21macro_rules! const_for {
22 (($i:ident in $start:tt.. $end:tt) $code:expr) => {{
23 let mut $i = $start;
24 loop {
25 $crate::cycle!($i, $end, $code);
26 }
27 }};
28}
29
30#[macro_export]
46macro_rules! const_rev_for {
47 (($i:ident in $end:tt.. $start:tt) $code:expr) => {{
48 let mut $i = $start;
49 loop {
50 $crate::rev_cycle!($i, $end, $code);
51 }
52 }};
53}
54
55#[macro_export]
58macro_rules! const_for_unroll2 {
59 (($i:ident in $start:tt.. $end:tt) $code:expr) => {{
60 let mut $i = $start;
61 loop {
62 $crate::cycle!($i, $end, $code);
63 $crate::cycle!($i, $end, $code);
64 }
65 }};
66}
67
68#[macro_export]
71macro_rules! const_for_unroll4 {
72 (($i:ident in $start:tt.. $end:tt) $code:expr) => {{
73 let mut $i = $start;
74 loop {
75 $crate::cycle!($i, $end, $code);
76 $crate::cycle!($i, $end, $code);
77 $crate::cycle!($i, $end, $code);
78 $crate::cycle!($i, $end, $code);
79 }
80 }};
81}
82
83#[macro_export]
86macro_rules! const_for_unroll6 {
87 (($i:ident in $start:tt.. $end:tt) $code:expr) => {{
88 let mut $i = $start;
89 loop {
90 $crate::cycle!($i, $end, $code);
91 $crate::cycle!($i, $end, $code);
92 $crate::cycle!($i, $end, $code);
93 $crate::cycle!($i, $end, $code);
94 $crate::cycle!($i, $end, $code);
95 $crate::cycle!($i, $end, $code);
96 }
97 }};
98}
99
100#[macro_export]
105macro_rules! const_rev_for_unroll6 {
106 (($i:ident in $end:tt.. $start:tt) $code:expr) => {{
107 let mut $i = $start;
108 loop {
109 $crate::rev_cycle!($i, $end, $code);
110 $crate::rev_cycle!($i, $end, $code);
111 $crate::rev_cycle!($i, $end, $code);
112 $crate::rev_cycle!($i, $end, $code);
113 $crate::rev_cycle!($i, $end, $code);
114 $crate::rev_cycle!($i, $end, $code);
115 }
116 }};
117}
118
119#[macro_export]
122macro_rules! const_for_unroll8 {
123 (($i:ident in $start:tt.. $end:tt) $code:expr) => {{
124 let mut $i = $start;
125 loop {
126 $crate::cycle!($i, $end, $code);
127 $crate::cycle!($i, $end, $code);
128 $crate::cycle!($i, $end, $code);
129 $crate::cycle!($i, $end, $code);
130 $crate::cycle!($i, $end, $code);
131 $crate::cycle!($i, $end, $code);
132 $crate::cycle!($i, $end, $code);
133 $crate::cycle!($i, $end, $code);
134 }
135 }};
136}
137
138#[macro_export]
140macro_rules! cycle {
141 ($i:ident, $end:tt, $code:expr) => {{
142 if $i < $end {
143 $code
144 } else {
145 break;
146 }
147 $i += 1;
148 }};
149}
150
151#[macro_export]
153macro_rules! rev_cycle {
154 ($i:ident, $end:tt, $code:expr) => {{
155 if $end < $i {
156 $i -= 1;
157 $code
158 } else {
159 break;
160 }
161 }};
162}