X-Git-Url: http://git.nguyen.vg/gitweb/?a=blobdiff_plain;f=src%2Fptset.ml;h=9f9185c7e4d671848e4c0c31df615d2ee5480b85;hb=cb728132e1c5cb0a171ee09e9b3ced16da08f796;hp=bb58049d2c8bd8040c761e6c99fbc1af8245607f;hpb=8c3aa2796959837e89a86d0076cdec89a46d9bb6;p=SXSI%2Fxpathcomp.git diff --git a/src/ptset.ml b/src/ptset.ml index bb58049..9f9185c 100644 --- a/src/ptset.ml +++ b/src/ptset.ml @@ -57,6 +57,7 @@ sig val make : data -> t val node : t -> data val stats : unit -> unit + val init : unit -> unit end module Make ( H : Hcons.SA ) : S with type elt = H.t = @@ -89,6 +90,7 @@ struct type data = Data.t type t = Node.t let stats = Node.stats + let init = Node.init let hash = Node.hash let uid = Node.uid let make = Node.make @@ -313,22 +315,22 @@ struct then empty else match (Node.node s1,Node.node s2) with - | Empty, _ -> empty - | _, Empty -> s1 - | Leaf k1, _ -> if mem k1 s2 then empty else s1 - | _, Leaf k2 -> remove k2 s1 - | Branch (p1,m1,l1,r1), Branch (p2,m2,l2,r2) -> - if m1 == m2 && p1 == p2 then - merge (diff l1 l2) (diff r1 r2) - else if m1 > m2 && match_prefix p2 p1 m1 then - if zero_bit p2 m1 then - merge (diff l1 s2) r1 - else - merge l1 (diff r1 s2) - else if m1 < m2 && match_prefix p1 p2 m2 then - if zero_bit p1 m2 then diff s1 l2 else diff s1 r2 - else - s1 + | Empty, _ -> empty + | _, Empty -> s1 + | Leaf k1, _ -> if mem k1 s2 then empty else s1 + | _, Leaf k2 -> remove k2 s1 + | Branch (p1,m1,l1,r1), Branch (p2,m2,l2,r2) -> + if m1 == m2 && p1 == p2 then + merge (diff l1 l2) (diff r1 r2) + else if m1 > m2 && match_prefix p2 p1 m1 then + if zero_bit p2 m1 then + merge (diff l1 s2) r1 + else + merge l1 (diff r1 s2) + else if m1 < m2 && match_prefix p1 p2 m2 then + if zero_bit p1 m2 then diff s1 l2 else diff s1 r2 + else + s1 (*s All the following operations ([cardinal], [iter], [fold], [for_all], @@ -432,6 +434,7 @@ struct external make : t -> int = "%identity" external node : t -> int = "%identity" external stats : unit -> unit = "%identity" + external init : unit -> unit = "%identity" end ) let print ppf s =