Remove trailing white spaces
[SXSI/xpathcomp.git] / tag.ml
diff --git a/tag.ml b/tag.ml
index 057f09d..c692e98 100644 (file)
--- a/tag.ml
+++ b/tag.ml
@@ -13,12 +13,20 @@ type pool
 external null_pool : unit -> pool = "caml_xml_tree_nullt"
 external null_tag : unit -> t = "caml_xml_tree_nullt"
 external register_tag : pool -> string -> t = "caml_xml_tree_register_tag"
-external tag_name : pool -> t -> string = "caml_xml_tree_tag_name"
+external tag_name : pool -> t -> string = "caml_xml_tree_get_tag_name"
 
 let nullt = null_tag ()   
+let dummy = nullt
 (* Defined in XMLTree.cpp *)
-let pcdata = 1
-let attribute = 0 
+let document_node = 0
+let attribute = 1
+let pcdata = 2
+let attribute_data= 3
+let document_node_close = 4
+let attribute_close = 5
+let pcdata_close = 6
+let attribute_data_close= 7
+
 
 let pool = Weak.create 1
 
@@ -31,14 +39,29 @@ let get_pool () =  match Weak.get pool 0 with
 let tag s = match s with
   | "<$>" -> pcdata
   | "<@>" -> attribute
+  | "" -> document_node
+  | "<@$>" -> attribute_data
   | _ -> register_tag (get_pool()) s
 
 let compare = (-)
 let equal = (==)
+
+let hash x = x
+
+
 let to_string t = 
-  if t = pcdata then "<$>"
-  else if t = attribute then "<@>"
+  if t == pcdata then "<$>"
+  else if t == attribute_data then "<@$>"
+  else if t == attribute then "<@>"
+  else if t == nullt then "<!NIL!>"
   else tag_name (get_pool()) t
 
 
 let print ppf t = Format.fprintf ppf "%s" (to_string t)
+(* Check internal invariants *)
+let check t = 
+  if (t != tag (to_string t))
+  then failwith "module Tag: internal check failed"
+
+let dump = print
+