mirror of
https://github.com/c-cube/sidekick.git
synced 2025-12-08 20:25:31 -05:00
fix: make it compile again
This commit is contained in:
parent
c8eb1ec29e
commit
5372170733
4 changed files with 29 additions and 2 deletions
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue