summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authornsensfel <SpamShield0@noot-noot.org>2018-06-07 12:47:34 +0200
committernsensfel <SpamShield0@noot-noot.org>2018-06-07 12:47:34 +0200
commit9b55ecea81edbc12196a5818077fd38421f8f1a8 (patch)
treec6d590615695cacbb5a2a3f21fe20639292d134e /src/shared/util
parentd99f1e8b0efedf1286ab15c656a0ea874823865f (diff)
Now it seems to work perfectly.
Getting both nodes to start made some unexpected issues about the hostnames appear, despite both using either "-name" or "-sname".
Diffstat (limited to 'src/shared/util')
-rw-r--r--src/shared/util/sh_array_util.erl105
1 files changed, 105 insertions, 0 deletions
diff --git a/src/shared/util/sh_array_util.erl b/src/shared/util/sh_array_util.erl
new file mode 100644
index 0000000..5f58b36
--- /dev/null
+++ b/src/shared/util/sh_array_util.erl
@@ -0,0 +1,105 @@
+-module(sh_array_util).
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% TYPES %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% EXPORTS %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+-export
+(
+ [
+ any/2,
+ none/2,
+ all/2,
+
+ mapiff/3
+ ]
+).
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% LOCAL FUNCTIONS %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+-spec any_internals
+ (
+ fun((any()) -> boolean()),
+ array:array(any()),
+ non_neg_integer()
+ )
+ -> boolean().
+any_internals (_, _, 0) ->
+ false;
+any_internals (Fun, Array, PrevIX) ->
+ IX = (PrevIX - 1),
+ case Fun(array:get(IX, Array)) of
+ true -> true;
+ _ -> any_internals(Fun, Array, IX)
+ end.
+
+-spec all_internals
+ (
+ fun((any()) -> boolean()),
+ array:array(any()),
+ non_neg_integer()
+ )
+ -> boolean().
+all_internals (_, _, 0) ->
+ true;
+all_internals (Fun, Array, PrevIX) ->
+ IX = (PrevIX - 1),
+ case Fun(array:get(IX, Array)) of
+ true -> any_internals(Fun, Array, IX);
+ _ -> false
+ end.
+
+-spec mapiff_internals
+ (
+ fun((any()) -> boolean()),
+ fun((any()) -> any()),
+ array:array(any()),
+ list(non_neg_integer()),
+ non_neg_integer()
+ )
+ -> {array:array(any()), list(non_neg_integer())}.
+mapiff_internals (_, _, Array, IXList, 0) ->
+ {Array, IXList};
+mapiff_internals (Cond, Map, Array, IXList, PrevIX) ->
+ IX = (PrevIX - 1),
+ Elem = array:get(IX, Array),
+
+ case Cond(Elem) of
+ false -> mapiff_internals(Cond, Map, Array, IXList, IX);
+ _ ->
+ mapiff_internals
+ (
+ Cond,
+ Map,
+ array:set(IX, Map(Elem), Array),
+ [IX|IXList],
+ IX
+ )
+ end.
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% EXPORTED FUNCTIONS %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+-spec any (fun((any()) -> boolean()), array:array(any())) -> boolean().
+any (Fun, Array) ->
+ any_internals(Fun, Array, array:size(Array)).
+
+-spec all (fun((any()) -> boolean()), array:array(any())) -> boolean().
+all (Fun, Array) ->
+ all_internals(Fun, Array, array:size(Array)).
+
+-spec none (fun((any()) -> boolean()), array:array(any())) -> boolean().
+none (Fun, Array) ->
+ not any(Fun, Array).
+
+-spec mapiff
+ (
+ fun((any()) -> boolean()),
+ fun((any()) -> any()),
+ array:array(any())
+ )
+ -> {array:array(any()), list(non_neg_integer())}.
+mapiff (Cond, Map, Array) ->
+ mapiff_internals(Cond, Map, Array, [], array:size(Array)).