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

Function decode_coord_axis_rle

nodedb-array/src/codec/coord_rle.rs:97–116  ·  view source on GitHub ↗

Decode a DimDict from bytes previously encoded by `encode_coord_axis_rle`.

(data: &[u8], pos: &mut usize)

Source from the content-addressed store, hash-verified

95
96/// Decode a DimDict from bytes previously encoded by `encode_coord_axis_rle`.
97pub fn decode_coord_axis_rle(data: &[u8], pos: &mut usize) -> ArrayResult<DimDict> {
98 if *pos + 4 > data.len() {
99 return Err(ArrayError::SegmentCorruption {
100 detail: "rle coord: truncated mode marker".into(),
101 });
102 }
103 let first_u32 = u32::from_le_bytes(
104 data[*pos..*pos + 4]
105 .try_into()
106 .expect("invariant: bounds check at line 96 guarantees 4 bytes available"),
107 );
108
109 if first_u32 == RLE_MARKER {
110 *pos += 4;
111 decode_rle(data, pos)
112 } else {
113 // Delta mode — don't advance pos; coord_delta reads dict_count first.
114 decode_coord_axis(data, pos)
115 }
116}
117
118fn decode_rle(data: &[u8], pos: &mut usize) -> ArrayResult<DimDict> {
119 if *pos + 4 > data.len() {

Callers 2

roundtripFunction · 0.85
decode_structuralFunction · 0.85

Calls 4

decode_rleFunction · 0.85
decode_coord_axisFunction · 0.85
lenMethod · 0.45
expectMethod · 0.45

Tested by

no test coverage detected