projects
/
SXSI
/
xpathcomp.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
i
[SXSI/xpathcomp.git]
/
src
/
cache.ml
diff --git
a/src/cache.ml
b/src/cache.ml
index
d65df68
..
abe113a
100644
(file)
--- a/
src/cache.ml
+++ b/
src/cache.ml
@@
-1,5
+1,3
@@
-INCLUDE "trace.ml"
-
let realloc l old_size new_size dummy =
let l' = Array.create new_size dummy in
for i = 0 to (min old_size new_size) - 1 do
let realloc l old_size new_size dummy =
let l' = Array.create new_size dummy in
for i = 0 to (min old_size new_size) - 1 do
@@
-20,6
+18,14
@@
struct
}
}
+ let print fmt a =
+ Format.fprintf fmt "{ offset=%i;\n dummy=_;line=%a \n}\n%!"
+ a.offset
+ (Pretty.print_array ~sep:", " (fun fmt x ->
+ if x==a.dummy then
+ Format.fprintf fmt "%s" "D"
+ else
+ Format.fprintf fmt "%s" "E")) a.line
let add a i v =
if a.offset == ~-1 then a.offset <- i;
let add a i v =
if a.offset == ~-1 then a.offset <- i;
@@
-45,7
+51,7
@@
struct
for j = 0 to len - 1 do
narray.(j) <- a.line.(j);
done;
for j = 0 to len - 1 do
narray.(j) <- a.line.(j);
done;
- narray.(i - offset
+ 1
) <- v;
+ narray.(i - offset) <- v;
a.line <- narray
end
a.line <- narray
end
@@
-57,6
+63,15
@@
struct
let dummy a = 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 = line.(i) in
+ f (i+a.offset) v (v==a.dummy)
+ done
+
+
end
end
@@
-65,7
+80,7
@@
module Lvl2 =
struct
type 'a t = 'a Lvl1.t Lvl1.t
let create n a =
struct
type 'a t = 'a Lvl1.t Lvl1.t
let create n a =
- let dummy1 = Lvl1.create
0
a in
+ let dummy1 = Lvl1.create
512
a in
{ Lvl1.line = Array.create n dummy1;
Lvl1.offset = ~-1;
Lvl1.dummy = dummy1;
{ Lvl1.line = Array.create n dummy1;
Lvl1.offset = ~-1;
Lvl1.dummy = dummy1;
@@
-75,12
+90,13
@@
struct
let add a i j v =
let line = Lvl1.find a i in
if line == a.Lvl1.dummy then
let add a i j v =
let line = Lvl1.find a i in
if line == a.Lvl1.dummy then
- let nline =
{ line with Lvl1.offset = ~-1 }
in
- Lvl1.add
nline j v
;
- Lvl1.add
a i nline
+ let nline =
Lvl1.create 0 line.Lvl1.dummy
in
+ Lvl1.add
a i nline
;
+ Lvl1.add
nline j v
else
Lvl1.add line j v
else
Lvl1.add line j v
+
let find a i j =
let v = Lvl1.find a i in
if v == a.Lvl1.dummy then a.Lvl1.dummy.Lvl1.dummy
let find a i j =
let v = Lvl1.find a i in
if v == a.Lvl1.dummy then a.Lvl1.dummy.Lvl1.dummy
@@
-89,6
+105,14
@@
struct
let dummy c = c.Lvl1.dummy.Lvl1.dummy
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 =
end
module Lvl3 =
@@
-96,7
+120,7
@@
struct
type 'a t = 'a Lvl2.t Lvl1.t
let create n a =
type 'a t = 'a Lvl2.t Lvl1.t
let create n a =
- let dummy1 = Lvl2.create
0
a in
+ let dummy1 = Lvl2.create
512
a in
{ Lvl1.line = Array.create n dummy1;
Lvl1.offset = ~-1;
Lvl1.dummy = dummy1;
{ Lvl1.line = Array.create n dummy1;
Lvl1.offset = ~-1;
Lvl1.dummy = dummy1;
@@
-105,9
+129,9
@@
struct
let add a i j k v =
let line = Lvl1.find a i in
if line == a.Lvl1.dummy then
let add a i j k v =
let line = Lvl1.find a i in
if line == a.Lvl1.dummy then
- let nline =
{ line with Lvl1.offset = ~-1 }
in
- Lvl
2.add nline j k v
;
- Lvl
1.add a i nline
+ let nline =
Lvl1.create 0 line.Lvl1.dummy
in
+ Lvl
1.add a i nline
;
+ Lvl
2.add nline j k v
else
Lvl2.add line j k v
else
Lvl2.add line j k v
@@
-118,5
+142,11
@@
struct
let dummy a = Lvl2.dummy a.Lvl1.dummy
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
end