exception Found of Uid.t
- let first_free_id () =
- let mx = Uid.to_int (uid_current()) + 1 in
- let a = Array.create mx Uid.dummy in
- WH.iter (fun cell -> a.(Uid.to_int cell.id) <- (Uid.of_int 0)) pool;
- try
- for i = 0 to mx - 1 do
- if a.(i) == Uid.dummy then raise (Found (Uid.of_int i));
- done;
- uid_make()
- with
- Found i -> i
-
-
let make x =
let cell = { id = Uid.dummy; key = H.hash x; node = x } in
try
WH.find pool cell
with
| Not_found ->
- let cell = { id = uid_make(); key = H.hash x; node = x } in
+ let cell = { cell with id = uid_make(); } in
WH.add pool cell;cell
exception Found of t