summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBasile Starynkevitch <basile.starynkevitch@inria.fr>2004-03-23 12:37:19 +0000
committerBasile Starynkevitch <basile.starynkevitch@inria.fr>2004-03-23 12:37:19 +0000
commit2c8fe3ae6b8fcfec0f2374dd0151e06f2ff716c1 (patch)
tree747d911fa5dfb084525edd77b4fd80b965d16bcb
parent90f3ac484a6bcdb8f8eb6c83cce0691398b5ec95 (diff)
added length function.
git-svn-id: http://caml.inria.fr/svn/ocaml/trunk@6167 f963ae5c-01c2-4b8c-9fe0-0dff7051ff02
-rw-r--r--stdlib/hashtbl.ml6
-rw-r--r--stdlib/hashtbl.mli8
2 files changed, 14 insertions, 0 deletions
diff --git a/stdlib/hashtbl.ml b/stdlib/hashtbl.ml
index 0169f747a..225aa6be7 100644
--- a/stdlib/hashtbl.ml
+++ b/stdlib/hashtbl.ml
@@ -44,6 +44,8 @@ let copy h =
{ size = h.size;
data = Array.copy h.data }
+let length h = h.size
+
let resize hashfun tbl =
let odata = tbl.data in
let osize = Array.length odata in
@@ -184,6 +186,7 @@ module type S =
val mem : 'a t -> key -> bool
val iter: (key -> 'a -> unit) -> 'a t -> unit
val fold: (key -> 'a -> 'b -> 'b) -> 'a t -> 'b -> 'b
+ val length: 'a t -> int
end
module Make(H: HashedType): (S with type key = H.t) =
@@ -272,4 +275,7 @@ module Make(H: HashedType): (S with type key = H.t) =
let iter = iter
let fold = fold
+ let length = length
end
+
+(* eof $Id$ *)
diff --git a/stdlib/hashtbl.mli b/stdlib/hashtbl.mli
index fcb296a7c..d6434ade7 100644
--- a/stdlib/hashtbl.mli
+++ b/stdlib/hashtbl.mli
@@ -35,6 +35,7 @@ val create : int -> ('a, 'b) t
val clear : ('a, 'b) t -> unit
(** Empty a hash table. *)
+
val add : ('a, 'b) t -> 'a -> 'b -> unit
(** [Hashtbl.add tbl x y] adds a binding of [x] to [y] in table [tbl].
Previous bindings for [x] are not removed, but simply
@@ -91,6 +92,12 @@ val fold : ('a -> 'b -> 'c -> 'c) -> ('a, 'b) t -> 'c -> 'c
the most recent binding is passed first. *)
+val length : ('a, 'b) t -> int
+(** [Hashtbl.length tbl] returns the number of bindings in [tbl].
+ Multiple bindings are counted multiply, so [Hashtbl.length]
+ gives the number of times [Hashtbl.iter] calls it first argument. *)
+
+
(** {6 Functorial interface} *)
@@ -130,6 +137,7 @@ module type S =
val mem : 'a t -> key -> bool
val iter : (key -> 'a -> unit) -> 'a t -> unit
val fold : (key -> 'a -> 'b -> 'b) -> 'a t -> 'b -> 'b
+ val length : 'a t -> int
end
(** The output signature of the functor {!Hashtbl.Make}. *)