bisect backend.
diff --git a/rebar.config b/rebar.config
index f410118..b4a0172 100644
--- a/rebar.config
+++ b/rebar.config
@@ -1,6 +1,8 @@
{deps, [
{basho_stats, "",
- {git, "https://github.com/knutin/basho_stats.git", {branch, "master"}}}
+ {git, "https://github.com/knutin/basho_stats.git", {branch, "master"}}},
+ {bisect, "",
+ {git, "https://github.com/knutin/bisect.git", {branch, "master"}}}
%% {erlang_murmurhash, "",
%% {git, "https://github.com/thekvs/erlang-murmurhash.git", {branch, "master"}}},
]}.
diff --git a/src/hyper_array.erl b/src/hyper_array.erl
index 5750b25..66291b7 100644
--- a/src/hyper_array.erl
+++ b/src/hyper_array.erl
@@ -7,9 +7,7 @@
array:new([{size, M}, {fixed, true}, {default, 0}]).
get(Index, A) ->
- case catch array:get(Index, A) of
- {'EXIT', {badarg, _}} ->
- error_logger:info_msg("bad: index: ~p~n ~p~n", [Index, A]);
+ case array:get(Index, A) of
0 ->
undefined;
Value ->
diff --git a/src/hyper_bisect.erl b/src/hyper_bisect.erl
new file mode 100644
index 0000000..532f690
--- /dev/null
+++ b/src/hyper_bisect.erl
@@ -0,0 +1,25 @@
+-module(hyper_bisect).
+-export([new/1, get/2, set/3, fold/3]).
+-behaviour(hyper_register).
+
+new(_P) ->
+ bisect:new(4, 1).
+
+get(Index, B) ->
+ case bisect:find(B, <<Index:32/integer>>) of
+ not_found ->
+ undefined;
+ <<Value:8/integer>> ->
+ {ok, Value}
+ end.
+
+
+set(Index, Value, B) ->
+ bisect:insert(B, <<Index:32/integer>>, <<Value:8/integer>>).
+
+
+fold(F, Acc, B) ->
+ InterfaceF = fun (<<Index:32/integer>>, <<Value:8/integer>>, A) ->
+ F(Index, Value, A)
+ end,
+ bisect:foldl(B, InterfaceF, Acc).