svg_converted: fix build (zlib2 split)
[mldonkey.git] / src / utils / lib / verificationBitmap.ml
blob69515d5e8a92db1b05a8254272ddfdab307c7c15
1 type t = bytes
2 type part_state =
3 State_missing | State_partial | State_complete | State_verified
5 let state_to_char = function
6 | State_missing -> '0'
7 | State_partial -> '1'
8 | State_complete -> '2'
9 | State_verified -> '3'
11 let char_to_state = function
12 | '0' -> State_missing
13 | '1' -> State_partial
14 | '2' -> State_complete
15 | '3' -> State_verified
16 | _ -> assert false
18 let create n c = Bytes.make n (state_to_char c)
19 let get x i = char_to_state (Bytes.get x i)
20 let set x i c = Bytes.set x i (state_to_char c)
21 let length = Bytes.length
22 let init n f =
23 let s = Bytes.create n in
24 for i = 0 to n - 1 do
25 set s i (f i)
26 done;
28 let to_string x = Bytes.to_string x
29 let of_string x = Bytes.of_string x
31 let iteri f x =
32 let l = Bytes.length x in
33 let rec aux i =
34 if i < l then begin
35 f i (get x i);
36 aux (i+1)
37 end in
38 aux 0
40 let mapi f x =
41 Array.init (length x) (fun i -> f i (get x i))
43 let fold_lefti f acc x =
44 let l = length x in
45 let rec aux acc i =
46 if i = l then acc
47 else aux (f acc i (get x i)) (i + 1) in
48 aux acc 0
50 let existsi p x =
51 let l = length x in
52 let rec aux i =
53 i < l && (p i (get x i) || aux (i+1)) in
54 aux 0
56 let for_all p s =
57 let l = length s in
58 let rec aux i =
59 i >= l || p (get s i) && aux (i+1) in
60 aux 0