BinaryWriterPosition extension

Position management methods for BinaryWriter.

Controls the write position (offset) within the buffer and provides utilities for the "Reserve & Backpatch" pattern.

Key methods:

  • seek: move to any position within written bytes
  • skip: advance position without writing (reserve space)
  • reserve: reserve space and return starting position
  • shiftBytes: compact buffer by shifting payload left

Reserve & Backpatch pattern:

final headerPos = writer.reserve(8);  // Reserve 8 bytes for header
writer.writeUint32(0x12345678);       // Write payload

// Backpatch header at reserved position
writer.seek(headerPos);
writer.writeUint32(0xCAFEBABE);

Compacting reserved space:

final headerPos = writer.reserve(8);
writer.writeUint32(0x11111111);
writer.writeUint32(0x22222222);
// Shift payload left to overwrite unused reserved space
writer.shiftBytes(headerPos + 2, writer.bytesWritten, 0);
on

Methods

reserve(int count) int

Available on BinaryWriter, provided by the BinaryWriterPosition extension

Reserves count bytes for later backpatching and returns the starting offset of the reserved block.
seek(int position) → void

Available on BinaryWriter, provided by the BinaryWriterPosition extension

Sets the write position to the specified byte offset.
shiftBytes(int start, int end, int target) → void

Available on BinaryWriter, provided by the BinaryWriterPosition extension

Shifts a block of written bytes within the buffer.
skip(int count) → void

Available on BinaryWriter, provided by the BinaryWriterPosition extension

Advances the write position by count bytes without writing data.