aboutsummaryrefslogtreecommitdiff
path: root/src/utils.rs
diff options
context:
space:
mode:
authorIgor Tolmachev <me@igorek.dev>2024-06-10 23:38:08 +0900
committerIgor Tolmachev <me@igorek.dev>2024-06-23 15:34:34 +0900
commitbd77f62e99a5300dfa52aef3a7040414b28ebfd6 (patch)
tree4965b7fc0392264f9a8c44c00ed254019747b4b5 /src/utils.rs
parent9003b81813ff171edfc6101868c226c5c7d1957c (diff)
downloadarchivator-bd77f62e99a5300dfa52aef3a7040414b28ebfd6.tar.gz
archivator-bd77f62e99a5300dfa52aef3a7040414b28ebfd6.zip
Reset branch
Diffstat (limited to 'src/utils.rs')
-rw-r--r--src/utils.rs60
1 files changed, 0 insertions, 60 deletions
diff --git a/src/utils.rs b/src/utils.rs
deleted file mode 100644
index 57ad1c9..0000000
--- a/src/utils.rs
+++ /dev/null
@@ -1,60 +0,0 @@
1use std::io::{Read, Result as IOResult};
2
3macro_rules! archive_datatype {
4 {
5 $vis:vis struct $struct_name:ident {
6 $(
7 $($fix_field_name:ident: $fix_field_type:ty)?
8 $([const] $const_field_name:ident: $const_field_type:ty = $const_field_value:expr)?
9 ,
10 )*
11 }
12 }
13 => {
14 #[derive(Debug)]
15 $vis struct $struct_name { $($(pub $fix_field_name: $fix_field_type,)?)* }
16
17 #[allow(unused)]
18 impl $struct_name {
19 $($(pub const $const_field_name: $const_field_type = $const_field_value;)?)*
20 }
21
22
23 impl ArchiveDatatype<{$($((<$fix_field_type>::BITS as usize / 8)+)?)* 0}> for $struct_name {
24 fn parse(buf: [u8; Self::SIZE]) -> Self {
25 let mut byte = 0;
26
27 $($(
28 byte += (<$fix_field_type>::BITS / 8) as usize;
29 let $fix_field_name = <$fix_field_type>::from_le_bytes(buf[byte - (<$fix_field_type>::BITS as usize / 8)..byte].try_into().unwrap());
30 )?)*
31
32 Self { $($($fix_field_name,)?)* }
33 }
34
35 fn dump(&self) -> [u8; Self::SIZE] {
36 [$($(&self.$fix_field_name.to_le_bytes()[..],)?)*]
37 .concat()
38 .try_into()
39 .unwrap()
40 }
41 }
42 }
43}
44pub(crate) use archive_datatype;
45
46pub trait ReadHelper: Read {
47 fn read2buf<const SIZE: usize>(&mut self) -> IOResult<[u8; SIZE]> {
48 let mut buf = [0; SIZE];
49 self.read(&mut buf)?;
50 Ok(buf)
51 }
52
53 fn read2vec(&mut self, size: usize) -> IOResult<Vec<u8>> {
54 let mut buf = vec![0; size];
55 self.read(&mut buf)?;
56 Ok(buf)
57 }
58}
59
60impl<R: Read> ReadHelper for R {}