Module: nupp.bytes

Typed binary reads and writes over a string.buffer.Buffer.

A Buffer already moves raw bytes with put/get and reserve/commit/ref; Reader and Writer add the missing piece, a sized integer or float landing on those bytes without hand-rolling the ffi.cast each time.

Both read and write host-endian, the same as every other cast in this codebase (nupp.compiler.build.hash): LuaJIT itself only ships little-endian, so that is the honest default. A format that has to be byte-order-fixed casts and swaps explicitly; this module carries no LE/BE variants until something needs one.

A short read raises, matching Buffer:get. Buffer:skip is the one method that clamps instead of raising, and Reader does not inherit that.

Module contents

Constructors

ConstructorDescription
newReaderWraps data for typed reads.
newWriterWraps buf for typed writes, or starts a fresh buffer when omitted.

Types

TypeKindDescription
ReaderrecordA cursor for typed reads over a buffer's unconsumed data.
WriterrecordA cursor for typed writes, appending to a buffer.

Functions

FunctionKindDescription
Reader:readBytesmethodReads n raw bytes.
Reader:readFloat32methodReads a host-endian 32-bit float.
Reader:readFloat64methodReads a host-endian 64-bit float.
Reader:readInt16methodReads a host-endian signed 16-bit integer.
Reader:readInt32methodReads a host-endian signed 32-bit integer.
Reader:readInt64methodReads a host-endian signed 64-bit integer.
Reader:readInt8methodReads one signed byte.
Reader:readUint16methodReads a host-endian unsigned 16-bit integer.
Reader:readUint32methodReads a host-endian unsigned 32-bit integer.
Reader:readUint64methodReads a host-endian unsigned 64-bit integer.
Reader:readUint8methodReads one unsigned byte.
Reader:remainingmethodHow many unread bytes remain.
Reader:skipmethodDiscards n unread bytes.
Writer:buffermethodThe buffer being written to, for :tostring(), passing to a C call, or handing off to bytes.newReader.
Writer:writeBytesmethodAppends s unchanged.
Writer:writeFloat32methodWrites a host-endian 32-bit float.
Writer:writeFloat64methodWrites a host-endian 64-bit float.
Writer:writeInt16methodWrites a host-endian signed 16-bit integer.
Writer:writeInt32methodWrites a host-endian signed 32-bit integer.
Writer:writeInt64methodWrites a host-endian signed 64-bit integer.
Writer:writeInt8methodWrites one signed byte.
Writer:writeUint16methodWrites a host-endian unsigned 16-bit integer.
Writer:writeUint32methodWrites a host-endian unsigned 32-bit integer.
Writer:writeUint64methodWrites a host-endian unsigned 64-bit integer.
Writer:writeUint8methodWrites one unsigned byte.

Constructors#

bytes.newReaderconstructor#

Wraps data for typed reads.

A string is copied into a fresh buffer. Passing an existing buffer instead lets a caller mix buf:get(...) and reader:readInt32() over the same bytes.

function bytes.newReader(data: string | string.buffer.Buffer): bytes.Reader

Arguments

NameTypeDescription
datastring | string.buffer.Buffer

the bytes to read, or the buffer to read from

Returns

TypeDescription
bytes.Reader

the reader

bytes.newWriterconstructor#

Wraps buf for typed writes, or starts a fresh buffer when omitted.

function bytes.newWriter(buf: string.buffer.Buffer?): bytes.Writer

Arguments

NameTypeDescription
bufstring.buffer.Buffer?

the buffer to append to

Returns

TypeDescription
bytes.Writer

the writer

Types#

Readerrecord#

A cursor for typed reads over a buffer's unconsumed data. Consumes as it reads, the same direction as Buffer:get.

record bytes.Reader
    buf: string.buffer.Buffer
end

Fields

NameTypeDescription
bufstring.buffer.Buffer

Writerrecord#

A cursor for typed writes, appending to a buffer.

record bytes.Writer
    buf: string.buffer.Buffer
end

Fields

NameTypeDescription
bufstring.buffer.Buffer

Functions#

bytes.Reader:readBytesmethod#

Reads n raw bytes. Raises if fewer remain.

function bytes.Reader:readBytes(n: integer): string

Arguments

NameTypeDescription
ninteger

Returns

TypeDescription
string

bytes.Reader:readFloat32method#

Reads a host-endian 32-bit float.

function bytes.Reader:readFloat32(): float

Returns

TypeDescription
float

bytes.Reader:readFloat64method#

Reads a host-endian 64-bit float.

function bytes.Reader:readFloat64(): number

Returns

TypeDescription
number

bytes.Reader:readInt16method#

Reads a host-endian signed 16-bit integer.

function bytes.Reader:readInt16(): int16

Returns

TypeDescription
int16

bytes.Reader:readInt32method#

Reads a host-endian signed 32-bit integer.

function bytes.Reader:readInt32(): int32

Returns

TypeDescription
int32

bytes.Reader:readInt64method#

Reads a host-endian signed 64-bit integer.

function bytes.Reader:readInt64(): int64

Returns

TypeDescription
int64

bytes.Reader:readInt8method#

Reads one signed byte.

function bytes.Reader:readInt8(): int8

Returns

TypeDescription
int8

bytes.Reader:readUint16method#

Reads a host-endian unsigned 16-bit integer.

function bytes.Reader:readUint16(): uint16

Returns

TypeDescription
uint16

bytes.Reader:readUint32method#

Reads a host-endian unsigned 32-bit integer.

function bytes.Reader:readUint32(): uint32

Returns

TypeDescription
uint32

bytes.Reader:readUint64method#

Reads a host-endian unsigned 64-bit integer.

function bytes.Reader:readUint64(): uint64

Returns

TypeDescription
uint64

bytes.Reader:readUint8method#

Reads one unsigned byte.

function bytes.Reader:readUint8(): uint8

Returns

TypeDescription
uint8

bytes.Reader:remainingmethod#

How many unread bytes remain.

function bytes.Reader:remaining(): integer

Returns

TypeDescription
integer

bytes.Reader:skipmethod#

Discards n unread bytes. Raises if fewer remain.

function bytes.Reader:skip(n: integer): bytes.Reader

Arguments

NameTypeDescription
ninteger

Returns

TypeDescription
bytes.Reader

bytes.Writer:buffermethod#

The buffer being written to, for :tostring(), passing to a C call, or handing off to bytes.newReader.

function bytes.Writer:buffer(): string.buffer.Buffer

Returns

TypeDescription
string.buffer.Buffer

bytes.Writer:writeBytesmethod#

Appends s unchanged.

function bytes.Writer:writeBytes(s: string): bytes.Writer

Arguments

NameTypeDescription
sstring

Returns

TypeDescription
bytes.Writer

bytes.Writer:writeFloat32method#

Writes a host-endian 32-bit float.

function bytes.Writer:writeFloat32(v: float): bytes.Writer

Arguments

NameTypeDescription
vfloat

Returns

TypeDescription
bytes.Writer

bytes.Writer:writeFloat64method#

Writes a host-endian 64-bit float.

function bytes.Writer:writeFloat64(v: number): bytes.Writer

Arguments

NameTypeDescription
vnumber

Returns

TypeDescription
bytes.Writer

bytes.Writer:writeInt16method#

Writes a host-endian signed 16-bit integer.

function bytes.Writer:writeInt16(v: int16): bytes.Writer

Arguments

NameTypeDescription
vint16

Returns

TypeDescription
bytes.Writer

bytes.Writer:writeInt32method#

Writes a host-endian signed 32-bit integer.

function bytes.Writer:writeInt32(v: int32): bytes.Writer

Arguments

NameTypeDescription
vint32

Returns

TypeDescription
bytes.Writer

bytes.Writer:writeInt64method#

Writes a host-endian signed 64-bit integer.

function bytes.Writer:writeInt64(v: int64): bytes.Writer

Arguments

NameTypeDescription
vint64

Returns

TypeDescription
bytes.Writer

bytes.Writer:writeInt8method#

Writes one signed byte.

function bytes.Writer:writeInt8(v: int8): bytes.Writer

Arguments

NameTypeDescription
vint8

Returns

TypeDescription
bytes.Writer

bytes.Writer:writeUint16method#

Writes a host-endian unsigned 16-bit integer.

function bytes.Writer:writeUint16(v: uint16): bytes.Writer

Arguments

NameTypeDescription
vuint16

Returns

TypeDescription
bytes.Writer

bytes.Writer:writeUint32method#

Writes a host-endian unsigned 32-bit integer.

function bytes.Writer:writeUint32(v: uint32): bytes.Writer

Arguments

NameTypeDescription
vuint32

Returns

TypeDescription
bytes.Writer

bytes.Writer:writeUint64method#

Writes a host-endian unsigned 64-bit integer.

function bytes.Writer:writeUint64(v: uint64): bytes.Writer

Arguments

NameTypeDescription
vuint64

Returns

TypeDescription
bytes.Writer

bytes.Writer:writeUint8method#

Writes one unsigned byte.

function bytes.Writer:writeUint8(v: uint8): bytes.Writer

Arguments

NameTypeDescription
vuint8

Returns

TypeDescription
bytes.Writer