| summaryrefslogtreecommitdiff | 
diff options
Diffstat (limited to 'src/shared/util/sh_array_util.erl')
| -rw-r--r-- | src/shared/util/sh_array_util.erl | 47 | 
1 files changed, 47 insertions, 0 deletions
| diff --git a/src/shared/util/sh_array_util.erl b/src/shared/util/sh_array_util.erl index 5f58b36..6d976bc 100644 --- a/src/shared/util/sh_array_util.erl +++ b/src/shared/util/sh_array_util.erl @@ -10,9 +10,12 @@  (     [        any/2, +      any_indexed/2,        none/2,        all/2, +      first/2, +        mapiff/3     ]  ). @@ -35,6 +38,38 @@ any_internals (Fun, Array, PrevIX) ->        _ -> any_internals(Fun, Array, IX)     end. +-spec first_internals +   ( +      fun((any()) -> boolean()), +      array:array(any()), +      non_neg_integer() +   ) +   -> integer(). +first_internals (_, _, 0) -> +   -1; +first_internals (Fun, Array, PrevIX) -> +   IX = (PrevIX - 1), +   case Fun(array:get(IX, Array)) of +      true -> IX; +      _ -> first_internals(Fun, Array, IX) +   end. + +-spec any_indexed_internals +   ( +      fun((non_neg_integer(), any()) -> boolean()), +      array:array(any()), +      non_neg_integer() +   ) +   -> boolean(). +any_indexed_internals (_, _, 0) -> +   false; +any_indexed_internals (Fun, Array, PrevIX) -> +   IX = (PrevIX - 1), +   case Fun(IX, array:get(IX, Array)) of +      true -> true; +      _ -> any_indexed_internals(Fun, Array, IX) +   end. +  -spec all_internals     (        fun((any()) -> boolean()), @@ -86,6 +121,18 @@ mapiff_internals (Cond, Map, Array, IXList, PrevIX) ->  any (Fun, Array) ->     any_internals(Fun, Array, array:size(Array)). +-spec first (fun((any()) -> boolean()), array:array(any())) -> integer(). +first (Fun, Array) -> +   first_internals(Fun, Array, array:size(Array)). + +-spec any_indexed +   ( +      fun((non_neg_integer(), any()) -> boolean()), +      array:array(any()) +   ) -> boolean(). +any_indexed (Fun, Array) -> +   any_indexed_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)). | 


