Add iteri function to traverse cache data structures.
authorKim Nguyễn <kn@lri.fr>
Wed, 14 Mar 2012 12:47:31 +0000 (13:47 +0100)
committerKim Nguyễn <kn@lri.fr>
Wed, 14 Mar 2012 12:51:18 +0000 (13:51 +0100)
src/cache.ml
src/cache.mli

index 59ff1fb..3efe3dc 100644 (file)
@@ -56,15 +56,15 @@ struct
     else a.dummy
 
   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 = a.(i)
+       let v = line.(i) in
          f (i+a.offset) v (v==a.dummy)
       done
-*)
+
 
 end
 
@@ -98,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 =
@@ -127,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
index df09798..bc4cd48 100644 (file)
@@ -7,7 +7,7 @@ sig
   val find : 'a t -> int -> 'a
   val add : 'a t -> int -> 'a -> unit
   val dummy : 'a t -> 'a
-(*  val iteri : (int -> 'a -> bool -> unit) -> 'a t -> unit *)
+  val iteri : (int -> 'a -> bool -> unit) -> 'a t -> unit
 end
 
 module Lvl2:
@@ -17,7 +17,7 @@ sig
     val find : 'a t -> int -> int -> 'a
     val add : 'a t -> int -> int -> 'a -> unit
     val dummy : 'a t -> 'a
-(*    val iteri : (int -> int -> 'a -> bool -> unit) -> 'a t -> unit*)
+    val iteri : (int -> int -> 'a -> bool -> unit) -> 'a t -> unit
 end
 
 module Lvl3 :
@@ -29,6 +29,6 @@ module Lvl3 :
     val find : 'a t -> int -> int -> int -> 'a
     val add : 'a t -> int -> int -> int -> 'a -> unit
     val dummy : 'a t -> 'a
-(*    val iteri : (int -> int -> int -> 'a -> bool -> unit) -> 'a t -> unit*)
+    val iteri : (int -> int -> int -> 'a -> bool -> unit) -> 'a t -> unit
  
   end