Safety before Techfest
[SXSI/xpathcomp.git] / tagSet.ml
index 503df80..ba3f431 100644 (file)
--- 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))