/rust/registry/src/index.crates.io-1949cf8c6b5b557f/regex-automata-0.1.10/src/byteorder.rs
Line | Count | Source |
1 | | use core::convert::TryInto; |
2 | | |
3 | | pub trait ByteOrder { |
4 | | fn read_u16(buf: &[u8]) -> u16; |
5 | | fn read_u32(buf: &[u8]) -> u32; |
6 | | fn read_u64(buf: &[u8]) -> u64; |
7 | | fn read_uint(buf: &[u8], nbytes: usize) -> u64; |
8 | | fn write_u16(buf: &mut [u8], n: u16); |
9 | | fn write_u32(buf: &mut [u8], n: u32); |
10 | | fn write_u64(buf: &mut [u8], n: u64); |
11 | | fn write_uint(buf: &mut [u8], n: u64, nbytes: usize); |
12 | | } |
13 | | |
14 | | pub enum BigEndian {} |
15 | | pub enum LittleEndian {} |
16 | | pub enum NativeEndian {} |
17 | | |
18 | | macro_rules! impl_endian { |
19 | | ($t:ty, $from_endian:ident, $to_endian:ident) => { |
20 | | impl ByteOrder for $t { |
21 | | #[inline] |
22 | 0 | fn read_u16(buf: &[u8]) -> u16 { |
23 | 0 | u16::$from_endian(buf[0..2].try_into().unwrap()) |
24 | 0 | } Unexecuted instantiation: <regex_automata::byteorder::NativeEndian as regex_automata::byteorder::ByteOrder>::read_u16 Unexecuted instantiation: <regex_automata::byteorder::BigEndian as regex_automata::byteorder::ByteOrder>::read_u16 Unexecuted instantiation: <regex_automata::byteorder::LittleEndian as regex_automata::byteorder::ByteOrder>::read_u16 |
25 | | |
26 | | #[inline] |
27 | 0 | fn read_u32(buf: &[u8]) -> u32 { |
28 | 0 | u32::$from_endian(buf[0..4].try_into().unwrap()) |
29 | 0 | } Unexecuted instantiation: <regex_automata::byteorder::BigEndian as regex_automata::byteorder::ByteOrder>::read_u32 Unexecuted instantiation: <regex_automata::byteorder::NativeEndian as regex_automata::byteorder::ByteOrder>::read_u32 Unexecuted instantiation: <regex_automata::byteorder::LittleEndian as regex_automata::byteorder::ByteOrder>::read_u32 |
30 | | |
31 | | #[inline] |
32 | 0 | fn read_u64(buf: &[u8]) -> u64 { |
33 | 0 | u64::$from_endian(buf[0..8].try_into().unwrap()) |
34 | 0 | } Unexecuted instantiation: <regex_automata::byteorder::BigEndian as regex_automata::byteorder::ByteOrder>::read_u64 Unexecuted instantiation: <regex_automata::byteorder::NativeEndian as regex_automata::byteorder::ByteOrder>::read_u64 Unexecuted instantiation: <regex_automata::byteorder::LittleEndian as regex_automata::byteorder::ByteOrder>::read_u64 |
35 | | |
36 | | #[inline] |
37 | 0 | fn read_uint(buf: &[u8], nbytes: usize) -> u64 { |
38 | 0 | let mut dst = [0u8; 8]; |
39 | 0 | dst[..nbytes].copy_from_slice(&buf[..nbytes]); |
40 | 0 | u64::$from_endian(dst) |
41 | 0 | } Unexecuted instantiation: <regex_automata::byteorder::BigEndian as regex_automata::byteorder::ByteOrder>::read_uint Unexecuted instantiation: <regex_automata::byteorder::NativeEndian as regex_automata::byteorder::ByteOrder>::read_uint Unexecuted instantiation: <regex_automata::byteorder::LittleEndian as regex_automata::byteorder::ByteOrder>::read_uint |
42 | | |
43 | | #[inline] |
44 | 0 | fn write_u16(buf: &mut [u8], n: u16) { |
45 | 0 | buf[0..2].copy_from_slice(&n.$to_endian()[..]); |
46 | 0 | } Unexecuted instantiation: <regex_automata::byteorder::NativeEndian as regex_automata::byteorder::ByteOrder>::write_u16 Unexecuted instantiation: <regex_automata::byteorder::BigEndian as regex_automata::byteorder::ByteOrder>::write_u16 Unexecuted instantiation: <regex_automata::byteorder::LittleEndian as regex_automata::byteorder::ByteOrder>::write_u16 |
47 | | |
48 | | #[inline] |
49 | 0 | fn write_u32(buf: &mut [u8], n: u32) { |
50 | 0 | buf[0..4].copy_from_slice(&n.$to_endian()[..]); |
51 | 0 | } Unexecuted instantiation: <regex_automata::byteorder::BigEndian as regex_automata::byteorder::ByteOrder>::write_u32 Unexecuted instantiation: <regex_automata::byteorder::NativeEndian as regex_automata::byteorder::ByteOrder>::write_u32 Unexecuted instantiation: <regex_automata::byteorder::LittleEndian as regex_automata::byteorder::ByteOrder>::write_u32 |
52 | | |
53 | | #[inline] |
54 | 0 | fn write_u64(buf: &mut [u8], n: u64) { |
55 | 0 | buf[0..8].copy_from_slice(&n.$to_endian()[..]); |
56 | 0 | } Unexecuted instantiation: <regex_automata::byteorder::BigEndian as regex_automata::byteorder::ByteOrder>::write_u64 Unexecuted instantiation: <regex_automata::byteorder::NativeEndian as regex_automata::byteorder::ByteOrder>::write_u64 Unexecuted instantiation: <regex_automata::byteorder::LittleEndian as regex_automata::byteorder::ByteOrder>::write_u64 |
57 | | |
58 | | #[inline] |
59 | 0 | fn write_uint(buf: &mut [u8], n: u64, nbytes: usize) { |
60 | 0 | buf[..nbytes].copy_from_slice(&n.$to_endian()[..nbytes]); |
61 | 0 | } Unexecuted instantiation: <regex_automata::byteorder::NativeEndian as regex_automata::byteorder::ByteOrder>::write_uint Unexecuted instantiation: <regex_automata::byteorder::BigEndian as regex_automata::byteorder::ByteOrder>::write_uint Unexecuted instantiation: <regex_automata::byteorder::LittleEndian as regex_automata::byteorder::ByteOrder>::write_uint |
62 | | } |
63 | | }; |
64 | | } |
65 | | |
66 | | impl_endian! { |
67 | | BigEndian, from_be_bytes, to_be_bytes |
68 | | } |
69 | | |
70 | | impl_endian! { |
71 | | LittleEndian, from_le_bytes, to_le_bytes |
72 | | } |
73 | | |
74 | | impl_endian! { |
75 | | NativeEndian, from_ne_bytes, to_ne_bytes |
76 | | } |