|
1 | 1 | //! Macros for defining various array sizes, and their associated invocations.
|
2 | 2 |
|
3 | 3 | use super::{ArraySize, AssocArraySize};
|
| 4 | +use typenum::consts::*; |
| 5 | + |
| 6 | +/// Additional typenum size aliases beyond what are normally provided. |
| 7 | +/// |
| 8 | +/// These are defined using their component bits rather than `Add` to avoid conflicting impls. |
| 9 | +#[rustfmt::skip] |
| 10 | +pub mod extra_sizes { |
| 11 | + use typenum::{UInt, UTerm, B0, B1}; |
| 12 | + |
| 13 | + pub type U1088 = UInt<UInt<UInt<UInt<UInt<UInt<UInt<UInt<UInt<UInt<UInt<UTerm, B1>, B0>, B0>, B0>, B1>, B0>, B0>, B0>, B0>, B0>, B0>; |
| 14 | + pub type U1152 = UInt<UInt<UInt<UInt<UInt<UInt<UInt<UInt<UInt<UInt<UInt<UTerm, B1>, B0>, B0>, B1>, B0>, B0>, B0>, B0>, B0>, B0>, B0>; |
| 15 | + pub type U1184 = UInt<UInt<UInt<UInt<UInt<UInt<UInt<UInt<UInt<UInt<UInt<UTerm, B1>, B0>, B0>, B1>, B0>, B1>, B0>, B0>, B0>, B0>, B0>; |
| 16 | + pub type U1472 = UInt<UInt<UInt<UInt<UInt<UInt<UInt<UInt<UInt<UInt<UInt<UTerm, B1>, B0>, B1>, B1>, B1>, B0>, B0>, B0>, B0>, B0>, B0>; |
| 17 | + pub type U1536 = UInt<UInt<UInt<UInt<UInt<UInt<UInt<UInt<UInt<UInt<UInt<UTerm, B1>, B1>, B0>, B0>, B0>, B0>, B0>, B0>, B0>, B0>, B0>; |
| 18 | + pub type U1568 = UInt<UInt<UInt<UInt<UInt<UInt<UInt<UInt<UInt<UInt<UInt<UTerm, B1>, B1>, B0>, B0>, B0>, B1>, B0>, B0>, B0>, B0>, B0>; |
| 19 | + pub type U1600 = UInt<UInt<UInt<UInt<UInt<UInt<UInt<UInt<UInt<UInt<UInt<UTerm, B1>, B1>, B0>, B0>, B1>, B0>, B0>, B0>, B0>, B0>, B0>; |
| 20 | + pub type U1632 = UInt<UInt<UInt<UInt<UInt<UInt<UInt<UInt<UInt<UInt<UInt<UTerm, B1>, B1>, B0>, B0>, B1>, B1>, B0>, B0>, B0>, B0>, B0>; |
| 21 | + pub type U2336 = UInt<UInt<UInt<UInt<UInt<UInt<UInt<UInt<UInt<UInt<UInt<UInt<UTerm, B1>, B0>, B0>, B1>, B0>, B0>, B1>, B0>, B0>, B0>, B0>, B0>; |
| 22 | + pub type U2368 = UInt<UInt<UInt<UInt<UInt<UInt<UInt<UInt<UInt<UInt<UInt<UInt<UTerm, B1>, B0>, B0>, B1>, B0>, B1>, B0>, B0>, B0>, B0>, B0>, B0>; |
| 23 | + pub type U2400 = UInt<UInt<UInt<UInt<UInt<UInt<UInt<UInt<UInt<UInt<UInt<UInt<UTerm, B1>, B0>, B0>, B1>, B0>, B1>, B1>, B0>, B0>, B0>, B0>, B0>; |
| 24 | + pub type U3072 = UInt<UInt<UInt<UInt<UInt<UInt<UInt<UInt<UInt<UInt<UInt<UInt<UTerm, B1>, B1>, B0>, B0>, B0>, B0>, B0>, B0>, B0>, B0>, B0>, B0>; |
| 25 | + pub type U3104 = UInt<UInt<UInt<UInt<UInt<UInt<UInt<UInt<UInt<UInt<UInt<UInt<UTerm, B1>, B1>, B0>, B0>, B0>, B0>, B1>, B0>, B0>, B0>, B0>, B0>; |
| 26 | + pub type U3136 = UInt<UInt<UInt<UInt<UInt<UInt<UInt<UInt<UInt<UInt<UInt<UInt<UTerm, B1>, B1>, B0>, B0>, B0>, B1>, B0>, B0>, B0>, B0>, B0>, B0>; |
| 27 | + pub type U3168 = UInt<UInt<UInt<UInt<UInt<UInt<UInt<UInt<UInt<UInt<UInt<UInt<UTerm, B1>, B1>, B0>, B0>, B0>, B1>, B1>, B0>, B0>, B0>, B0>, B0>; |
| 28 | +} |
| 29 | + |
| 30 | +pub use extra_sizes::*; |
4 | 31 |
|
5 | 32 | macro_rules! impl_array_size {
|
6 | 33 | ($($len:expr => $ty:ident),+) => {
|
7 | 34 | $(
|
8 |
| - unsafe impl ArraySize for typenum::consts::$ty { |
| 35 | + unsafe impl ArraySize for $ty { |
9 | 36 | type ArrayType<T> = [T; $len];
|
10 | 37 | }
|
11 | 38 |
|
12 | 39 | impl<T> AssocArraySize for [T; $len] {
|
13 |
| - type Size = typenum::consts::$ty; |
| 40 | + type Size = $ty; |
14 | 41 | }
|
15 | 42 | )+
|
16 | 43 | };
|
@@ -321,5 +348,22 @@ impl_array_size! {
|
321 | 348 | 976 => U976,
|
322 | 349 | 992 => U992,
|
323 | 350 | 1008 => U1008,
|
324 |
| - 1024 => U1024 |
| 351 | + 1024 => U1024, |
| 352 | + 1088 => U1088, |
| 353 | + 1152 => U1152, |
| 354 | + 1184 => U1184, |
| 355 | + 1472 => U1472, |
| 356 | + 1536 => U1536, |
| 357 | + 1568 => U1568, |
| 358 | + 1600 => U1600, |
| 359 | + 1632 => U1632, |
| 360 | + 2048 => U2048, |
| 361 | + 2336 => U2336, |
| 362 | + 2368 => U2368, |
| 363 | + 2400 => U2400, |
| 364 | + 3072 => U3072, |
| 365 | + 3104 => U3104, |
| 366 | + 3136 => U3136, |
| 367 | + 3168 => U3168, |
| 368 | + 4096 => U4096 |
325 | 369 | }
|
0 commit comments