3 external cbitmap_create : int -> cbitmap = "caml_bitmap_create"
4 external cbitmap_setbit : cbitmap -> int -> int -> unit = "caml_bitmap_setbit"
5 external cbitmap_resize : cbitmap -> int -> cbitmap = "caml_bitmap_resize"
8 type bitmap = { mutable data : cbitmap;
10 mutable capacity : int; (* in bits *)
12 let bitmap_increment = 4096
14 let bitmap_create () =
16 data = cbitmap_create bitmap_increment;
18 capacity = bitmap_increment;
21 let bitmap_push_back b i =
22 if b.size >= b.capacity then begin
23 let ncap = b.capacity + bitmap_increment in
24 b.data <- cbitmap_resize b.data ncap;
27 cbitmap_setbit b.data b.size i;
32 external bp_construct : cbitmap -> int -> t = "caml_bp_construct"
33 external alloc_stats : unit -> int = "caml_bp_alloc_stats"
34 external save : t -> Unix.file_descr -> unit = "caml_bp_save"
35 external load : Unix.file_descr -> t = "caml_bp_load"
36 external first_child : t -> int -> int = "caml_bp_first_child" "noalloc"
37 external next_sibling : t -> int -> int = "caml_bp_next_sibling" "noalloc"
38 external preorder_rank : t -> int -> int = "caml_bp_preorder_rank" "noalloc"
40 let create bm = bp_construct bm.data bm.size