Function defaultRebase [src]

Prototype

pub fn defaultRebase(w: *Writer, preserve: usize, minimum_len: usize) Error!void

Parameters

w: *Writerpreserve: usizeminimum_len: usize

Possible Errors

WriteFailed

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); } }