summaryrefslogtreecommitdiff
path: root/src/lqueue.erl
diff options
context:
space:
mode:
authorMatthew Sackman <matthew@rabbitmq.com>2011-10-02 15:13:35 +0100
committerMatthew Sackman <matthew@rabbitmq.com>2011-10-02 15:13:35 +0100
commit09226b228402443f2542f3e8d920f1f81cf33ad0 (patch)
treef2239944bd09a4f921c2c2674d3bd3ab4b8b3e41 /src/lqueue.erl
parent542644446675a7392ab30667b140ab3145bf95c2 (diff)
downloadrabbitmq-server-git-09226b228402443f2542f3e8d920f1f81cf33ad0.tar.gz
Drop unneeded queue impls, tidy lqueue, add specs etc
Diffstat (limited to 'src/lqueue.erl')
-rw-r--r--src/lqueue.erl24
1 files changed, 24 insertions, 0 deletions
diff --git a/src/lqueue.erl b/src/lqueue.erl
index ea54ffd4b9..3ab8c9f089 100644
--- a/src/lqueue.erl
+++ b/src/lqueue.erl
@@ -21,6 +21,30 @@
-define(QUEUE, queue).
+-ifdef(use_specs).
+
+-export_type([?MODULE/0]).
+
+-type(?MODULE() :: {non_neg_integer(), ?MODULE()}).
+-type(value() :: any()).
+-type(result() :: ({'empty', ?MODULE()} |
+ {{'value', value()}, ?MODULE()})).
+
+-spec(new/0 :: () -> ?MODULE()).
+-spec(is_empty/1 :: (?MODULE()) -> boolean()).
+-spec(len/1 :: (?MODULE()) -> non_neg_integer()).
+-spec(in/2 :: (value(), ?MODULE()) -> ?MODULE()).
+-spec(in_r/2 :: (value(), ?MODULE()) -> ?MODULE()).
+-spec(out/1 :: (?MODULE()) -> result()).
+-spec(out_r/1 :: (?MODULE()) -> result()).
+-spec(join/2 :: (?MODULE(), ?MODULE()) -> ?MODULE()).
+-spec(foldl/3 :: (fun ((value(), B) -> B), B, ?MODULE()) -> B).
+-spec(foldr/3 :: (fun ((value(), B) -> B), B, ?MODULE()) -> B).
+-spec(from_list/1 :: ([value()]) -> ?MODULE()).
+-spec(to_list/1 :: (?MODULE()) -> [value()]).
+
+-endif.
+
new() -> {0, ?QUEUE:new()}.
is_empty({0, _Q}) -> true;