mirror of
https://github.com/c-cube/ocaml-containers.git
synced 2025-12-09 12:45:34 -05:00
rename CCBitField.{BITFIELD -> S}
This commit is contained in:
parent
e13fcbdad3
commit
641ab6f06e
2 changed files with 24 additions and 12 deletions
|
|
@ -9,12 +9,17 @@ let max_width = Sys.word_size - 2
|
||||||
|
|
||||||
module type EMPTY = sig end
|
module type EMPTY = sig end
|
||||||
|
|
||||||
module type BITFIELD = sig
|
module type S = sig
|
||||||
type t = private int
|
type t = private int
|
||||||
|
(** Generative type of bitfields. Each instantiation of the functor
|
||||||
|
should create a new, incompatible type *)
|
||||||
|
|
||||||
val empty : t
|
val empty : t
|
||||||
|
(** Empty bitfields (all bits 0) *)
|
||||||
|
|
||||||
type 'a field
|
type 'a field
|
||||||
|
(** Field of type ['a], with a given width and position within the
|
||||||
|
bitfield type *)
|
||||||
|
|
||||||
val get : 'a field -> t -> 'a
|
val get : 'a field -> t -> 'a
|
||||||
(** Get a field of type ['a] *)
|
(** Get a field of type ['a] *)
|
||||||
|
|
@ -29,17 +34,17 @@ module type BITFIELD = sig
|
||||||
(** Informal name of the field *)
|
(** Informal name of the field *)
|
||||||
|
|
||||||
val bool : ?name:string -> unit -> bool field
|
val bool : ?name:string -> unit -> bool field
|
||||||
(** New field of type boo
|
(** New field of type bool
|
||||||
@raise Frozen if [freeze ()] was called
|
@raise Frozen if [freeze ()] was called
|
||||||
@raise TooManyFields if there is no room *)
|
@raise TooManyFields if there is no room *)
|
||||||
|
|
||||||
val int2 : ?name:string -> unit -> int field
|
val int2 : ?name:string -> unit -> int field
|
||||||
(** New field of type 2-bits int
|
(** New field of type 2-bits int (same as [int ~width:2])
|
||||||
@raise Frozen if [freeze ()] was called
|
@raise Frozen if [freeze ()] was called
|
||||||
@raise TooManyFields if there is no room *)
|
@raise TooManyFields if there is no room *)
|
||||||
|
|
||||||
val int3 : ?name:string -> unit -> int field
|
val int3 : ?name:string -> unit -> int field
|
||||||
(** New field for 3-bits int
|
(** New field for 3-bits int (same as [int ~width:3])
|
||||||
@raise Frozen if [freeze ()] was called
|
@raise Frozen if [freeze ()] was called
|
||||||
@raise TooManyFields if there is no room *)
|
@raise TooManyFields if there is no room *)
|
||||||
|
|
||||||
|
|
@ -49,7 +54,8 @@ module type BITFIELD = sig
|
||||||
@raise TooManyFields if there is no room *)
|
@raise TooManyFields if there is no room *)
|
||||||
|
|
||||||
val freeze : unit -> unit
|
val freeze : unit -> unit
|
||||||
(** Prevent new fields from being added *)
|
(** Prevent new fields from being added. From now on, creating
|
||||||
|
a field will raise Frozen *)
|
||||||
|
|
||||||
val total_width : unit -> int
|
val total_width : unit -> int
|
||||||
(** Current width of the bitfield *)
|
(** Current width of the bitfield *)
|
||||||
|
|
@ -76,7 +82,7 @@ let rec all_bits_ acc w =
|
||||||
all_bits_ 0 4 = 15
|
all_bits_ 0 4 = 15
|
||||||
*)
|
*)
|
||||||
|
|
||||||
module Make(X : EMPTY) : BITFIELD = struct
|
module Make(X : EMPTY) : S = struct
|
||||||
type t = int
|
type t = int
|
||||||
|
|
||||||
let empty = 0
|
let empty = 0
|
||||||
|
|
|
||||||
|
|
@ -38,12 +38,17 @@ val max_width : int
|
||||||
(** System-dependent maximum width for a bitfield *)
|
(** System-dependent maximum width for a bitfield *)
|
||||||
|
|
||||||
(** {2 Bitfield Signature} *)
|
(** {2 Bitfield Signature} *)
|
||||||
module type BITFIELD = sig
|
module type S = sig
|
||||||
type t = private int
|
type t = private int
|
||||||
|
(** Generative type of bitfields. Each instantiation of the functor
|
||||||
|
should create a new, incompatible type *)
|
||||||
|
|
||||||
val empty : t
|
val empty : t
|
||||||
|
(** Empty bitfields (all bits 0) *)
|
||||||
|
|
||||||
type 'a field
|
type 'a field
|
||||||
|
(** Field of type ['a], with a given width and position within the
|
||||||
|
bitfield type *)
|
||||||
|
|
||||||
val get : 'a field -> t -> 'a
|
val get : 'a field -> t -> 'a
|
||||||
(** Get a field of type ['a] *)
|
(** Get a field of type ['a] *)
|
||||||
|
|
@ -58,17 +63,17 @@ module type BITFIELD = sig
|
||||||
(** Informal name of the field *)
|
(** Informal name of the field *)
|
||||||
|
|
||||||
val bool : ?name:string -> unit -> bool field
|
val bool : ?name:string -> unit -> bool field
|
||||||
(** New field of type boo
|
(** New field of type bool
|
||||||
@raise Frozen if [freeze ()] was called
|
@raise Frozen if [freeze ()] was called
|
||||||
@raise TooManyFields if there is no room *)
|
@raise TooManyFields if there is no room *)
|
||||||
|
|
||||||
val int2 : ?name:string -> unit -> int field
|
val int2 : ?name:string -> unit -> int field
|
||||||
(** New field of type 2-bits int
|
(** New field of type 2-bits int (same as [int ~width:2])
|
||||||
@raise Frozen if [freeze ()] was called
|
@raise Frozen if [freeze ()] was called
|
||||||
@raise TooManyFields if there is no room *)
|
@raise TooManyFields if there is no room *)
|
||||||
|
|
||||||
val int3 : ?name:string -> unit -> int field
|
val int3 : ?name:string -> unit -> int field
|
||||||
(** New field for 3-bits int
|
(** New field for 3-bits int (same as [int ~width:3])
|
||||||
@raise Frozen if [freeze ()] was called
|
@raise Frozen if [freeze ()] was called
|
||||||
@raise TooManyFields if there is no room *)
|
@raise TooManyFields if there is no room *)
|
||||||
|
|
||||||
|
|
@ -78,7 +83,8 @@ module type BITFIELD = sig
|
||||||
@raise TooManyFields if there is no room *)
|
@raise TooManyFields if there is no room *)
|
||||||
|
|
||||||
val freeze : unit -> unit
|
val freeze : unit -> unit
|
||||||
(** Prevent new fields from being added *)
|
(** Prevent new fields from being added. From now on, creating
|
||||||
|
a field will raise Frozen *)
|
||||||
|
|
||||||
val total_width : unit -> int
|
val total_width : unit -> int
|
||||||
(** Current width of the bitfield *)
|
(** Current width of the bitfield *)
|
||||||
|
|
@ -93,7 +99,7 @@ module type BITFIELD = sig
|
||||||
end
|
end
|
||||||
|
|
||||||
(** Create a new bitfield type *)
|
(** Create a new bitfield type *)
|
||||||
module Make(X : EMPTY) : BITFIELD
|
module Make(X : EMPTY) : S
|
||||||
|
|
||||||
(*$R
|
(*$R
|
||||||
let module B = CCBitField.Make(struct end) in
|
let module B = CCBitField.Make(struct end) in
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue