Add iteri function to traverse cache data structures.
[SXSI/xpathcomp.git] / src / cache.ml
index d65df68..3efe3dc 100644 (file)
@@ -57,6 +57,15 @@ struct
 
   let dummy a = a.dummy
 
+  let iteri f a =
+    let line = a.line in
+    if a.offset == ~-1 then () else
+      for i = 0 to Array.length line - 1 do
+       let v = line.(i) in
+         f (i+a.offset) v (v==a.dummy)
+      done
+
+
 end
 
 
@@ -89,6 +98,14 @@ struct
 
   let dummy c = c.Lvl1.dummy.Lvl1.dummy
 
+  let iteri f a =
+    let line = a.Lvl1.line in
+    if a.Lvl1.offset == ~-1 then () else
+      for i = 0 to Array.length line - 1 do
+       Lvl1.iteri (f i) line.(i)
+      done
+
+
 end
 
 module Lvl3 =
@@ -118,5 +135,11 @@ struct
 
 
   let dummy a = Lvl2.dummy a.Lvl1.dummy
+  let iteri f a =
+    let line = a.Lvl1.line in
+    if a.Lvl1.offset == ~-1 then () else
+      for i = 0 to Array.length line - 1 do
+       Lvl2.iteri (f i) line.(i)
+      done
 
 end