summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/ts.erl32
1 files changed, 18 insertions, 14 deletions
diff --git a/src/ts.erl b/src/ts.erl
index 07edbf6..c69519c 100644
--- a/src/ts.erl
+++ b/src/ts.erl
@@ -9,7 +9,9 @@
-export_type([tree_store/0]).
-export([new/0, add/3, delete/2, retrieve/2, count/2]).
--record(tree_store, {layers :: array:array(array:array(binary()))}). % array of arrays, keyed on layer.
+%% #tree_store{} has one member, layers, holding an array of arrays
+%% with binaries, keyed on layer.
+-record(tree_store, {layers :: array:array(array:array(binary()))}).
-type tree_store() :: #tree_store{}.
%%%%%%%%%%%%%%%%%%%%
@@ -19,22 +21,22 @@ new() ->
-spec add(tree_store(), non_neg_integer(), binary()) -> tree_store().
add(S = #tree_store{layers = Layers}, Layer, Entry) ->
- {NewLayers, List} = layer_rw(Layers, Layer),
- NewList = array:set(array:size(List), Entry, List),
- S#tree_store{layers = array:set(Layer, NewList, NewLayers)}.
+ {NewLayers, Array} = layer_rw(Layers, Layer),
+ NewArray = array:set(array:size(Array), Entry, Array),
+ S#tree_store{layers = array:set(Layer, NewArray, NewLayers)}.
-spec delete(tree_store(), non_neg_integer()) -> tree_store().
delete(S = #tree_store{layers = Layers}, Layer) ->
- List = layer_ro(Layers, Layer),
- NewList = array:resize(array:size(List) - 1, List),
- S#tree_store{layers = array:set(Layer, NewList, Layers)}.
+ Array = layer_ro(Layers, Layer),
+ NewArray = array:resize(array:size(Array) - 1, Array),
+ S#tree_store{layers = array:set(Layer, NewArray, Layers)}.
-spec retrieve(tree_store(), tuple()) -> binary() | undefined.
retrieve(#tree_store{layers = Layers}, {Layer, Index}) ->
- List = layer_ro(Layers, Layer),
- Len = array:size(List),
+ Array = layer_ro(Layers, Layer),
+ Len = array:size(Array),
case Index < Len of
- true -> array:get(Index, List);
+ true -> array:get(Index, Array);
false -> undefined
end.
@@ -44,18 +46,20 @@ count(#tree_store{layers = Layers}, Layer) ->
%%%%%%%%%%%%%%%%%%%%
%% Private.
--spec layer_ro(array:array(array:array(binary())), non_neg_integer()) -> array:array(binary).
+-spec layer_ro(array:array(array:array(binary())), non_neg_integer()) ->
+ array:array(binary).
layer_ro(Layers, Layer) ->
case array:get(Layer, Layers) of
undefined -> array:new();
- List -> List
+ Array -> Array
end.
--spec layer_rw(array:array(array:array(binary())), non_neg_integer()) -> {array:array(), array:array(binary)}.
+-spec layer_rw(array:array(array:array(binary())), non_neg_integer()) ->
+ {array:array(), array:array(binary)}.
layer_rw(Layers, Layer) ->
case array:get(Layer, Layers) of
undefined -> {array:set(Layer, array:new(), Layers), array:new()};
- List -> {Layers, List}
+ Array -> {Layers, Array}
end.
%%%%%%%%%%%%%%%%%%%%