mirror of
https://codeberg.org/icewind/bitbuffer.git
synced 2026-06-03 08:34:07 +02:00
bool write optimizations
This commit is contained in:
parent
f09b56b36a
commit
4557a5babb
2 changed files with 20 additions and 1 deletions
|
|
@ -102,4 +102,23 @@ impl<'a, E: Endianness> WriteBuffer<'a, E> {
|
||||||
self.bytes.extend_from_slice(slice);
|
self.bytes.extend_from_slice(slice);
|
||||||
self.bit_len += slice.len() * 8
|
self.bit_len += slice.len() * 8
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pub fn push_bool(&mut self, val: bool) {
|
||||||
|
let val = val as u8;
|
||||||
|
let bit_offset = self.bit_len() % 8;
|
||||||
|
if E::is_le() {
|
||||||
|
if bit_offset == 0 {
|
||||||
|
self.bytes.push(val);
|
||||||
|
} else {
|
||||||
|
*self.bytes.last_mut().unwrap() |= val << bit_offset;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
if bit_offset == 0 {
|
||||||
|
self.bytes.push(val << 7);
|
||||||
|
} else {
|
||||||
|
*self.bytes.last_mut().unwrap() |= val << (7 - bit_offset);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
self.bit_len += 1;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -107,7 +107,7 @@ where
|
||||||
/// ```
|
/// ```
|
||||||
#[inline]
|
#[inline]
|
||||||
pub fn write_bool(&mut self, value: bool) -> Result<()> {
|
pub fn write_bool(&mut self, value: bool) -> Result<()> {
|
||||||
self.push_bits(value as usize, 1);
|
self.buffer.push_bool(value);
|
||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue