fix: make it compile again

This commit is contained in:
Simon Cruanes 2021-08-20 18:18:14 -04:00
parent c8eb1ec29e
commit 5372170733
No known key found for this signature in database
GPG key ID: 4AC01D0849AA62B6
4 changed files with 29 additions and 2 deletions

View file

@ -106,7 +106,6 @@ let prepend v ~into : unit =
Array.blit v.data 0 into.data 0 v.sz;
)
let filter_in_place f vec =
let i = ref 0 in
while !i < size vec do

View file

@ -18,6 +18,17 @@ let[@inline] shrink self n = if n < self.sz then self.sz <- n
let[@inline] size self = self.sz
let[@inline] is_empty self = self.sz = 0
let[@inline] fast_remove t i =
assert (i>= 0 && i < t.sz);
A.unsafe_set t.data i @@ A.unsafe_get t.data (t.sz - 1);
t.sz <- t.sz - 1
let filter_in_place f vec =
let i = ref 0 in
while !i < size vec do
if f (Int32.to_int (A.unsafe_get vec.data !i)) then incr i else fast_remove vec !i
done
(* ensure capacity is [new_cap] *)
let resize_cap_ self new_cap =
assert (A.dim self.data < new_cap);

View file

@ -18,6 +18,17 @@ let[@inline] shrink self n = if n < self.sz then self.sz <- n
let[@inline] size self = self.sz
let[@inline] is_empty self = self.sz = 0
let[@inline] fast_remove t i =
assert (i>= 0 && i < t.sz);
A.unsafe_set t.data i @@ A.unsafe_get t.data (t.sz - 1);
t.sz <- t.sz - 1
let filter_in_place f vec =
let i = ref 0 in
while !i < size vec do
if f (A.unsafe_get vec.data !i) then incr i else fast_remove vec !i
done
(* ensure capacity is [new_cap] *)
let resize_cap_ self new_cap =
assert (A.dim self.data < new_cap);

View file

@ -13,6 +13,12 @@ module type S = sig
val push : t -> elt -> unit
val fast_remove : t -> int -> unit
(** Remove element at index [i] without preserving order
(swap with last element) *)
val filter_in_place : (elt -> bool) -> t -> unit
val pop : t -> elt
val get : t -> int -> elt
@ -21,7 +27,7 @@ module type S = sig
val shrink : t -> int -> unit
val iter : f:(int -> unit) -> t -> unit
val iter : f:(elt -> unit) -> t -> unit
val iteri : f:(int -> elt -> unit) -> t -> unit
val to_iter : t -> elt Iter.t