diff --git a/src/data/CCBitField.ml b/src/data/CCBitField.ml index cca955c0..90112c28 100644 --- a/src/data/CCBitField.ml +++ b/src/data/CCBitField.ml @@ -73,6 +73,7 @@ module Make(X : EMPTY) : BITFIELD = struct width=2; get=(fun x -> (x land mask) lsr n); set=(fun v x -> + assert (x >= 0 && x < 4); let x = x land (lnot mask) in x lor (v lsl n) ) diff --git a/src/data/CCBitField.mli b/src/data/CCBitField.mli index 9097c39d..f593a968 100644 --- a/src/data/CCBitField.mli +++ b/src/data/CCBitField.mli @@ -35,29 +35,29 @@ module type BITFIELD = sig (** New field of type 2-bits int *) end -(** Create a new bitfield type - -Example: +(** Create a new bitfield type *) +module Make(X : EMPTY) : BITFIELD -{[ - module B = CCBitField.Make(struct end);; +(*$R + let module B = CCBitField.Make(struct end) in - let x = B.bool ();; - let y = B.int2 ();; - let z = B.bool ();; + let x = B.bool () in + let y = B.int2 () in + let z = B.bool () in - B.width y ;; (* = 2 *) + assert_equal 2 (B.width y) ; let f = B.empty |> B.set y 3 - |> B.set z true ;; - (* = 14 *) + |> B.set z true + in - B.get x f ;; (* false *) - B.get y f ;; (* 3 *) - B.get z f ;; (* true *) + assert_equal 14 (f :> int) ; + + assert_equal false (B.get x f) ; + assert_equal 3 (B.get y f) ; + assert_equal (B.get z f); + + () +*) -]} - - *) -module Make(X : EMPTY) : BITFIELD