-(* 'diskzip' command for intelligently compressing disk images.
- (C) Copyright 2007 Richard W.M. Jones, Red Hat Inc.
- http://libvirt.org/
-
- This program is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version 2 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program; if not, write to the Free Software
- Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
-*)
-
-(**
- Unlimited-length fixed-size bitmap type.
-
- The only reason we need this is because strings are limited to 16
- MBytes on 32 bit platforms (which would limit the size of a disk
- image we could process to around 64 GB, assuming 512 byte sectors).
- This module hides multiple strings on 32 bit, or a single long
- string on 64 bit but is very efficient in either case.
-
- Also it uses the 'int63' type which makes arithmetic convenient.
-*)
-
-type t
-
-val create : Int63.t -> t
- (** Create a bitmap of the given length in bits. *)
-
-val set : t -> Int63.t -> unit
-
-val clear : t -> Int63.t -> unit
-
-val set_bool : t -> Int63.t -> bool -> unit
-
-val set_int : t -> Int63.t -> int -> unit
- (** Treats the integer as a C-like boolean. *)
-
-val get : t -> Int63.t -> bool
-
-val iter : (Int63.t -> bool -> unit) -> t -> unit
- (** [iter f bitmap] iterates over the bitmap, calling [f] for each bit. *)
-
-val iter_set : (Int63.t -> bool -> bool) -> t -> unit
- (** [iter_set f bitmap] iterates over the bitmap, calling [f] for each
- bit. The return value of [f] is used to set or clear the bit
- in the bitmap. *)