-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, Rest}; _ -> {erlang:element(2, Buffer), <<>>} end.