Function defaultRebase [src]
Prototype
pub fn defaultRebase(w: *Writer, preserve: usize, minimum_len: usize) Error!void
Parameters
w: *Writer
preserve: usize
minimum_len: usize
Possible Errors
See the Writer
implementation for detailed diagnostics.
Source
pub fn defaultRebase(w: *Writer, preserve: usize, minimum_len: usize) Error!void {
while (w.buffer.len - w.end < minimum_len) {
{
// TODO: instead of this logic that "hides" data from
// the implementation, introduce a seek index to Writer
const preserved_head = w.end -| preserve;
const preserved_tail = w.end;
const preserved_len = preserved_tail - preserved_head;
w.end = preserved_head;
defer w.end += preserved_len;
assert(0 == try w.vtable.drain(w, &.{""}, 1));
assert(w.end <= preserved_head + preserved_len);
@memmove(w.buffer[w.end..][0..preserved_len], w.buffer[preserved_head..preserved_tail]);
}
// If the loop condition was false this assertion would have passed
// anyway. Otherwise, give the implementation a chance to grow the
// buffer before asserting on the buffer length.
assert(w.buffer.len - preserve >= minimum_len);
}
}