DoxigAlpha

Writer

Fields of this type

Fields

#
vtable:*const VTable
buffer:[]u8
If this has length zero, the writer is unbuffered, and `flush` is a no-op.
end:usize
In `buffer` before this are buffered bytes, after this is `undefined`.

Type definitions in this namespace

Types

#
Allocating
Maintains `Writer` state such that it writes to the unused capacity of an

Writes to `buffer` and returns `error.WriteFailed` when it is full.

Functions

#
fixed
Writes to `buffer` and returns `error.WriteFailed` when it is full.
buffered
Returns the contents not yet drained.
writeVec
If the total number of bytes of `data` fits inside `unusedCapacitySlice`,
writeSplat
If the number of bytes to write based on `data` and `splat` fits inside
writeSplatHeader
Returns how many bytes were consumed from `header` and `data`.
writeSplatHeaderLimit
Equivalent to `writeSplatHeader` but writes at most `limit` bytes.
flush
Drains all remaining buffered data.
defaultFlush
Repeatedly calls `VTable.drain` until `end` is zero.
noopFlush
Does nothing.
writableArray
Asserts the provided buffer has total capacity enough for `len`.
writableSlice
Asserts the provided buffer has total capacity enough for `len`.
writableSliceGreedy
Asserts the provided buffer has total capacity enough for `minimum_len`.
writableSliceGreedyPreserve
Asserts the provided buffer has total capacity enough for `minimum_len`
writableSlicePreserve
Asserts the provided buffer has total capacity enough for `len`.
advance
After calling `writableSliceGreedy`, this function tracks how many bytes
writeVecAll
The `data` parameter is mutable because this function needs to mutate the
writeSplatAll
The `data` parameter is mutable because this function needs to mutate the
writeAll
Calls `drain` as many times as necessary such that all of `bytes` are
print
Renders fmt string with args, calling `writer` with slices of bytes.
writeByte
Calls `drain` as many times as necessary such that `byte` is transferred.
writeBytePreserve
When draining the buffer, ensures that at least `preserve` bytes
splatByteAll
Writes the same byte many times, performing the underlying write call as
splatByte
Writes the same byte many times, allowing short writes.
splatBytesAll
Writes the same slice many times, performing the underlying write call as
splatBytes
Writes the same slice many times, allowing short writes.
writeInt
Asserts the `buffer` was initialized with a capacity of at least `@sizeOf(T)` bytes.
writeStruct
The function is inline to avoid the dead code in case `endian` is
sendFile
Unlike `writeSplat` and `writeVec`, this function will call into `VTable`
sendFileHeader
Returns how many bytes from `header` and `file_reader` were consumed.
sendFileReading
Asserts nonzero buffer capacity and nonzero `limit`.
sendFileAll
Number of bytes logically written is returned.
sendFileReadingAll
Equivalent to `sendFileAll` but uses direct `pread` and `read` calls on
printValue
Asserts `buffer` capacity of at least 2 if `value` is a union.
printIntAny
In general, prefer `printInt` to avoid generic explosion.
printFloat
Uses a larger stack buffer; asserts mode is decimal or scientific.
printFloatHexOptions
Uses a smaller stack buffer; asserts mode is not decimal or scientific.
printByteSize
Format option `precision` is ignored when `value` is less than 1kB
printDuration
Writes number of nanoseconds according to its signed magnitude:
writeUleb128
Write a single unsigned integer as LEB128 to the given writer.
writeSleb128
Write a single signed integer as LEB128 to the given writer.
writeLeb128
Write a single integer as LEB128 to the given writer.
consume
Removes the first `n` bytes from `buffer` by shifting buffer contents,
consumeAll
Shortcut for setting `end` to zero and returning zero.
unimplementedSendFile
For use when the `Writer` implementation can cannot offer a more efficient
fixedDrain
When this function is called it usually means the buffer got full, so it's
Hashed
Provides a `Writer` implementation based on calling `Hasher.update`, sending
Hashing
Provides a `Writer` implementation based on calling `Hasher.update`,

Error sets in this namespace

Error Sets

#

= .{ .vtable = &.{ .drain = failingDrain, .sendFile = failingSendFile, .rebase = failingRebase, }, .buffer = &.{}, }

Values

#
failing
= .{ .vtable = &.{ .drain = failingDrain, .sendFile = failingSendFile, .rebase = failingRebase, }, .buffer = &.{}, }