Current section

Files

Jump to
ewe src ewe@internal@buffer.erl
Raw

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/1, new_sized/2, 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", 12).
?DOC(false).
-spec new(bitstring()) -> buffer().
new(Initial) ->
{buffer, Initial, 0}.
-file("src/ewe/internal/buffer.gleam", 19).
?DOC(false).
-spec new_sized(bitstring(), integer()) -> buffer().
new_sized(Initial, Size) ->
{buffer, Initial, Size}.
-file("src/ewe/internal/buffer.gleam", 25).
?DOC(false).
-spec empty() -> buffer().
empty() ->
{buffer, <<>>, 0}.
-file("src/ewe/internal/buffer.gleam", 31).
?DOC(false).
-spec sized(buffer(), integer()) -> buffer().
sized(Buffer, Size) ->
{buffer, erlang:element(2, Buffer), Size}.
-file("src/ewe/internal/buffer.gleam", 37).
?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", 44).
?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", 52).
?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.