3 let realloc l old_size new_size dummy =
4 let l' = Array.create new_size dummy in
5 Array.blit l 0 l' 0 (min old_size new_size);
11 type 'a t = { mutable line : 'a array;
14 let create n a = { line = Array.create n a;
19 let len = Array.length line in
20 if i >= len then c.dummy else line.(i)
24 let len = Array.length line in
25 if i >= len then c.line <- realloc line len (i*2+1) c.dummy;
30 let to_array c = c.line
37 type 'a t = { mutable line : 'a array array;
40 dummy_line1 : 'a array
43 let dummy_line = [| |]
45 let create ?(l1_size=512) n a =
46 let dummy_line1 = Array.create l1_size a in
47 { line = Array.create n dummy_line1;
50 dummy_line1 = dummy_line1;
53 let find c i j = c.line.(i).(j)
57 let len = Array.length line in
59 c.line <- realloc line len (i*2 + 1) c.dummy_line1;
60 let line = c.line.(i) in
62 if line == c.dummy_line1 then
63 let nline = Array.copy line in
71 let to_array c = c.line
72 let dummy_line c = c.dummy_line1
78 { mutable line : 'a array array array;
82 dummy_line1 : 'a array array;
83 dummy_line2 : 'a array }
85 let dummy_line2 = [| |]
86 let dummy_line1 = [| |]
88 let create ?(l1_size=512) ?(l2_size=512) n a =
89 let dummy_line2 = Array.create l2_size a in
90 let dummy_line1 = Array.create l1_size dummy_line2 in
91 { line = Array.create n dummy_line1;
95 dummy_line1 = dummy_line1;
96 dummy_line2 = dummy_line2
98 let find t k j i = t.line.(i).(j).(k)
105 if l1 == t.dummy_line1 then
106 let l1' = Array.copy l1 in
111 let l2 = line1.(j) in
112 if l2 == t.dummy_line2 then
113 let l2' = Array.copy l2 in
114 line1.(j) <- l2'; l2'
119 let dummy a = a.dummy
120 let to_array a = a.line