MCPcopy Create free account
hub / github.com/NodeDB-Lab/nodedb / decode_dod

Function decode_dod

nodedb-codec/src/double_delta.rs:243–269  ·  view source on GitHub ↗
(reader: &mut BitReader<'_>)

Source from the content-addressed store, hash-verified

241}
242
243fn decode_dod(reader: &mut BitReader<'_>) -> Result<i64, CodecError> {
244 let bit = reader.read_bit()?;
245 if !bit {
246 return Ok(0);
247 }
248
249 let bit2 = reader.read_bit()?;
250 if !bit2 {
251 let raw = reader.read_bits(7)? as i64;
252 return Ok(sign_extend(raw, 7));
253 }
254
255 let bit3 = reader.read_bit()?;
256 if !bit3 {
257 let raw = reader.read_bits(9)? as i64;
258 return Ok(sign_extend(raw, 9));
259 }
260
261 let bit4 = reader.read_bit()?;
262 if !bit4 {
263 let raw = reader.read_bits(12)? as i64;
264 return Ok(sign_extend(raw, 12));
265 }
266
267 let raw = reader.read_bits(64)?;
268 Ok(raw as i64)
269}
270
271fn sign_extend(value: i64, bits: u32) -> i64 {
272 let shift = 64 - bits;

Callers 1

decodeFunction · 0.85

Calls 3

read_bitMethod · 0.80
read_bitsMethod · 0.80
sign_extendFunction · 0.70

Tested by

no test coverage detected