From b5ff460e938779be4eeab292c2cc1d436b93c137 Mon Sep 17 00:00:00 2001 From: metamuffin Date: Wed, 14 Jan 2026 02:25:09 +0100 Subject: Store object values as big endian; Draft query types --- common/object/src/lib.rs | 3 +-- common/object/src/value.rs | 29 ++++++----------------------- 2 files changed, 7 insertions(+), 25 deletions(-) (limited to 'common/object') diff --git a/common/object/src/lib.rs b/common/object/src/lib.rs index 7c97bee..ea64fd4 100644 --- a/common/object/src/lib.rs +++ b/common/object/src/lib.rs @@ -12,14 +12,13 @@ mod registry; mod tests; mod value; pub use buffer::*; -use bytemuck::NoUninit; pub use registry::*; pub use value::*; use std::marker::PhantomData; #[repr(transparent)] -#[derive(NoUninit, Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord)] +#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord)] pub struct Tag(pub u32); #[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord)] diff --git a/common/object/src/value.rs b/common/object/src/value.rs index 1b24e79..aad6101 100644 --- a/common/object/src/value.rs +++ b/common/object/src/value.rs @@ -43,7 +43,7 @@ impl ValueStore for &str { impl Value<'_> for u32 { const ALIGNED: bool = true; fn load_aligned(buf: &[u32]) -> Option { - buf.get(0).copied() + buf.get(0).copied().map(u32::from_be) } } impl ValueStore for u32 { @@ -51,7 +51,7 @@ impl ValueStore for u32 { true } fn store_aligned(&self, buf: &mut Vec) { - buf.push(*self); + buf.push(self.to_be()); } fn size(&self) -> usize { 4 @@ -60,8 +60,8 @@ impl ValueStore for u32 { impl Value<'_> for u64 { const ALIGNED: bool = false; fn load_aligned(buf: &[u32]) -> Option { - let hi = *buf.get(0)? as u64; - let lo = *buf.get(1)? as u64; + let hi = u32::from_be(*buf.get(0)?) as u64; + let lo = u32::from_be(*buf.get(1)?) as u64; Some(hi << 32 | lo) } } @@ -70,8 +70,8 @@ impl ValueStore for u64 { true } fn store_aligned(&self, buf: &mut Vec) { - buf.push((self >> 32) as u32); - buf.push(*self as u32); + buf.push(((self >> 32) as u32).to_be()); + buf.push((*self as u32).to_be()); } fn size(&self) -> usize { 8 @@ -124,20 +124,3 @@ impl ValueStore for &[u8] { self.len() } } -impl<'a> Value<'a> for &'a [u32] { - const ALIGNED: bool = true; - fn load_aligned(buf: &'a [u32]) -> Option { - Some(buf) - } -} -impl ValueStore for &[u32] { - fn is_aligned(&self) -> bool { - true - } - fn store_aligned(&self, buf: &mut Vec) { - buf.extend(*self); - } - fn size(&self) -> usize { - self.len() * 4 - } -} -- cgit v1.3