Packages
🐑 a fluffy Gleam web server
Security advisory:
This version has known vulnerabilities.
View advisories
Current section
Files
Jump to
Current section
Files
src/ewe@internal@buffer.erl
-module(ewe@internal@buffer).
-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function, nowarn_nomatch, inline]).
-define(FILEPATH, "src/ewe/internal/buffer.gleam").
-export([new_sized/2, new/1, empty/0, sized/2, append/2, append_size/3, split/2]).
-export_type([buffer/0]).
-if(?OTP_RELEASE >= 27).
-define(MODULEDOC(Str), -moduledoc(Str)).
-define(DOC(Str), -doc(Str)).
-else.
-define(MODULEDOC(Str), -compile([])).
-define(DOC(Str), -compile([])).
-endif.
?MODULEDOC(false).
-type buffer() :: {buffer, bitstring(), integer()}.
-file("src/ewe/internal/buffer.gleam", 8).
?DOC(false).
-spec new_sized(bitstring(), integer()) -> buffer().
new_sized(Initial, Size) ->
{buffer, Initial, Size}.
-file("src/ewe/internal/buffer.gleam", 12).
?DOC(false).
-spec new(bitstring()) -> buffer().
new(Initial) ->
{buffer, Initial, 0}.
-file("src/ewe/internal/buffer.gleam", 16).
?DOC(false).
-spec empty() -> buffer().
empty() ->
{buffer, <<>>, 0}.
-file("src/ewe/internal/buffer.gleam", 20).
?DOC(false).
-spec sized(buffer(), integer()) -> buffer().
sized(Buffer, Size) ->
{buffer, erlang:element(2, Buffer), Size}.
-file("src/ewe/internal/buffer.gleam", 24).
?DOC(false).
-spec append(buffer(), bitstring()) -> buffer().
append(Buffer, Data) ->
Remaining = gleam@int:max(
0,
erlang:element(3, Buffer) - erlang:byte_size(Data)
),
{buffer,
<<(erlang:element(2, Buffer))/bitstring, Data/bitstring>>,
Remaining}.
-file("src/ewe/internal/buffer.gleam", 29).
?DOC(false).
-spec append_size(buffer(), bitstring(), integer()) -> buffer().
append_size(Buffer, Data, Size) ->
Remaining = gleam@int:max(0, erlang:element(3, Buffer) - Size),
{buffer,
<<(erlang:element(2, Buffer))/bitstring, Data/bitstring>>,
Remaining}.
-file("src/ewe/internal/buffer.gleam", 34).
?DOC(false).
-spec split(buffer(), integer()) -> {bitstring(), bitstring()}.
split(Buffer, Bytes) ->
case erlang:element(2, Buffer) of
<<Partition:Bytes/binary, Rest/bitstring>> ->
{Partition, Rest};
_ ->
{erlang:element(2, Buffer), <<>>}
end.