projects
/
SXSI
/
xpathcomp.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Added benchmarking funtions,
[SXSI/xpathcomp.git]
/
tag.ml
diff --git
a/tag.ml
b/tag.ml
index
82c42b5
..
139ff91
100644
(file)
--- a/
tag.ml
+++ b/
tag.ml
@@
-13,12
+13,19
@@
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 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 ()
(* Defined in XMLTree.cpp *)
let nullt = null_tag ()
(* 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
let pool = Weak.create 1
@@
-31,6
+38,8
@@
let get_pool () = match Weak.get pool 0 with
let tag s = match s with
| "<$>" -> pcdata
| "<@>" -> attribute
let tag s = match s with
| "<$>" -> pcdata
| "<@>" -> attribute
+ | "" -> document_node
+ | "<@$>" -> attribute_data
| _ -> register_tag (get_pool()) s
let compare = (-)
| _ -> register_tag (get_pool()) s
let compare = (-)
@@
-40,8
+49,10
@@
let hash x = x
let to_string t =
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
else tag_name (get_pool()) t