diff options
author | Basile Starynkevitch <basile.starynkevitch@inria.fr> | 2004-03-23 12:37:19 +0000 |
---|---|---|
committer | Basile Starynkevitch <basile.starynkevitch@inria.fr> | 2004-03-23 12:37:19 +0000 |
commit | 2c8fe3ae6b8fcfec0f2374dd0151e06f2ff716c1 (patch) | |
tree | 747d911fa5dfb084525edd77b4fd80b965d16bcb | |
parent | 90f3ac484a6bcdb8f8eb6c83cce0691398b5ec95 (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.ml | 6 | ||||
-rw-r--r-- | stdlib/hashtbl.mli | 8 |
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}. *) |