Skip to main content

stream

The stream library allows a stream-like interface abstraction on top of buffers. This is useful for reading or writing buffers without having to keep track of the current offset position.

This library is specifically tailored around fixed-length buffers.

-- Create an empty stream and write some data:
local s = stream.create(4)
stream.writeu8(s, 10)
stream.writeu8(s, 25)
stream.writeu8(s, 2)
stream.writeu8(s, 43)

-- Grab the buffer if needed:
local buf = stream.buffer(s)

-- Create a stream from an existing buffer:
local s = stream.from(buf)
print(stream.readu8()) -- 10
print(stream.readu8()) -- 25
print(stream.readu8()) -- 2
print(stream.readu8()) -- 43

-- Move the cursor:
stream.seek(s, 1)
print(stream.readu8()) -- 25

Functions

create

stream.create(sizenumber) → Stream

Create a stream around a new buffer with the given size in bytes.

This is equivalent to stream.frombuffer(buffer.create(size)).

frombuffer

stream.frombuffer(bufbuffer) → Stream

Create a stream around an existing buffer.

fromstring

stream.fromstring(strstring) → Stream

Create a stream from an existing string.

This is equivalent to stream.frombuffer(buffer.fromstring(size)).

readu8

stream.readu8(sStream) → number

readi8

stream.readi8(sStream) → number

readu16

stream.readu16(sStream) → number

readi16

stream.readi16(sStream) → number

readu32

stream.readu32(sStream) → number

readi32

stream.readi32(sStream) → number

readf32

stream.readf32(sStream) → number

readf64

stream.readf64(sStream) → number

readstring

stream.readstring(
sStream,
countnumber
) → string

readlstring

stream.readlstring(sStream) → string

Reads a string previously written using stream.writelstring. This function assumes that the length of the string is written at the beginning as a u32 int.

readvector

stream.readvector(sStream) → vector

Equivalent to stream.readvectorf32.

readvectorf32

stream.readvectorf32(sStream) → vector

readvectoru32

stream.readvectoru32(sStream) → vector

readvectori32

stream.readvectori32(sStream) → vector

readvectoru16

stream.readvectoru16(sStream) → vector

readvectori16

stream.readvectori16(sStream) → vector

readvectoru8

stream.readvectoru8(sStream) → vector

readvectori8

stream.readvectori8(sStream) → vector

writeu8

stream.writeu8(
sStream,
nnumber
) → ()

writei8

stream.writei8(
sStream,
nnumber
) → ()

writeu16

stream.writeu16(
sStream,
nnumber
) → ()

writei16

stream.writei16(
sStream,
nnumber
) → ()

writeu32

stream.writeu32(
sStream,
nnumber
) → ()

writei32

stream.writei32(
sStream,
nnumber
) → ()

writef32

stream.writef32(
sStream,
nnumber
) → ()

writef64

stream.writef64(
sStream,
nnumber
) → ()

writestring

stream.writestring(
sStream,
strstring,
countnumber?
) → ()

writelstring

stream.writelstring(
sStream,
strstring,
countnumber?
) → ()

writevector

stream.writevector(
sStream,
vvector
) → ()

Equivalent to stream.writevectorf32.

writevectorf32

stream.writevectorf32(
sStream,
vvector
) → ()

writevectoru32

stream.writevectoru32(
sStream,
vvector
) → ()

writevectori32

stream.writevectori32(
sStream,
vvector
) → ()

writevectoru16

stream.writevectoru16(
sStream,
vvector
) → ()

writevectori16

stream.writevectori16(
sStream,
vvector
) → ()

writevectoru8

stream.writevectoru8(
sStream,
vvector
) → ()

writevectori8

stream.writevectori8(
sStream,
vvector
) → ()

len

stream.len(sStream) → number

Returns the length of the backing buffer.

pos

stream.pos(sStream) → number

Returns the position of the stream's cursor.

copy

stream.copy(
targetStream,
sourceStream,
countnumber
) → ()

Copy count bytes from source into target. The provided streams' cursors are incremented by count.

copytobuffer

stream.copytobuffer(
targetbuffer,
targetOffsetnumber,
sourceStream,
countnumber
) → ()

Copy count bytes from the source stream into the target buffer. The source stream cursor is incremented by count.

copyfrombuffer

stream.copyfrombuffer(
targetStream,
sourcebuffer,
sourceOffsetnumber?,
countnumber
) → ()

Copy count bytes from the source buffer (optionally offset by sourceOffset) into the target stream. The target stream cursor is incremented by count.

seek

stream.seek(
sStream,
offsetnumber
) → ()

Moves the cursor relative to the beginning of the stream.

seekend

stream.seekend(
sStream,
offsetnumber
) → ()

Moves the cursor backward relative to the end of the stream.

seekforward

stream.seekforward(
sStream,
offsetnumber
) → ()

Moves the cursor forward relative to the current cursor position.

seekbackward

stream.seekbackward(
sStream,
offsetnumber
) → ()

Moves the cursor backward relative to the current cursor position.

buffer

stream.buffer(sStream) → buffer

Gets the backing buffer for the stream.

tostring

stream.tostring(sStream) → string

Returns the backing buffer as a string.

atend

stream.atend(sStream) → boolean

Returns true if the cursor is at the end of the stream.

Show raw api
{
    "functions": [
        {
            "name": "create",
            "desc": "Create a stream around a new buffer with the given size in bytes.\n\nThis is equivalent to `stream.frombuffer(buffer.create(size))`.",
            "params": [
                {
                    "name": "size",
                    "desc": "",
                    "lua_type": "number"
                }
            ],
            "returns": [
                {
                    "desc": "",
                    "lua_type": "Stream\n"
                }
            ],
            "function_type": "static",
            "source": {
                "line": 51,
                "path": "modules/stream/init.luau"
            }
        },
        {
            "name": "frombuffer",
            "desc": "Create a stream around an existing buffer.",
            "params": [
                {
                    "name": "buf",
                    "desc": "",
                    "lua_type": "buffer"
                }
            ],
            "returns": [
                {
                    "desc": "",
                    "lua_type": "Stream\n"
                }
            ],
            "function_type": "static",
            "source": {
                "line": 60,
                "path": "modules/stream/init.luau"
            }
        },
        {
            "name": "fromstring",
            "desc": "Create a stream from an existing string.\n\nThis is equivalent to `stream.frombuffer(buffer.fromstring(size))`.",
            "params": [
                {
                    "name": "str",
                    "desc": "",
                    "lua_type": "string"
                }
            ],
            "returns": [
                {
                    "desc": "",
                    "lua_type": "Stream\n"
                }
            ],
            "function_type": "static",
            "source": {
                "line": 75,
                "path": "modules/stream/init.luau"
            }
        },
        {
            "name": "readu8",
            "desc": "",
            "params": [
                {
                    "name": "s",
                    "desc": "",
                    "lua_type": "Stream"
                }
            ],
            "returns": [
                {
                    "desc": "",
                    "lua_type": "number\n"
                }
            ],
            "function_type": "static",
            "source": {
                "line": 90,
                "path": "modules/stream/init.luau"
            }
        },
        {
            "name": "readi8",
            "desc": "",
            "params": [
                {
                    "name": "s",
                    "desc": "",
                    "lua_type": "Stream"
                }
            ],
            "returns": [
                {
                    "desc": "",
                    "lua_type": "number\n"
                }
            ],
            "function_type": "static",
            "source": {
                "line": 99,
                "path": "modules/stream/init.luau"
            }
        },
        {
            "name": "readu16",
            "desc": "",
            "params": [
                {
                    "name": "s",
                    "desc": "",
                    "lua_type": "Stream"
                }
            ],
            "returns": [
                {
                    "desc": "",
                    "lua_type": "number\n"
                }
            ],
            "function_type": "static",
            "source": {
                "line": 108,
                "path": "modules/stream/init.luau"
            }
        },
        {
            "name": "readi16",
            "desc": "",
            "params": [
                {
                    "name": "s",
                    "desc": "",
                    "lua_type": "Stream"
                }
            ],
            "returns": [
                {
                    "desc": "",
                    "lua_type": "number\n"
                }
            ],
            "function_type": "static",
            "source": {
                "line": 117,
                "path": "modules/stream/init.luau"
            }
        },
        {
            "name": "readu32",
            "desc": "",
            "params": [
                {
                    "name": "s",
                    "desc": "",
                    "lua_type": "Stream"
                }
            ],
            "returns": [
                {
                    "desc": "",
                    "lua_type": "number\n"
                }
            ],
            "function_type": "static",
            "source": {
                "line": 126,
                "path": "modules/stream/init.luau"
            }
        },
        {
            "name": "readi32",
            "desc": "",
            "params": [
                {
                    "name": "s",
                    "desc": "",
                    "lua_type": "Stream"
                }
            ],
            "returns": [
                {
                    "desc": "",
                    "lua_type": "number\n"
                }
            ],
            "function_type": "static",
            "source": {
                "line": 135,
                "path": "modules/stream/init.luau"
            }
        },
        {
            "name": "readf32",
            "desc": "",
            "params": [
                {
                    "name": "s",
                    "desc": "",
                    "lua_type": "Stream"
                }
            ],
            "returns": [
                {
                    "desc": "",
                    "lua_type": "number\n"
                }
            ],
            "function_type": "static",
            "source": {
                "line": 144,
                "path": "modules/stream/init.luau"
            }
        },
        {
            "name": "readf64",
            "desc": "",
            "params": [
                {
                    "name": "s",
                    "desc": "",
                    "lua_type": "Stream"
                }
            ],
            "returns": [
                {
                    "desc": "",
                    "lua_type": "number\n"
                }
            ],
            "function_type": "static",
            "source": {
                "line": 153,
                "path": "modules/stream/init.luau"
            }
        },
        {
            "name": "readstring",
            "desc": "",
            "params": [
                {
                    "name": "s",
                    "desc": "",
                    "lua_type": "Stream"
                },
                {
                    "name": "count",
                    "desc": "",
                    "lua_type": "number"
                }
            ],
            "returns": [
                {
                    "desc": "",
                    "lua_type": "string\n"
                }
            ],
            "function_type": "static",
            "source": {
                "line": 162,
                "path": "modules/stream/init.luau"
            }
        },
        {
            "name": "readlstring",
            "desc": "Reads a string previously written using `stream.writelstring`. This function\nassumes that the length of the string is written at the beginning as a u32 int.",
            "params": [
                {
                    "name": "s",
                    "desc": "",
                    "lua_type": "Stream"
                }
            ],
            "returns": [
                {
                    "desc": "",
                    "lua_type": "string\n"
                }
            ],
            "function_type": "static",
            "source": {
                "line": 174,
                "path": "modules/stream/init.luau"
            }
        },
        {
            "name": "readvector",
            "desc": "Equivalent to `stream.readvectorf32`.",
            "params": [
                {
                    "name": "s",
                    "desc": "",
                    "lua_type": "Stream"
                }
            ],
            "returns": [
                {
                    "desc": "",
                    "lua_type": "vector\n"
                }
            ],
            "function_type": "static",
            "source": {
                "line": 184,
                "path": "modules/stream/init.luau"
            }
        },
        {
            "name": "readvectorf32",
            "desc": "",
            "params": [
                {
                    "name": "s",
                    "desc": "",
                    "lua_type": "Stream"
                }
            ],
            "returns": [
                {
                    "desc": "",
                    "lua_type": "vector\n"
                }
            ],
            "function_type": "static",
            "source": {
                "line": 197,
                "path": "modules/stream/init.luau"
            }
        },
        {
            "name": "readvectoru32",
            "desc": "",
            "params": [
                {
                    "name": "s",
                    "desc": "",
                    "lua_type": "Stream"
                }
            ],
            "returns": [
                {
                    "desc": "",
                    "lua_type": "vector\n"
                }
            ],
            "function_type": "static",
            "source": {
                "line": 210,
                "path": "modules/stream/init.luau"
            }
        },
        {
            "name": "readvectori32",
            "desc": "",
            "params": [
                {
                    "name": "s",
                    "desc": "",
                    "lua_type": "Stream"
                }
            ],
            "returns": [
                {
                    "desc": "",
                    "lua_type": "vector\n"
                }
            ],
            "function_type": "static",
            "source": {
                "line": 223,
                "path": "modules/stream/init.luau"
            }
        },
        {
            "name": "readvectoru16",
            "desc": "",
            "params": [
                {
                    "name": "s",
                    "desc": "",
                    "lua_type": "Stream"
                }
            ],
            "returns": [
                {
                    "desc": "",
                    "lua_type": "vector\n"
                }
            ],
            "function_type": "static",
            "source": {
                "line": 236,
                "path": "modules/stream/init.luau"
            }
        },
        {
            "name": "readvectori16",
            "desc": "",
            "params": [
                {
                    "name": "s",
                    "desc": "",
                    "lua_type": "Stream"
                }
            ],
            "returns": [
                {
                    "desc": "",
                    "lua_type": "vector\n"
                }
            ],
            "function_type": "static",
            "source": {
                "line": 249,
                "path": "modules/stream/init.luau"
            }
        },
        {
            "name": "readvectoru8",
            "desc": "",
            "params": [
                {
                    "name": "s",
                    "desc": "",
                    "lua_type": "Stream"
                }
            ],
            "returns": [
                {
                    "desc": "",
                    "lua_type": "vector\n"
                }
            ],
            "function_type": "static",
            "source": {
                "line": 262,
                "path": "modules/stream/init.luau"
            }
        },
        {
            "name": "readvectori8",
            "desc": "",
            "params": [
                {
                    "name": "s",
                    "desc": "",
                    "lua_type": "Stream"
                }
            ],
            "returns": [
                {
                    "desc": "",
                    "lua_type": "vector\n"
                }
            ],
            "function_type": "static",
            "source": {
                "line": 275,
                "path": "modules/stream/init.luau"
            }
        },
        {
            "name": "writeu8",
            "desc": "",
            "params": [
                {
                    "name": "s",
                    "desc": "",
                    "lua_type": "Stream"
                },
                {
                    "name": "n",
                    "desc": "",
                    "lua_type": "number"
                }
            ],
            "returns": [],
            "function_type": "static",
            "source": {
                "line": 291,
                "path": "modules/stream/init.luau"
            }
        },
        {
            "name": "writei8",
            "desc": "",
            "params": [
                {
                    "name": "s",
                    "desc": "",
                    "lua_type": "Stream"
                },
                {
                    "name": "n",
                    "desc": "",
                    "lua_type": "number"
                }
            ],
            "returns": [],
            "function_type": "static",
            "source": {
                "line": 299,
                "path": "modules/stream/init.luau"
            }
        },
        {
            "name": "writeu16",
            "desc": "",
            "params": [
                {
                    "name": "s",
                    "desc": "",
                    "lua_type": "Stream"
                },
                {
                    "name": "n",
                    "desc": "",
                    "lua_type": "number"
                }
            ],
            "returns": [],
            "function_type": "static",
            "source": {
                "line": 307,
                "path": "modules/stream/init.luau"
            }
        },
        {
            "name": "writei16",
            "desc": "",
            "params": [
                {
                    "name": "s",
                    "desc": "",
                    "lua_type": "Stream"
                },
                {
                    "name": "n",
                    "desc": "",
                    "lua_type": "number"
                }
            ],
            "returns": [],
            "function_type": "static",
            "source": {
                "line": 315,
                "path": "modules/stream/init.luau"
            }
        },
        {
            "name": "writeu32",
            "desc": "",
            "params": [
                {
                    "name": "s",
                    "desc": "",
                    "lua_type": "Stream"
                },
                {
                    "name": "n",
                    "desc": "",
                    "lua_type": "number"
                }
            ],
            "returns": [],
            "function_type": "static",
            "source": {
                "line": 323,
                "path": "modules/stream/init.luau"
            }
        },
        {
            "name": "writei32",
            "desc": "",
            "params": [
                {
                    "name": "s",
                    "desc": "",
                    "lua_type": "Stream"
                },
                {
                    "name": "n",
                    "desc": "",
                    "lua_type": "number"
                }
            ],
            "returns": [],
            "function_type": "static",
            "source": {
                "line": 331,
                "path": "modules/stream/init.luau"
            }
        },
        {
            "name": "writef32",
            "desc": "",
            "params": [
                {
                    "name": "s",
                    "desc": "",
                    "lua_type": "Stream"
                },
                {
                    "name": "n",
                    "desc": "",
                    "lua_type": "number"
                }
            ],
            "returns": [],
            "function_type": "static",
            "source": {
                "line": 339,
                "path": "modules/stream/init.luau"
            }
        },
        {
            "name": "writef64",
            "desc": "",
            "params": [
                {
                    "name": "s",
                    "desc": "",
                    "lua_type": "Stream"
                },
                {
                    "name": "n",
                    "desc": "",
                    "lua_type": "number"
                }
            ],
            "returns": [],
            "function_type": "static",
            "source": {
                "line": 347,
                "path": "modules/stream/init.luau"
            }
        },
        {
            "name": "writestring",
            "desc": "",
            "params": [
                {
                    "name": "s",
                    "desc": "",
                    "lua_type": "Stream"
                },
                {
                    "name": "str",
                    "desc": "",
                    "lua_type": "string"
                },
                {
                    "name": "count",
                    "desc": "",
                    "lua_type": "number?"
                }
            ],
            "returns": [],
            "function_type": "static",
            "source": {
                "line": 355,
                "path": "modules/stream/init.luau"
            }
        },
        {
            "name": "writelstring",
            "desc": "",
            "params": [
                {
                    "name": "s",
                    "desc": "",
                    "lua_type": "Stream"
                },
                {
                    "name": "str",
                    "desc": "",
                    "lua_type": "string"
                },
                {
                    "name": "count",
                    "desc": "",
                    "lua_type": "number?"
                }
            ],
            "returns": [],
            "function_type": "static",
            "source": {
                "line": 363,
                "path": "modules/stream/init.luau"
            }
        },
        {
            "name": "writevector",
            "desc": "Equivalent to `stream.writevectorf32`.",
            "params": [
                {
                    "name": "s",
                    "desc": "",
                    "lua_type": "Stream"
                },
                {
                    "name": "v",
                    "desc": "",
                    "lua_type": "vector"
                }
            ],
            "returns": [],
            "function_type": "static",
            "source": {
                "line": 373,
                "path": "modules/stream/init.luau"
            }
        },
        {
            "name": "writevectorf32",
            "desc": "",
            "params": [
                {
                    "name": "s",
                    "desc": "",
                    "lua_type": "Stream"
                },
                {
                    "name": "v",
                    "desc": "",
                    "lua_type": "vector"
                }
            ],
            "returns": [],
            "function_type": "static",
            "source": {
                "line": 385,
                "path": "modules/stream/init.luau"
            }
        },
        {
            "name": "writevectoru32",
            "desc": "",
            "params": [
                {
                    "name": "s",
                    "desc": "",
                    "lua_type": "Stream"
                },
                {
                    "name": "v",
                    "desc": "",
                    "lua_type": "vector"
                }
            ],
            "returns": [],
            "function_type": "static",
            "source": {
                "line": 397,
                "path": "modules/stream/init.luau"
            }
        },
        {
            "name": "writevectori32",
            "desc": "",
            "params": [
                {
                    "name": "s",
                    "desc": "",
                    "lua_type": "Stream"
                },
                {
                    "name": "v",
                    "desc": "",
                    "lua_type": "vector"
                }
            ],
            "returns": [],
            "function_type": "static",
            "source": {
                "line": 409,
                "path": "modules/stream/init.luau"
            }
        },
        {
            "name": "writevectoru16",
            "desc": "",
            "params": [
                {
                    "name": "s",
                    "desc": "",
                    "lua_type": "Stream"
                },
                {
                    "name": "v",
                    "desc": "",
                    "lua_type": "vector"
                }
            ],
            "returns": [],
            "function_type": "static",
            "source": {
                "line": 421,
                "path": "modules/stream/init.luau"
            }
        },
        {
            "name": "writevectori16",
            "desc": "",
            "params": [
                {
                    "name": "s",
                    "desc": "",
                    "lua_type": "Stream"
                },
                {
                    "name": "v",
                    "desc": "",
                    "lua_type": "vector"
                }
            ],
            "returns": [],
            "function_type": "static",
            "source": {
                "line": 433,
                "path": "modules/stream/init.luau"
            }
        },
        {
            "name": "writevectoru8",
            "desc": "",
            "params": [
                {
                    "name": "s",
                    "desc": "",
                    "lua_type": "Stream"
                },
                {
                    "name": "v",
                    "desc": "",
                    "lua_type": "vector"
                }
            ],
            "returns": [],
            "function_type": "static",
            "source": {
                "line": 445,
                "path": "modules/stream/init.luau"
            }
        },
        {
            "name": "writevectori8",
            "desc": "",
            "params": [
                {
                    "name": "s",
                    "desc": "",
                    "lua_type": "Stream"
                },
                {
                    "name": "v",
                    "desc": "",
                    "lua_type": "vector"
                }
            ],
            "returns": [],
            "function_type": "static",
            "source": {
                "line": 457,
                "path": "modules/stream/init.luau"
            }
        },
        {
            "name": "len",
            "desc": "Returns the length of the backing buffer.",
            "params": [
                {
                    "name": "s",
                    "desc": "",
                    "lua_type": "Stream"
                }
            ],
            "returns": [
                {
                    "desc": "",
                    "lua_type": "number\n"
                }
            ],
            "function_type": "static",
            "source": {
                "line": 473,
                "path": "modules/stream/init.luau"
            }
        },
        {
            "name": "pos",
            "desc": "Returns the position of the stream's cursor.",
            "params": [
                {
                    "name": "s",
                    "desc": "",
                    "lua_type": "Stream"
                }
            ],
            "returns": [
                {
                    "desc": "",
                    "lua_type": "number\n"
                }
            ],
            "function_type": "static",
            "source": {
                "line": 482,
                "path": "modules/stream/init.luau"
            }
        },
        {
            "name": "copy",
            "desc": "Copy `count` bytes from `source` into `target`. The provided streams' cursors are\nincremented by `count`.",
            "params": [
                {
                    "name": "target",
                    "desc": "",
                    "lua_type": "Stream"
                },
                {
                    "name": "source",
                    "desc": "",
                    "lua_type": "Stream"
                },
                {
                    "name": "count",
                    "desc": "",
                    "lua_type": "number"
                }
            ],
            "returns": [],
            "function_type": "static",
            "source": {
                "line": 492,
                "path": "modules/stream/init.luau"
            }
        },
        {
            "name": "copytobuffer",
            "desc": "Copy `count` bytes from the `source` stream into the `target` buffer. The `source` stream\ncursor is incremented by `count`.",
            "params": [
                {
                    "name": "target",
                    "desc": "",
                    "lua_type": "buffer"
                },
                {
                    "name": "targetOffset",
                    "desc": "",
                    "lua_type": "number"
                },
                {
                    "name": "source",
                    "desc": "",
                    "lua_type": "Stream"
                },
                {
                    "name": "count",
                    "desc": "",
                    "lua_type": "number"
                }
            ],
            "returns": [],
            "function_type": "static",
            "source": {
                "line": 504,
                "path": "modules/stream/init.luau"
            }
        },
        {
            "name": "copyfrombuffer",
            "desc": "Copy `count` bytes from the `source` buffer (optionally offset by `sourceOffset`) into the\n`target` stream. The `target` stream cursor is incremented by `count`.",
            "params": [
                {
                    "name": "target",
                    "desc": "",
                    "lua_type": "Stream"
                },
                {
                    "name": "source",
                    "desc": "",
                    "lua_type": "buffer"
                },
                {
                    "name": "sourceOffset",
                    "desc": "",
                    "lua_type": "number?"
                },
                {
                    "name": "count",
                    "desc": "",
                    "lua_type": "number"
                }
            ],
            "returns": [],
            "function_type": "static",
            "source": {
                "line": 515,
                "path": "modules/stream/init.luau"
            }
        },
        {
            "name": "seek",
            "desc": "Moves the cursor relative to the beginning of the stream.",
            "params": [
                {
                    "name": "s",
                    "desc": "",
                    "lua_type": "Stream"
                },
                {
                    "name": "offset",
                    "desc": "",
                    "lua_type": "number"
                }
            ],
            "returns": [],
            "function_type": "static",
            "source": {
                "line": 525,
                "path": "modules/stream/init.luau"
            }
        },
        {
            "name": "seekend",
            "desc": "Moves the cursor backward relative to the end of the stream.",
            "params": [
                {
                    "name": "s",
                    "desc": "",
                    "lua_type": "Stream"
                },
                {
                    "name": "offset",
                    "desc": "",
                    "lua_type": "number"
                }
            ],
            "returns": [],
            "function_type": "static",
            "source": {
                "line": 537,
                "path": "modules/stream/init.luau"
            }
        },
        {
            "name": "seekforward",
            "desc": "Moves the cursor forward relative to the current cursor position.",
            "params": [
                {
                    "name": "s",
                    "desc": "",
                    "lua_type": "Stream"
                },
                {
                    "name": "offset",
                    "desc": "",
                    "lua_type": "number"
                }
            ],
            "returns": [],
            "function_type": "static",
            "source": {
                "line": 549,
                "path": "modules/stream/init.luau"
            }
        },
        {
            "name": "seekbackward",
            "desc": "Moves the cursor backward relative to the current cursor position.",
            "params": [
                {
                    "name": "s",
                    "desc": "",
                    "lua_type": "Stream"
                },
                {
                    "name": "offset",
                    "desc": "",
                    "lua_type": "number"
                }
            ],
            "returns": [],
            "function_type": "static",
            "source": {
                "line": 561,
                "path": "modules/stream/init.luau"
            }
        },
        {
            "name": "buffer",
            "desc": "Gets the backing buffer for the stream.",
            "params": [
                {
                    "name": "s",
                    "desc": "",
                    "lua_type": "Stream"
                }
            ],
            "returns": [
                {
                    "desc": "",
                    "lua_type": "buffer\n"
                }
            ],
            "function_type": "static",
            "source": {
                "line": 573,
                "path": "modules/stream/init.luau"
            }
        },
        {
            "name": "tostring",
            "desc": "Returns the backing buffer as a string.",
            "params": [
                {
                    "name": "s",
                    "desc": "",
                    "lua_type": "Stream"
                }
            ],
            "returns": [
                {
                    "desc": "",
                    "lua_type": "string\n"
                }
            ],
            "function_type": "static",
            "source": {
                "line": 582,
                "path": "modules/stream/init.luau"
            }
        },
        {
            "name": "atend",
            "desc": "Returns `true` if the cursor is at the end of the stream.",
            "params": [
                {
                    "name": "s",
                    "desc": "",
                    "lua_type": "Stream"
                }
            ],
            "returns": [
                {
                    "desc": "",
                    "lua_type": "boolean\n"
                }
            ],
            "function_type": "static",
            "source": {
                "line": 591,
                "path": "modules/stream/init.luau"
            }
        }
    ],
    "properties": [],
    "types": [],
    "name": "stream",
    "desc": "The `stream` library allows a stream-like interface abstraction on top of buffers. This is useful\nfor reading or writing buffers without having to keep track of the current offset position.\n\nThis library is specifically tailored around fixed-length buffers.\n\n```lua\n-- Create an empty stream and write some data:\nlocal s = stream.create(4)\nstream.writeu8(s, 10)\nstream.writeu8(s, 25)\nstream.writeu8(s, 2)\nstream.writeu8(s, 43)\n\n-- Grab the buffer if needed:\nlocal buf = stream.buffer(s)\n\n-- Create a stream from an existing buffer:\nlocal s = stream.from(buf)\nprint(stream.readu8()) -- 10\nprint(stream.readu8()) -- 25\nprint(stream.readu8()) -- 2\nprint(stream.readu8()) -- 43\n\n-- Move the cursor:\nstream.seek(s, 1)\nprint(stream.readu8()) -- 25\n```",
    "source": {
        "line": 35,
        "path": "modules/stream/init.luau"
    }
}