summaryrefslogtreecommitdiff |
diff options
author | nsensfel <SpamShield0@noot-noot.org> | 2018-06-07 12:47:34 +0200 |
---|---|---|
committer | nsensfel <SpamShield0@noot-noot.org> | 2018-06-07 12:47:34 +0200 |
commit | 9b55ecea81edbc12196a5818077fd38421f8f1a8 (patch) | |
tree | c6d590615695cacbb5a2a3f21fe20639292d134e /src/shared/util | |
parent | d99f1e8b0efedf1286ab15c656a0ea874823865f (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.erl | 105 |
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)). |