+ external tagged_below : t -> [`Tree ] node -> Ptset.int_vector -> Ptset.int_vector -> [`Tree ] node = "caml_xml_tree_tagged_below"
+ external tagged_desc_only : t -> [`Tree ] node -> Ptset.int_vector -> [`Tree ] node = "caml_xml_tree_tagged_desc_only"
+ external tagged_next : t -> [`Tree ] node -> Ptset.int_vector -> Ptset.int_vector -> [`Tree ] node -> [`Tree ] node = "caml_xml_tree_tagged_next"
+ external tagged_foll_only : t -> [`Tree ] node -> Ptset.int_vector -> [`Tree ] node -> [`Tree ] node = "caml_xml_tree_tagged_foll_only"
+ external tagged_desc_or_foll_only : t -> [`Tree ] node -> Ptset.int_vector -> [`Tree ] node -> [`Tree ] node = "caml_xml_tree_tagged_foll_only"
+ external tagged_foll_below : t -> [`Tree ] node -> Tag.t -> [`Tree ] node -> [`Tree ] node = "caml_xml_tree_tagged_foll_below"
+
+ let test_jump tree tag =
+ let rec loop id ctx =
+ if id != nil
+ then
+ let first = tagged_desc tree id tag
+ and next = tagged_desc tree id tag
+ in
+ loop first id;
+ loop next ctx
+ in
+ loop (root tree) (root tree)
+
+
+ let test_xml_tree ppf tags v =
+ let pr x = Format.fprintf ppf x in
+ let rec aux id =
+ if (is_nil id)
+ then ()
+ else
+ begin
+ pr "Node %i, (Tag) %i='%s' (GetTagName), NodeXMLId (Preorder)=%i\n%!"
+ (int_of_node id)
+ (tag_id v id)
+ (Tag.to_string (tag_id v id))
+ (node_xml_id v id);
+ pr "DocID of PrevText,MyText,NextText : (%i = %s,%i = %s,%i = %s) ParentDoc(my_text)=%i PrevDoc(next_text)=%i\n%!"
+ (int_of_node (prev_text v id))
+ (Text.get_text v (prev_text v id))
+ (int_of_node (my_text v id))
+ (Text.get_text v (my_text v id))
+ (int_of_node (next_text v id))
+ (Text.get_text v (next_text v id))
+ (int_of_node(parent_doc v (my_text v id)))
+ (int_of_node(prev_doc v (next_text v id)));
+ let i1,i2 = doc_ids v id in
+ pr "Testing DocIds below (%i,%i)*\n%!"
+ (int_of_node i1) (int_of_node i2);
+ pr "Testing Tagged*\n%!";
+ Ptset.iter (fun t ->
+ let str = Tag.to_string t in
+ if Tag.pcdata <> t
+ then begin
+ pr "Tag: %s : \n%!" str;
+ pr "TaggedDesc = %i%!, " (tagged_desc v id t);
+ pr "TaggedFoll = %i\n%!" (tagged_foll v id t);
+ pr "SubtreeTags = %i\n%!" (subtree_tags v id t);
+ end) tags;
+ pr "----------------------------\n";
+ aux(first_child v id);
+ aux(next_sibling v id);
+ end
+ in
+ aux (root v)
+
+ let rrrr = ref 0
+
+ let time_xml_tree v tag =
+
+ let rec aux id acc =
+ incr rrrr;
+ if (is_nil id)
+ then acc
+ else begin
+ let acc =
+ if tag == (tag_id v id)
+ then
+ id::acc
+ else acc
+ in
+ aux (next_sibling v id) (aux (first_child v id) acc);
+ end
+ in
+ let r = aux (root v) [] in
+ Printf.eprintf "%i\n%!" !rrrr;r
+
+ let rrrr2 = ref 0
+ let time_xml_tree2 v tag =
+ let rec aux id acc ctx=
+ incr rrrr2;
+ if (is_nil id)
+ then acc
+ else begin
+ let acc =
+ if tag == (tag_id v id)
+ then
+ id::acc
+ else acc
+ in
+ aux (tagged_foll_below v id tag ctx) (aux (tagged_desc v id tag) acc id) ctx;
+ end
+ in
+ let r = aux (root v) [] (root v) in
+ Printf.eprintf "%i\n%!" !rrrr2; r
+
+
+
+
+