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
Reservescountbytes 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 bycountbytes without writing data.