+let node_compteur = ref 0
+
type query_tree_desc = Binop of op * query_tree * query_tree
| Axis of Xpath.Ast.axis * query_tree
| Start
else let n1 = Naive_tree.first_child tree n in
let j = Naive_tree.preorder tree n in
Bitvector.set acc j true;
+ incr node_compteur;
let acc1 = aux n1 acc in
let n2 = Naive_tree.next_sibling tree n in
aux n2 acc1
in
let v0 = Bitvector.create (Naive_tree.size tree) in
- (* let v = bitvector_of_nodes tree ln in*)
if c then begin
for i = 0 to (Bitvector.length v)-1 do
if Bitvector.get v i then
let n = Naive_tree.by_preorder tree i in
let n1 = Naive_tree.first_child tree n in
let _ = aux n1 v0 in
- Bitvector.set v0 i true
+ Bitvector.set v0 i true;
+ incr node_compteur
done; end
else
for i = 0 to (Bitvector.length v)-1 do
else
let n1 = Naive_tree.next_sibling tree n in
Bitvector.set acc (Naive_tree.preorder tree n) true;
+ incr node_compteur;
aux n1 acc
in
let v0 = Bitvector.create (Naive_tree.size tree) in
- (*let v = bitvector_of_nodes tree ln in*)
for i = 0 to (Bitvector.length v)-1 do
if Bitvector.get v i then
let n = Naive_tree.by_preorder tree i in
if n1 == Naive_tree.nil then acc
else begin
Bitvector.set acc (Naive_tree.preorder tree n1) true;
+ incr node_compteur;
aux n1 acc end
in
let v0 = Bitvector.create (Naive_tree.size tree) in
- (* let v = bitvector_of_nodes tree ln in*)
for i = 0 to (Bitvector.length v)-1 do
if Bitvector.get v i then
let n = Naive_tree.by_preorder tree i in
let get_parent tree v =
let v0 = Bitvector.create (Naive_tree.size tree) in
- (* let v = bitvector_of_nodes tree ln in*)
for i = 0 to (Bitvector.length v)-1 do
if Bitvector.get v i then
let n = Naive_tree.by_preorder tree i in
let n1 = get_firstBling tree n Naive_tree.nil in
let n2 = Naive_tree.parent_of_first tree n1 in
if n2 != Naive_tree.nil then begin let j = Naive_tree.preorder tree n2 in
- Bitvector.set v0 j true
+ Bitvector.set v0 j true;
+ incr node_compteur
end
done;
v0
let get_ancestor tree b v =
let v0 = Bitvector.create (Naive_tree.size tree) in
- (* let v = bitvector_of_nodes tree ln in *)
if b then
begin
for i = (Bitvector.length v)-1 downto 0 do
if Bitvector.get v i then
begin
Bitvector.set v0 i true;
+ incr node_compteur;
let n = Naive_tree.by_preorder tree i in
let n0 = ref n in
while !n0 != Naive_tree.nil do
if n2 != Naive_tree.nil then begin let j = Naive_tree.preorder tree n2 in
Bitvector.set v0 j true;
Bitvector.set v j true;
+ node_compteur := !node_compteur + 2;
end
done;
end
if n2 != Naive_tree.nil then begin let j = Naive_tree.preorder tree n2 in
Bitvector.set v0 j true;
Bitvector.set v j true;
+ node_compteur := !node_compteur + 2;
end
done;
end
if n1 == Naive_tree.nil then acc
else begin
Bitvector.set acc (Naive_tree.preorder tree n1) true;
+ incr node_compteur;
aux n1 acc end
in
let v0 = Bitvector.create (Naive_tree.size tree) in
- (* let v = bitvector_of_nodes tree ln in*)
for i = 0 to (Bitvector.length v)-1 do
if Bitvector.get v i then
let n = Naive_tree.by_preorder tree i in