rust/hwphysics/src/common.rs
changeset 15380 6e3e5be8b2e2
parent 15288 0f734fa371e1
child 15381 52844baced17
--- a/rust/hwphysics/src/common.rs	Wed Aug 28 22:53:40 2019 +0300
+++ b/rust/hwphysics/src/common.rs	Wed Aug 28 23:06:34 2019 +0300
@@ -6,7 +6,6 @@
 };
 
 pub type GearId = NonZeroU16;
-pub trait GearData {}
 
 #[derive(PartialEq, Eq, PartialOrd, Ord, Clone, Copy, Debug)]
 #[repr(transparent)]
@@ -37,16 +36,6 @@
     }
 }
 
-pub trait GearDataProcessor<T: GearData> {
-    fn add(&mut self, gear_id: GearId, gear_data: T);
-    fn remove(&mut self, gear_id: GearId);
-    fn get(&mut self, gear_id: GearId) -> Option<T>;
-}
-
-pub trait GearDataAggregator<T: GearData> {
-    fn find_processor(&mut self) -> &mut GearDataProcessor<T>;
-}
-
 pub struct GearAllocator {
     max_id: u16,
     free_ids: BinaryHeap<GearId>,
@@ -73,91 +62,3 @@
         self.free_ids.push(gear_id)
     }
 }
-
-#[derive(Clone, Copy, Default)]
-pub struct LookupEntry<T> {
-    index: Option<NonZeroU16>,
-    value: T,
-}
-
-impl<T> LookupEntry<T> {
-    #[inline]
-    pub fn index(&self) -> u16 {
-        self.index.map(|i| i.get()).unwrap_or(0) - 1
-    }
-
-    #[inline]
-    pub fn set_index(&mut self, index: u16) {
-        self.index = unsafe { Some(NonZeroU16::new_unchecked(index.saturating_add(1))) };
-    }
-
-    #[inline]
-    pub fn value(&self) -> &T {
-        &self.value
-    }
-
-    #[inline]
-    pub fn value_mut(&mut self) -> &mut T {
-        &mut self.value
-    }
-
-    #[inline]
-    pub fn set_value(&mut self, value: T) {
-        self.value = value;
-    }
-}
-
-pub struct GearDataLookup<T> {
-    lookup: Box<[LookupEntry<T>]>,
-}
-
-impl<T: Default + Copy> GearDataLookup<T> {
-    pub fn new() -> Self {
-        Self {
-            lookup: vec![LookupEntry::default(); u16::max_value() as usize].into_boxed_slice(),
-        }
-    }
-}
-
-impl<T> GearDataLookup<T> {
-    pub fn add(&mut self, gear_id: GearId, index: u16, value: T) {
-        // All possible Gear IDs are valid indices
-        let entry = unsafe { self.lookup.get_unchecked_mut(gear_id.get() as usize - 1) };
-        entry.set_index(index);
-        entry.set_value(value);
-    }
-
-    pub fn get(&self, gear_id: GearId) -> Option<&LookupEntry<T>> {
-        // All possible Gear IDs are valid indices
-        let entry = unsafe { self.lookup.get_unchecked(gear_id.get() as usize - 1) };
-        if let Some(index) = entry.index {
-            Some(entry)
-        } else {
-            None
-        }
-    }
-
-    pub fn get_mut(&mut self, gear_id: GearId) -> Option<&mut LookupEntry<T>> {
-        // All possible Gear IDs are valid indices
-        let entry = unsafe { self.lookup.get_unchecked_mut(gear_id.get() as usize - 1) };
-        if let Some(index) = entry.index {
-            Some(entry)
-        } else {
-            None
-        }
-    }
-}
-
-impl<T> Index<GearId> for GearDataLookup<T> {
-    type Output = LookupEntry<T>;
-
-    fn index(&self, index: GearId) -> &Self::Output {
-        self.get(index).unwrap()
-    }
-}
-
-impl<T> IndexMut<GearId> for GearDataLookup<T> {
-    fn index_mut(&mut self, index: GearId) -> &mut Self::Output {
-        self.get_mut(index).unwrap()
-    }
-}