| 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)). | 


