diff options
-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}. *) |