diff options
author | metamuffin <metamuffin@disroot.org> | 2025-02-15 13:21:25 +0100 |
---|---|---|
committer | metamuffin <metamuffin@disroot.org> | 2025-02-15 13:21:25 +0100 |
commit | 2f4a11ddda04604d5d756231d258ef60fa9f7bd8 (patch) | |
tree | 891c99da0038eb513ed6de4c8a892d3f421d9b92 /src/helper.rs | |
parent | d116a1df8fe14edc8de157bf8088244261fca30f (diff) | |
download | unity-tools-2f4a11ddda04604d5d756231d258ef60fa9f7bd8.tar unity-tools-2f4a11ddda04604d5d756231d258ef60fa9f7bd8.tar.bz2 unity-tools-2f4a11ddda04604d5d756231d258ef60fa9f7bd8.tar.zst |
can read objects
Diffstat (limited to 'src/helper.rs')
-rw-r--r-- | src/helper.rs | 38 |
1 files changed, 38 insertions, 0 deletions
diff --git a/src/helper.rs b/src/helper.rs index cb52b8c..a65d3e8 100644 --- a/src/helper.rs +++ b/src/helper.rs @@ -28,6 +28,12 @@ pub trait ReadExt { fn read_i64_le(&mut self) -> Result<i64>; fn read_u128_be(&mut self) -> Result<u128>; fn read_cstr(&mut self) -> Result<String>; + fn read_f32(&mut self, e: Endianness) -> Result<f32>; + fn read_f32_be(&mut self) -> Result<f32>; + fn read_f32_le(&mut self) -> Result<f32>; + fn read_f64(&mut self, e: Endianness) -> Result<f64>; + fn read_f64_be(&mut self) -> Result<f64>; + fn read_f64_le(&mut self) -> Result<f64>; } impl<T: Read> ReadExt for T { @@ -132,6 +138,38 @@ impl<T: Read> ReadExt for T { self.read_exact(&mut buf)?; Ok(i64::from_le_bytes(buf)) } + fn read_f32(&mut self, e: Endianness) -> Result<f32> { + match e { + Endianness::Big => self.read_f32_be(), + Endianness::Little => self.read_f32_le(), + } + } + fn read_f32_be(&mut self) -> Result<f32> { + let mut buf = [0; 4]; + self.read_exact(&mut buf)?; + Ok(f32::from_be_bytes(buf)) + } + fn read_f32_le(&mut self) -> Result<f32> { + let mut buf = [0; 4]; + self.read_exact(&mut buf)?; + Ok(f32::from_le_bytes(buf)) + } + fn read_f64(&mut self, e: Endianness) -> Result<f64> { + match e { + Endianness::Big => self.read_f64_be(), + Endianness::Little => self.read_f64_le(), + } + } + fn read_f64_be(&mut self) -> Result<f64> { + let mut buf = [0; 8]; + self.read_exact(&mut buf)?; + Ok(f64::from_be_bytes(buf)) + } + fn read_f64_le(&mut self) -> Result<f64> { + let mut buf = [0; 8]; + self.read_exact(&mut buf)?; + Ok(f64::from_le_bytes(buf)) + } fn read_u128_be(&mut self) -> Result<u128> { let mut buf = [0; 16]; self.read_exact(&mut buf)?; |