From 2bcb950865d7d6e3786ac0df5105b4e1d31f68ed Mon Sep 17 00:00:00 2001 From: Mel Henning Date: Mon, 30 Dec 2024 17:42:59 -0500 Subject: [PATCH] compiler/rust/bitset: Don't expose words This encapsulates the bitset's word size and word count, which means consumers no longer need to be careful about word count. Users of the old apis for writing expressions on bit sets should migrate to the new expression API. Reviewed-by: Mary Guillemard Part-of: --- src/compiler/rust/bitset.rs | 45 ++----------------------------------- 1 file changed, 2 insertions(+), 43 deletions(-) diff --git a/src/compiler/rust/bitset.rs b/src/compiler/rust/bitset.rs index f3aa1e1f329..a07610c5871 100644 --- a/src/compiler/rust/bitset.rs +++ b/src/compiler/rust/bitset.rs @@ -22,8 +22,8 @@ use std::cmp::{max, min}; use std::ops::{ - BitAnd, BitAndAssign, BitOr, BitOrAssign, BitXor, BitXorAssign, Range, - RangeFull, Sub, SubAssign, + BitAnd, BitAndAssign, BitOr, BitOrAssign, BitXor, BitXorAssign, RangeFull, + Sub, SubAssign, }; #[derive(Clone)] @@ -75,10 +75,6 @@ impl BitSet { BitSetIter::new(self) } - pub fn get_word(&self, word: usize) -> u32 { - self.words.get(word).cloned().unwrap_or(0) - } - pub fn next_unset(&self, start: usize) -> usize { if start >= self.words.len() * 32 { return start; @@ -115,43 +111,6 @@ impl BitSet { exists } - #[inline] - fn set_word( - &mut self, - w: usize, - mask: u32, - f: &mut impl FnMut(usize) -> u32, - ) { - self.words[w] = (self.words[w] & !mask) | (f(w) & mask); - } - - pub fn set_words( - &mut self, - bits: Range, - mut f: impl FnMut(usize) -> u32, - ) { - if bits.is_empty() { - return; - } - - let first_word = bits.start / 32; - let last_word = (bits.end - 1) / 32; - let start_mask = !0_u32 << (bits.start % 32); - let end_mask = !0_u32 >> (31 - ((bits.end - 1) % 32)); - - self.reserve(last_word + 1); - - if first_word == last_word { - self.set_word(first_word, start_mask & end_mask, &mut f); - } else { - self.set_word(first_word, start_mask, &mut f); - for w in (first_word + 1)..last_word { - self.set_word(w, !0, &mut f); - } - self.set_word(last_word, end_mask, &mut f); - } - } - /// Evaluate an expression and store its value in self pub fn assign(&mut self, value: BitSetStream) where