From adfe52bf1f11862d67a5e5ad8486dd278c87fdc1 Mon Sep 17 00:00:00 2001 From: Simon Cruanes Date: Wed, 26 Oct 2022 23:03:36 -0400 Subject: [PATCH] utils --- src/util/Util.ml | 7 +++++++ src/util/Util.mli | 1 + 2 files changed, 8 insertions(+) diff --git a/src/util/Util.ml b/src/util/Util.ml index 678317b2..8513f088 100644 --- a/src/util/Util.ml +++ b/src/util/Util.ml @@ -44,6 +44,13 @@ let lazy_map2 f x y = (let (lazy x) = x and (lazy y) = y in f x y) +let[@inline] swap_array a i j : unit = + if i != j then ( + let tmp = a.(i) in + a.(i) <- a.(j); + a.(j) <- tmp + ) + let setup_gc () = let g = Gc.get () in Gc.set diff --git a/src/util/Util.mli b/src/util/Util.mli index 5b785698..2353ed04 100644 --- a/src/util/Util.mli +++ b/src/util/Util.mli @@ -17,6 +17,7 @@ val array_to_list_map : ('a -> 'b) -> 'a array -> 'b list val lazy_map : ('a -> 'b) -> 'a lazy_t -> 'b lazy_t val lazy_map2 : ('a -> 'b -> 'c) -> 'a lazy_t -> 'b lazy_t -> 'c lazy_t val array_iteri2 : f:(int -> 'a -> 'b -> unit) -> 'a array -> 'b array -> unit +val swap_array : 'a array -> int -> int -> unit val setup_gc : unit -> unit (** Change parameters of the GC *)