From 0e4b0ae7ce57117a561f70fa51026d85b4702aaa Mon Sep 17 00:00:00 2001 From: Magnus Henoch Date: Wed, 4 Sep 2013 14:08:34 +0100 Subject: Add dict:is_empty/1 and orddict:is_empty/1 dict:size/1 runs in constant time, but orddict:size/1 does not. With this change, the two modules stay API compatible and gain a constant-time function for checking whether a dictionary is empty. --- lib/stdlib/src/dict.erl | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) (limited to 'lib/stdlib/src/dict.erl') diff --git a/lib/stdlib/src/dict.erl b/lib/stdlib/src/dict.erl index e3bfb6c2e2..e67433ffb7 100644 --- a/lib/stdlib/src/dict.erl +++ b/lib/stdlib/src/dict.erl @@ -36,7 +36,7 @@ -module(dict). %% Standard interface. --export([new/0,is_key/2,to_list/1,from_list/1,size/1]). +-export([new/0,is_key/2,to_list/1,from_list/1,size/1,is_empty/1]). -export([fetch/2,find/2,fetch_keys/1,erase/2]). -export([store/3,append/3,append_list/3,update/3,update/4,update_counter/3]). -export([fold/3,map/2,filter/2,merge/3]). @@ -112,6 +112,11 @@ from_list(L) -> size(#dict{size=N}) when is_integer(N), N >= 0 -> N. +-spec is_empty(Dict) -> boolean() when + Dict :: dict(). + +is_empty(#dict{size=N}) -> N =:= 0. + -spec fetch(Key, Dict) -> Value when Key :: term(), Dict :: dict(), -- cgit v1.2.3