From 3960ea379205c724fe1855aafb56e64238902bd2 Mon Sep 17 00:00:00 2001 From: Simon Cruanes Date: Sun, 2 Jan 2022 21:58:45 -0500 Subject: [PATCH] feat(BV): add `set_bool` --- src/data/CCBV.ml | 3 +++ src/data/CCBV.mli | 4 ++++ 2 files changed, 7 insertions(+) diff --git a/src/data/CCBV.ml b/src/data/CCBV.ml index 2215e60b..9b89f201 100644 --- a/src/data/CCBV.ml +++ b/src/data/CCBV.ml @@ -279,6 +279,9 @@ let[@inline] reset bv i = let bv = create ~size:3 false in set bv 0; reset bv 0; not (get bv 0) *) +let[@inline] set_bool bv i b = + if b then set bv i else reset bv i + let flip bv i = if i < 0 then invalid_arg "reset: negative index" else ( diff --git a/src/data/CCBV.mli b/src/data/CCBV.mli index d00747c2..ba3864c3 100644 --- a/src/data/CCBV.mli +++ b/src/data/CCBV.mli @@ -62,6 +62,10 @@ val get : t -> int -> bool val reset : t -> int -> unit (** Set i-th bit to 0, extending the bitvector if needed. *) +val set_bool : t -> int -> bool -> unit +(** Set or reset [i]-th bit. + @since NEXT_RELEASE *) + val flip : t -> int -> unit (** Flip i-th bit, extending the bitvector if needed. *)