:- module bitmap.
:- interface.
:- import_module bool.
:- import_module list.
:- type bit_index == int.
:- type bitmap.
:- type bitmap_error
	--->	bitmap_error(string).
:- type byte == int.
:- type byte_index == int.
:- type num_bits == int.
:- type num_bytes == int.
:- type slice.
:- type word == int.
:- inst (bitmap) == ground.
:- inst (uniq_bitmap) == (bitmap.bitmap).
:- mode (bitmap_di) == builtin.in((bitmap.uniq_bitmap)).
:- mode (bitmap_ui) == builtin.in((bitmap.uniq_bitmap)).
:- mode (bitmap_uo) == builtin.out((bitmap.uniq_bitmap)).
:- implementation.
:- pragma foreign_type(il, bitmap, "class [mercury]mercury.bitmap__csharp_code.mercury_code.MercuryBitmap")
	where	type_is_abstract_noncanonical.
:- pragma foreign_type(c, bitmap, "MR_BitmapPtr", [can_pass_as_mercury_type])
	where	type_is_abstract_noncanonical.
:- pragma foreign_type(java, bitmap, "bitmap.MercuryBitmap")
	where	type_is_abstract_noncanonical.
:- pragma foreign_type(csharp, bitmap, "bitmap.MercuryBitmap")
	where	type_is_abstract_noncanonical.
:- pragma foreign_type(erlang, bitmap, "")
	where	type_is_abstract_noncanonical.
:- pragma foreign_import_module("C", bitmap).
:- pragma foreign_import_module("C#", bitmap).
:- pragma foreign_import_module("Java", bitmap).
:- pragma foreign_import_module("IL", bitmap).
:- pragma foreign_import_module("Erlang", bitmap).
:- pragma foreign_import_module("C", bitmap).
:- pragma foreign_import_module("C#", bitmap).
:- pragma foreign_import_module("Java", bitmap).
:- pragma foreign_import_module("IL", bitmap).
:- pragma foreign_import_module("Erlang", bitmap).
