nex_core/bitfield.rs
1//! Provides type aliases for various primitive integer types
2//!
3//! These types are aliased to the next largest of \[`u8`, `u16`, `u32`, `u64`\]
4//!
5//! All aliases for types larger than `u8` contain a `be` or `le` suffix. These specify whether the
6//! value is big or little endian, respectively.
7
8#![allow(non_camel_case_types)]
9/// Represents an unsigned, 1-bit integer.
10pub type u1 = u8;
11/// Represents an unsigned, 2-bit integer.
12pub type u2 = u8;
13/// Represents an unsigned, 3-bit integer.
14pub type u3 = u8;
15/// Represents an unsigned, 4-bit integer.
16pub type u4 = u8;
17/// Represents an unsigned, 5-bit integer.
18pub type u5 = u8;
19/// Represents an unsigned, 6-bit integer.
20pub type u6 = u8;
21/// Represents an unsigned, 7-bit integer.
22pub type u7 = u8;
23/// Represents an unsigned 9-bit integer.
24pub type u9be = u16;
25/// Represents an unsigned 10-bit integer.
26pub type u10be = u16;
27/// Represents an unsigned 11-bit integer.
28pub type u11be = u16;
29/// Represents an unsigned 12-bit integer.
30pub type u12be = u16;
31/// Represents an unsigned 13-bit integer.
32pub type u13be = u16;
33/// Represents an unsigned 14-bit integer.
34pub type u14be = u16;
35/// Represents an unsigned 15-bit integer.
36pub type u15be = u16;
37/// Represents an unsigned 16-bit integer.
38pub type u16be = u16;
39/// Represents an unsigned 17-bit integer.
40pub type u17be = u32;
41/// Represents an unsigned 18-bit integer.
42pub type u18be = u32;
43/// Represents an unsigned 19-bit integer.
44pub type u19be = u32;
45/// Represents an unsigned 20-bit integer.
46pub type u20be = u32;
47/// Represents an unsigned 21-bit integer.
48pub type u21be = u32;
49/// Represents an unsigned 22-bit integer.
50pub type u22be = u32;
51/// Represents an unsigned 23-bit integer.
52pub type u23be = u32;
53/// Represents an unsigned 24-bit integer.
54pub type u24be = u32;
55/// Represents an unsigned 25-bit integer.
56pub type u25be = u32;
57/// Represents an unsigned 26-bit integer.
58pub type u26be = u32;
59/// Represents an unsigned 27-bit integer.
60pub type u27be = u32;
61/// Represents an unsigned 28-bit integer.
62pub type u28be = u32;
63/// Represents an unsigned 29-bit integer.
64pub type u29be = u32;
65/// Represents an unsigned 30-bit integer.
66pub type u30be = u32;
67/// Represents an unsigned 31-bit integer.
68pub type u31be = u32;
69/// Represents an unsigned 32-bit integer.
70pub type u32be = u32;
71/// Represents an unsigned 33-bit integer.
72pub type u33be = u64;
73/// Represents an unsigned 34-bit integer.
74pub type u34be = u64;
75/// Represents an unsigned 35-bit integer.
76pub type u35be = u64;
77/// Represents an unsigned 36-bit integer.
78pub type u36be = u64;
79/// Represents an unsigned 37-bit integer.
80pub type u37be = u64;
81/// Represents an unsigned 38-bit integer.
82pub type u38be = u64;
83/// Represents an unsigned 39-bit integer.
84pub type u39be = u64;
85/// Represents an unsigned 40-bit integer.
86pub type u40be = u64;
87/// Represents an unsigned 41-bit integer.
88pub type u41be = u64;
89/// Represents an unsigned 42-bit integer.
90pub type u42be = u64;
91/// Represents an unsigned 43-bit integer.
92pub type u43be = u64;
93/// Represents an unsigned 44-bit integer.
94pub type u44be = u64;
95/// Represents an unsigned 45-bit integer.
96pub type u45be = u64;
97/// Represents an unsigned 46-bit integer.
98pub type u46be = u64;
99/// Represents an unsigned 47-bit integer.
100pub type u47be = u64;
101/// Represents an unsigned 48-bit integer.
102pub type u48be = u64;
103/// Represents an unsigned 49-bit integer.
104pub type u49be = u64;
105/// Represents an unsigned 50-bit integer.
106pub type u50be = u64;
107/// Represents an unsigned 51-bit integer.
108pub type u51be = u64;
109/// Represents an unsigned 52-bit integer.
110pub type u52be = u64;
111/// Represents an unsigned 53-bit integer.
112pub type u53be = u64;
113/// Represents an unsigned 54-bit integer.
114pub type u54be = u64;
115/// Represents an unsigned 55-bit integer.
116pub type u55be = u64;
117/// Represents an unsigned 56-bit integer.
118pub type u56be = u64;
119/// Represents an unsigned 57-bit integer.
120pub type u57be = u64;
121/// Represents an unsigned 58-bit integer.
122pub type u58be = u64;
123/// Represents an unsigned 59-bit integer.
124pub type u59be = u64;
125/// Represents an unsigned 60-bit integer.
126pub type u60be = u64;
127/// Represents an unsigned 61-bit integer.
128pub type u61be = u64;
129/// Represents an unsigned 62-bit integer.
130pub type u62be = u64;
131/// Represents an unsigned 63-bit integer.
132pub type u63be = u64;
133/// Represents an unsigned 64-bit integer.
134pub type u64be = u64;
135/// Represents an unsigned 9-bit integer.
136pub type u9le = u16;
137/// Represents an unsigned 10-bit integer.
138pub type u10le = u16;
139/// Represents an unsigned 11-bit integer.
140pub type u11le = u16;
141/// Represents an unsigned 12-bit integer.
142pub type u12le = u16;
143/// Represents an unsigned 13-bit integer.
144pub type u13le = u16;
145/// Represents an unsigned 14-bit integer.
146pub type u14le = u16;
147/// Represents an unsigned 15-bit integer.
148pub type u15le = u16;
149/// Represents an unsigned 16-bit integer.
150pub type u16le = u16;
151/// Represents an unsigned 17-bit integer.
152pub type u17le = u32;
153/// Represents an unsigned 18-bit integer.
154pub type u18le = u32;
155/// Represents an unsigned 19-bit integer.
156pub type u19le = u32;
157/// Represents an unsigned 20-bit integer.
158pub type u20le = u32;
159/// Represents an unsigned 21-bit integer.
160pub type u21le = u32;
161/// Represents an unsigned 22-bit integer.
162pub type u22le = u32;
163/// Represents an unsigned 23-bit integer.
164pub type u23le = u32;
165/// Represents an unsigned 24-bit integer.
166pub type u24le = u32;
167/// Represents an unsigned 25-bit integer.
168pub type u25le = u32;
169/// Represents an unsigned 26-bit integer.
170pub type u26le = u32;
171/// Represents an unsigned 27-bit integer.
172pub type u27le = u32;
173/// Represents an unsigned 28-bit integer.
174pub type u28le = u32;
175/// Represents an unsigned 29-bit integer.
176pub type u29le = u32;
177/// Represents an unsigned 30-bit integer.
178pub type u30le = u32;
179/// Represents an unsigned 31-bit integer.
180pub type u31le = u32;
181/// Represents an unsigned 32-bit integer.
182pub type u32le = u32;
183/// Represents an unsigned 33-bit integer.
184pub type u33le = u64;
185/// Represents an unsigned 34-bit integer.
186pub type u34le = u64;
187
188/// Represents an unsigned 35-bit integer.
189pub type u35le = u64;
190
191/// Represents an unsigned 36-bit integer.
192pub type u36le = u64;
193/// Represents an unsigned 37-bit integer.
194pub type u37le = u64;
195/// Represents an unsigned 38-bit integer.
196pub type u38le = u64;
197/// Represents an unsigned 39-bit integer.
198pub type u39le = u64;
199/// Represents an unsigned 40-bit integer.
200pub type u40le = u64;
201/// Represents an unsigned 41-bit integer.
202pub type u41le = u64;
203/// Represents an unsigned 42-bit integer.
204pub type u42le = u64;
205/// Represents an unsigned 43-bit integer.
206pub type u43le = u64;
207/// Represents an unsigned 44-bit integer.
208pub type u44le = u64;
209/// Represents an unsigned 45-bit integer.
210pub type u45le = u64;
211/// Represents an unsigned 46-bit integer.
212pub type u46le = u64;
213/// Represents an unsigned 47-bit integer.
214pub type u47le = u64;
215/// Represents an unsigned 48-bit integer.
216pub type u48le = u64;
217/// Represents an unsigned 49-bit integer.
218pub type u49le = u64;
219/// Represents an unsigned 50-bit integer.
220pub type u50le = u64;
221/// Represents an unsigned 51-bit integer.
222pub type u51le = u64;
223/// Represents an unsigned 52-bit integer.
224pub type u52le = u64;
225/// Represents an unsigned 53-bit integer.
226pub type u53le = u64;
227/// Represents an unsigned 54-bit integer.
228pub type u54le = u64;
229/// Represents an unsigned 55-bit integer.
230pub type u55le = u64;
231/// Represents an unsigned 56-bit integer.
232pub type u56le = u64;
233/// Represents an unsigned 57-bit integer.
234pub type u57le = u64;
235/// Represents an unsigned 58-bit integer.
236pub type u58le = u64;
237/// Represents an unsigned 59-bit integer.
238pub type u59le = u64;
239/// Represents an unsigned 60-bit integer.
240pub type u60le = u64;
241/// Represents an unsigned 61-bit integer.
242pub type u61le = u64;
243/// Represents an unsigned 62-bit integer.
244pub type u62le = u64;
245/// Represents an unsigned 63-bit integer.
246pub type u63le = u64;
247/// Represents an unsigned 64-bit integer.
248pub type u64le = u64;
249/// Represents an unsigned 9-bit integer in host endianness.
250pub type u9he = u16;
251/// Represents an unsigned 10-bit integer in host endianness.
252pub type u10he = u16;
253/// Represents an unsigned 11-bit integer in host endianness.
254pub type u11he = u16;
255/// Represents an unsigned 12-bit integer in host endianness.
256pub type u12he = u16;
257/// Represents an unsigned 13-bit integer in host endianness.
258pub type u13he = u16;
259/// Represents an unsigned 14-bit integer in host endianness.
260pub type u14he = u16;
261/// Represents an unsigned 15-bit integer in host endianness.
262pub type u15he = u16;
263/// Represents an unsigned 16-bit integer in host endianness.
264pub type u16he = u16;
265/// Represents an unsigned 17-bit integer in host endianness.
266pub type u17he = u32;
267/// Represents an unsigned 18-bit integer in host endianness.
268pub type u18he = u32;
269/// Represents an unsigned 19-bit integer in host endianness.
270pub type u19he = u32;
271/// Represents an unsigned 20-bit integer in host endianness.
272pub type u20he = u32;
273/// Represents an unsigned 21-bit integer in host endianness.
274pub type u21he = u32;
275/// Represents an unsigned 22-bit integer in host endianness.
276pub type u22he = u32;
277/// Represents an unsigned 23-bit integer in host endianness.
278pub type u23he = u32;
279/// Represents an unsigned 24-bit integer in host endianness.
280pub type u24he = u32;
281/// Represents an unsigned 25-bit integer in host endianness.
282pub type u25he = u32;
283/// Represents an unsigned 26-bit integer in host endianness.
284pub type u26he = u32;
285/// Represents an unsigned 27-bit integer in host endianness.
286pub type u27he = u32;
287/// Represents an unsigned 28-bit integer in host endianness.
288pub type u28he = u32;
289/// Represents an unsigned 29-bit integer in host endianness.
290pub type u29he = u32;
291/// Represents an unsigned 30-bit integer in host endianness.
292pub type u30he = u32;
293/// Represents an unsigned 31-bit integer in host endianness.
294pub type u31he = u32;
295/// Represents an unsigned 32-bit integer in host endianness.
296pub type u32he = u32;
297/// Represents an unsigned 33-bit integer in host endianness.
298pub type u33he = u64;
299/// Represents an unsigned 34-bit integer in host endianness.
300pub type u34he = u64;
301/// Represents an unsigned 35-bit integer in host endianness.
302pub type u35he = u64;
303/// Represents an unsigned 36-bit integer in host endianness.
304pub type u36he = u64;
305/// Represents an unsigned 37-bit integer in host endianness.
306pub type u37he = u64;
307/// Represents an unsigned 38-bit integer in host endianness.
308pub type u38he = u64;
309/// Represents an unsigned 39-bit integer in host endianness.
310pub type u39he = u64;
311/// Represents an unsigned 40-bit integer in host endianness.
312pub type u40he = u64;
313/// Represents an unsigned 41-bit integer in host endianness.
314pub type u41he = u64;
315/// Represents an unsigned 42-bit integer in host endianness.
316pub type u42he = u64;
317/// Represents an unsigned 43-bit integer in host endianness.
318pub type u43he = u64;
319/// Represents an unsigned 44-bit integer in host endianness.
320pub type u44he = u64;
321/// Represents an unsigned 45-bit integer in host endianness.
322pub type u45he = u64;
323/// Represents an unsigned 46-bit integer in host endianness.
324pub type u46he = u64;
325/// Represents an unsigned 47-bit integer in host endianness.
326pub type u47he = u64;
327/// Represents an unsigned 48-bit integer in host endianness.
328pub type u48he = u64;
329/// Represents an unsigned 49-bit integer in host endianness.
330pub type u49he = u64;
331/// Represents an unsigned 50-bit integer in host endianness.
332pub type u50he = u64;
333/// Represents an unsigned 51-bit integer in host endianness.
334pub type u51he = u64;
335/// Represents an unsigned 52-bit integer in host endianness.
336pub type u52he = u64;
337/// Represents an unsigned 53-bit integer in host endianness.
338pub type u53he = u64;
339/// Represents an unsigned 54-bit integer in host endianness.
340pub type u54he = u64;
341/// Represents an unsigned 55-bit integer in host endianness.
342pub type u55he = u64;
343/// Represents an unsigned 56-bit integer in host endianness.
344pub type u56he = u64;
345/// Represents an unsigned 57-bit integer in host endianness.
346pub type u57he = u64;
347/// Represents an unsigned 58-bit integer in host endianness.
348pub type u58he = u64;
349/// Represents an unsigned 59-bit integer in host endianness.
350pub type u59he = u64;
351/// Represents an unsigned 60-bit integer in host endianness.
352pub type u60he = u64;
353/// Represents an unsigned 61-bit integer in host endianness.
354pub type u61he = u64;
355/// Represents an unsigned 62-bit integer in host endianness.
356pub type u62he = u64;
357/// Represents an unsigned 63-bit integer in host endianness.
358pub type u63he = u64;
359/// Represents an unsigned 64-bit integer in host endianness.
360pub type u64he = u64;
361
362pub mod utils {
363
364 pub fn u24be_from_bytes(bytes: [u8; 3]) -> super::u24be {
365 (u32::from(bytes[0]) << 16) | (u32::from(bytes[1]) << 8) | u32::from(bytes[2])
366 }
367
368 pub fn u24be_to_bytes(value: u32) -> [u8; 3] {
369 [
370 ((value >> 16) & 0xFF) as u8,
371 ((value >> 8) & 0xFF) as u8,
372 (value & 0xFF) as u8,
373 ]
374 }
375}
376#[cfg(test)]
377mod tests {
378 use super::*;
379 #[test]
380 fn alias_sizes() {
381 assert_eq!(std::mem::size_of::<u1>(), 1);
382 assert_eq!(std::mem::size_of::<u12be>(), 2);
383 assert_eq!(std::mem::size_of::<u24be>(), 4);
384 assert_eq!(std::mem::size_of::<u64be>(), 8);
385 }
386}