X-Git-Url: http://git.nguyen.vg/gitweb/?a=blobdiff_plain;f=tag.ml;h=c692e980970d69b43c598c1f2f3754e44a8aa552;hb=df5fdb22632be887ecd9f5c46a014e7e970148a2;hp=c500dab730c4d94b795468cc88f61aa92da6a8b7;hpb=09870a49122b3d7048422818dbb0a038513b4d14;p=SXSI%2Fxpathcomp.git diff --git a/tag.ml b/tag.ml index c500dab..c692e98 100644 --- 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,6 +39,8 @@ 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 = (-) @@ -41,6 +51,7 @@ let hash x = x let to_string t = if t == pcdata then "<$>" + else if t == attribute_data then "<@$>" else if t == attribute then "<@>" else if t == nullt then "" else tag_name (get_pool()) t