Current section
Files
Jump to
Current section
Files
src/pgl@internal@store.erl
-module(pgl@internal@store).
-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function, nowarn_nomatch, inline]).
-define(FILEPATH, "src/pgl/internal/store.gleam").
-export([new/1, insert/3, lookup/2, drop/1, delete/2]).
-export_type([store/2]).
-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).
-opaque store(LVD, LVE) :: {store, gleam@erlang@atom:atom_()} |
{gleam_phantom, LVD, LVE}.
-file("src/pgl/internal/store.gleam", 8).
?DOC(false).
-spec new(binary()) -> store(any(), any()).
new(Name) ->
Table_name = <<Name/binary,
(erlang:integer_to_binary(pgl_ffi:unique_int()))/binary>>,
Name@1 = begin
_pipe = erlang:binary_to_atom(Table_name),
pgl_ffi:ets_new(_pipe)
end,
{store, Name@1}.
-file("src/pgl/internal/store.gleam", 15).
?DOC(false).
-spec insert(store(LVJ, LVK), LVJ, LVK) -> {ok, nil} | {error, nil}.
insert(Store, Key, Value) ->
pgl_ffi:ets_insert(erlang:element(2, Store), Key, Value).
-file("src/pgl/internal/store.gleam", 19).
?DOC(false).
-spec lookup(store(LVP, LVQ), LVP) -> {ok, LVQ} | {error, nil}.
lookup(Store, Key) ->
pgl_ffi:ets_lookup(erlang:element(2, Store), Key).
-file("src/pgl/internal/store.gleam", 27).
?DOC(false).
-spec drop(store(any(), any())) -> {ok, nil} | {error, nil}.
drop(Store) ->
pgl_ffi:ets_delete(erlang:element(2, Store)).
-file("src/pgl/internal/store.gleam", 23).
?DOC(false).
-spec delete(store(LVV, any()), LVV) -> {ok, nil} | {error, nil}.
delete(Store, Key) ->
pgl_ffi:ets_delete(erlang:element(2, Store), Key).