aboutsummaryrefslogtreecommitdiff
path: root/src/jlib.erl
diff options
context:
space:
mode:
Diffstat (limited to 'src/jlib.erl')
-rw-r--r--src/jlib.erl34
1 files changed, 32 insertions, 2 deletions
diff --git a/src/jlib.erl b/src/jlib.erl
index 096ef4012..939baae84 100644
--- a/src/jlib.erl
+++ b/src/jlib.erl
@@ -38,8 +38,8 @@
-export([tolower/1, term_to_base64/1, base64_to_term/1,
decode_base64/1, encode_base64/1, ip_to_list/1,
atom_to_binary/1, binary_to_atom/1, tuple_to_binary/1,
- l2i/1, i2l/1, i2l/2, queue_drop_while/2,
- expr_to_term/1, term_to_expr/1]).
+ l2i/1, i2l/1, i2l/2, expr_to_term/1, term_to_expr/1,
+ queue_drop_while/2, queue_foldl/3, queue_foldr/3, queue_foreach/2]).
%% The following functions are used by gen_iq_handler.erl for providing backward
%% compatibility and must not be used in other parts of the code
@@ -974,3 +974,33 @@ queue_drop_while(F, Q) ->
empty ->
Q
end.
+
+-spec queue_foldl(fun((term(), T) -> T), T, ?TQUEUE) -> T.
+queue_foldl(F, Acc, Q) ->
+ case queue:out(Q) of
+ {{value, Item}, Q1} ->
+ Acc1 = F(Item, Acc),
+ queue_foldl(F, Acc1, Q1);
+ {empty, _} ->
+ Acc
+ end.
+
+-spec queue_foldr(fun((term(), T) -> T), T, ?TQUEUE) -> T.
+queue_foldr(F, Acc, Q) ->
+ case queue:out_r(Q) of
+ {{value, Item}, Q1} ->
+ Acc1 = F(Item, Acc),
+ queue_foldr(F, Acc1, Q1);
+ {empty, _} ->
+ Acc
+ end.
+
+-spec queue_foreach(fun((_) -> _), ?TQUEUE) -> ok.
+queue_foreach(F, Q) ->
+ case queue:out(Q) of
+ {{value, Item}, Q1} ->
+ F(Item),
+ queue_foreach(F, Q1);
+ {empty, _} ->
+ ok
+ end.