From 9d761fb9aba3c653b1666e7ea3a5d2aec9a1138a Mon Sep 17 00:00:00 2001 From: =?utf8?q?Kim=20Nguy=E1=BB=85n?= Date: Wed, 14 Mar 2012 13:47:31 +0100 Subject: [PATCH] Add iteri function to traverse cache data structures. --- src/cache.ml | 20 +++++++++++++++++--- src/cache.mli | 6 +++--- 2 files changed, 20 insertions(+), 6 deletions(-) diff --git a/src/cache.ml b/src/cache.ml index 59ff1fb..3efe3dc 100644 --- a/src/cache.ml +++ b/src/cache.ml @@ -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 diff --git a/src/cache.mli b/src/cache.mli index df09798..bc4cd48 100644 --- a/src/cache.mli +++ b/src/cache.mli @@ -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 -- 2.17.1