module CCBitField:sig
..end
This module defines efficient bitfields up to 30 or 62 bits (depending on the architecture) in a relatively type-safe way.
module B = CCBitField.Make(struct end);;
#install_printer B.pp;;
module X = (val B.int ~name:"x" ~width:3 ());;
module Y = (val B.int ~name:"y" ~width:2 ());;
module Z = (val B.bool ~name:"z" ());;
let f = B.empty |> X.set 3 |> Y.set 1;;
Z.get f ;;
f |> Z.set true |> Z.get ;;
Format.printf "f: %a@." B.pp f;;
status: experimental
Since 0.13
exception TooManyFields
exception Frozen
module type EMPTY =sig
..end
val max_width : int
module type S =sig
..end
module Make(
X
:
EMPTY
)
:S