X-Git-Url: http://git.nguyen.vg/gitweb/?a=blobdiff_plain;f=tagSet.ml;h=ba3f431c3cb6e88a5457c2a250b8759406e2408d;hb=cf6d366b25132eea7b0f1966c11d034d748af0fa;hp=503df80f1cdd98620c7fff1fe4db9c125861ce0f;hpb=5b4679e20761058f1e04c123da52631c0dd265cc;p=SXSI%2Fxpathcomp.git diff --git a/tagSet.ml b/tagSet.ml index 503df80..ba3f431 100644 --- a/tagSet.ml +++ b/tagSet.ml @@ -4,10 +4,29 @@ struct let hash = Hashtbl.hash end *) -include FiniteCofinite.Make(Ptset) +module M : FiniteCofinite.S with type elt = Tag.t and type set = Ptset.Int.t = + FiniteCofinite.Make(Ptset.Int) +include M + let tag t = singleton t let pcdata = singleton Tag.pcdata let attribute = singleton Tag.attribute let star = diff any (cup pcdata attribute) let node = neg attribute + +let print ppf t = + let print_set s = + Format.fprintf ppf "{"; + Ptset.Int.iter + (fun t -> Format.fprintf ppf "'%s' " (Tag.to_string t)) + s; + Format.fprintf ppf "}" + in + if is_finite t then + if is_empty t then + Format.fprintf ppf "∅" else print_set (positive t) + else + Format.fprintf ppf "Σ"; + if not (is_any t) then + (Format.fprintf ppf "\\" ; print_set (negative t))