mirror of
https://github.com/c-cube/ocaml-containers.git
synced 2025-12-06 03:05:28 -05:00
small changes in CCIntMap, some cleanup
This commit is contained in:
parent
95e96fb5e1
commit
40a6c17548
1 changed files with 7 additions and 24 deletions
|
|
@ -46,15 +46,15 @@ end = struct
|
||||||
highest_bit_naive x 1
|
highest_bit_naive x 1
|
||||||
)
|
)
|
||||||
|
|
||||||
let is_0 ~bit x = x land bit = 0
|
let[@inline] is_0 ~bit x = x land bit = 0
|
||||||
let is_1 ~bit x = x land bit = bit
|
let[@inline] is_1 ~bit x = x land bit = bit
|
||||||
|
|
||||||
let mask ~mask x = (x lor (mask -1)) land (lnot mask)
|
let mask ~mask x = (x lor (mask -1)) land (lnot mask)
|
||||||
(* low endian: let mask_ x ~mask = x land (mask - 1) *)
|
(* small endian: let mask_ x ~mask = x land (mask - 1) *)
|
||||||
|
|
||||||
let gt a b = (b != min_int) && (a = min_int || a > b)
|
let gt a b = (b != min_int) && (a = min_int || a > b)
|
||||||
let lt a b = gt b a
|
let lt a b = gt b a
|
||||||
let equal_int = Stdlib.(=)
|
let equal_int : int -> int -> bool = Stdlib.(=)
|
||||||
end
|
end
|
||||||
|
|
||||||
(*$inject
|
(*$inject
|
||||||
|
|
@ -84,7 +84,7 @@ type +'a t =
|
||||||
|
|
||||||
let empty = E
|
let empty = E
|
||||||
|
|
||||||
let is_empty = function
|
let[@inline] is_empty = function
|
||||||
| E -> true
|
| E -> true
|
||||||
| _ -> false
|
| _ -> false
|
||||||
|
|
||||||
|
|
@ -94,7 +94,7 @@ let is_empty = function
|
||||||
is_empty m = (cardinal m = 0))
|
is_empty m = (cardinal m = 0))
|
||||||
*)
|
*)
|
||||||
|
|
||||||
let is_prefix_ ~prefix y ~bit =
|
let[@inline] is_prefix_ ~prefix y ~bit =
|
||||||
prefix = Bit.mask y ~mask:bit
|
prefix = Bit.mask y ~mask:bit
|
||||||
|
|
||||||
(*$Q
|
(*$Q
|
||||||
|
|
@ -113,16 +113,7 @@ let is_prefix_ ~prefix y ~bit =
|
||||||
(Bit.highest 300 :> int) = 256
|
(Bit.highest 300 :> int) = 256
|
||||||
*)
|
*)
|
||||||
|
|
||||||
(* helper:
|
(* small endian: let branching_bit_ a _ b _ = lowest_bit_ (a lxor b) *)
|
||||||
|
|
||||||
let b_of_i i =
|
|
||||||
let rec f acc i =
|
|
||||||
if i=0 then acc else let q, r = i/2, abs (i mod 2)
|
|
||||||
in
|
|
||||||
f (r::acc) q in f [] i;;
|
|
||||||
*)
|
|
||||||
|
|
||||||
(* low endian: let branching_bit_ a _ b _ = lowest_bit_ (a lxor b) *)
|
|
||||||
let branching_bit_ a b = Bit.highest (a lxor b)
|
let branching_bit_ a b = Bit.highest (a lxor b)
|
||||||
|
|
||||||
(* TODO use hint in branching_bit_ *)
|
(* TODO use hint in branching_bit_ *)
|
||||||
|
|
@ -164,14 +155,6 @@ let rec find_exn k t = match t with
|
||||||
raise Not_found
|
raise Not_found
|
||||||
)
|
)
|
||||||
|
|
||||||
(* XXX could test with lt_unsigned_? *)
|
|
||||||
|
|
||||||
(*
|
|
||||||
if k <= prefix (* search tree *)
|
|
||||||
then find_exn k l
|
|
||||||
else find_exn k r
|
|
||||||
*)
|
|
||||||
|
|
||||||
let find k t =
|
let find k t =
|
||||||
try Some (find_exn k t)
|
try Some (find_exn k t)
|
||||||
with Not_found -> None
|
with Not_found -> None
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue