Skip to content

Commit e159719

Browse files
committed
feat(BV): add init
1 parent b24feaf commit e159719

File tree

2 files changed

+13
-1
lines changed

2 files changed

+13
-1
lines changed

src/data/CCBV.ml

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,7 @@ let bytes_length_of_size size =
6767
else
6868
div_ size + 1
6969

70-
let create ~size default =
70+
let create ~size default : t =
7171
if size = 0 then
7272
empty ()
7373
else (
@@ -210,6 +210,13 @@ let[@inline] set bv i =
210210
(unsafe_get_ bv.b idx_bucket lor (1 lsl idx_in_byte))
211211
)
212212

213+
let init size f : t =
214+
let v = create ~size false in
215+
for i = 0 to size - 1 do
216+
if f i then set v i
217+
done;
218+
v
219+
213220
let[@inline] reset bv i =
214221
if i < 0 then
215222
invalid_arg "reset: negative index"

src/data/CCBV.mli

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,11 @@ val create : size:int -> bool -> t
2323
(** Create a bitvector of given size, with given default value.
2424
Length of result is [size]. *)
2525

26+
val init : int -> (int -> bool) -> t
27+
(** [init len f] initializes a bitvector of length [len], where bit [i]
28+
is true iff [f i] is.
29+
@since NEXT_RELEASE *)
30+
2631
val copy : t -> t
2732
(** Copy of bitvector. *)
2833

0 commit comments

Comments
 (0)