javm_transpiler/
emitter.rs1pub fn pack_bitmask(bitmask: &[u8]) -> Vec<u8> {
11 let packed_len = bitmask.len().div_ceil(8);
12 let mut packed = vec![0u8; packed_len];
13 for (i, &bit) in bitmask.iter().enumerate() {
14 if bit != 0 {
15 packed[i / 8] |= 1 << (i % 8);
16 }
17 }
18 packed
19}
20
21#[cfg(test)]
22mod tests {
23 use super::*;
24
25 #[test]
26 fn test_pack_bitmask() {
27 assert_eq!(pack_bitmask(&[1, 1, 1]), vec![0x07]);
28 assert_eq!(pack_bitmask(&[1, 0, 1, 0, 1, 0, 1, 0]), vec![0x55]);
29 assert_eq!(pack_bitmask(&[1, 0, 1, 0, 1, 0, 1, 0, 1]), vec![0x55, 0x01]);
30 }
31}