pub struct DataHeuristics {
pub block_size: usize,
pub row_alignment: RowAlignment,
pub min_repeat_rows: Option<usize>,
pub interior: Vec<RunRule>,
pub leading: Option<EdgeTrim>,
pub trailing: Option<EdgeTrim>,
pub all_zero_single_ds_min: usize,
pub min_aligned_blocks: Option<usize>,
pub zero_skip_windowed: bool,
}Fields§
§block_size: usizeBytes per .db row; also the unit for alignment and row-repeat.
row_alignment: RowAlignmentHow literal rows break for display; does not affect byte layout.
min_repeat_rows: Option<usize>Collapse N+ identical block_size rows into one .rept (hexdump *).
None disables multi-byte row folding.
interior: Vec<RunRule>RLE rules applied to runs in the body of the span.
leading: Option<EdgeTrim>Trim at the start of a mapped chunk (None = leave leading bytes literal).
trailing: Option<EdgeTrim>Trim at the end of a mapped chunk (None = leave trailing bytes literal).
all_zero_single_ds_min: usizeWhen the entire span is zeros and length is at least this value, emit one
skip run for the whole span. usize::MAX disables the fast path.
min_aligned_blocks: Option<usize>When set, run compression only applies to the address-aligned middle of a
homogeneous run spanning at least this many block_size blocks.
zero_skip_windowed: boolEmit zero skip runs as multiple .ds block_size lines instead of one
.ds N for the full run length.
Implementations§
Source§impl DataHeuristics
impl DataHeuristics
pub fn iterate<'a>( &self, address: AddressValue, edge: Option<Edge>, bytes: &'a [u8], ) -> impl Iterator<Item = DataChunk<'a, u8>>
Sourcepub fn literal_rows<'a>(
&self,
address: AddressValue,
bytes: &'a [u8],
) -> Vec<&'a [u8]>
pub fn literal_rows<'a>( &self, address: AddressValue, bytes: &'a [u8], ) -> Vec<&'a [u8]>
Split a literal span into .db rows per block_size and row_alignment.