This commit is contained in:
Simon Cruanes 2015-08-11 21:38:28 +02:00
parent 397f41c4fa
commit caaecda7f7
3 changed files with 20 additions and 21 deletions

View file

@ -131,6 +131,7 @@ Documentation [here](http://cedeela.fr/~simon/software/containers).
with fast merges with fast merges
- `CCHashconsedSet`, a set structure with sharing of sub-structures - `CCHashconsedSet`, a set structure with sharing of sub-structures
- `CCGraph`, a small collection of graph algorithms - `CCGraph`, a small collection of graph algorithms
- `CCBitField`, a type-safe implementation of bitfields that fit in `int`
### Containers.io ### Containers.io

View file

@ -63,6 +63,7 @@ such as:
Various data structures. Various data structures.
{!modules: {!modules:
CCBitField
CCBV CCBV
CCCache CCCache
CCFQueue CCFQueue

View file

@ -6,6 +6,23 @@
up to 30 or 62 bits (depending on the architecture) in up to 30 or 62 bits (depending on the architecture) in
a relatively type-safe way. a relatively type-safe way.
{[
module B = CCBitField.Make(struct end);;
#install_printer B.pp;;
let x = B.int ~name:"x" ~width:3;;
let y = B.int ~name:"y" ~width:2;;
let z = B.bool ~name:"z" ();;
let f = B.(empty |> set x 3 |> set y 1);;
B.get z f ;;
B.(f |> set z true |> get z) ;;
]}
{b status: experimental} {b status: experimental}
@since NEXT_RELEASE *) @since NEXT_RELEASE *)
@ -75,27 +92,7 @@ module type BITFIELD = sig
(** Print the bitfield using the current list of fields *) (** Print the bitfield using the current list of fields *)
end end
(** Create a new bitfield type, (** Create a new bitfield type *)
{[
module B = CCBitField.Make(struct end);;
#install_printer B.pp;;
let x = B.int ~name:"x" ~width:3;;
let y = B.int ~name:"y" ~width:2;;
let z = B.bool ~name:"z" ();;
let f = B.(empty |> set x 3 |> set y 1);;
B.get z f ;;
B.(f |> set z true |> get z) ;;
]}
*)
module Make(X : EMPTY) : BITFIELD module Make(X : EMPTY) : BITFIELD
(*$R (*$R