(
endianness: Endianness,
nibble: u8,
data: &[u8],
cursor: &mut usize,
end: usize,
)
| 177 | } |
| 178 | |
| 179 | fn decode_delta( |
| 180 | endianness: Endianness, |
| 181 | nibble: u8, |
| 182 | data: &[u8], |
| 183 | cursor: &mut usize, |
| 184 | end: usize, |
| 185 | ) -> Result<i32> { |
| 186 | if nibble == 8 { |
| 187 | ensure!(*cursor + 2 <= end, "extended delta out of range"); |
| 188 | let bytes: [u8; 2] = data[*cursor..*cursor + 2].try_into().unwrap(); |
| 189 | *cursor += 2; |
| 190 | Ok(match endianness { |
| 191 | Endianness::Big => i16::from_be_bytes(bytes) as i32, |
| 192 | Endianness::Little => i16::from_le_bytes(bytes) as i32, |
| 193 | }) |
| 194 | } else { |
| 195 | let mut value = (nibble & 0x0f) as i32; |
| 196 | if value & 0x8 != 0 { |
| 197 | value -= 0x10; |
| 198 | } |
| 199 | Ok(value) |
| 200 | } |
| 201 | } |
| 202 | |
| 203 | fn slice_at( |
| 204 | data: &[u8], |
no outgoing calls
no test coverage detected