From e9b9ed1d9252edcbd9bf531a850f2f9a65bfdd00 Mon Sep 17 00:00:00 2001 From: Simon Cruanes Date: Fri, 22 Sep 2017 17:52:24 +0200 Subject: [PATCH] add `CCRef.swap` --- src/core/CCRef.ml | 5 +++++ src/core/CCRef.mli | 4 ++++ 2 files changed, 9 insertions(+) diff --git a/src/core/CCRef.ml b/src/core/CCRef.ml index 5fb260b0..44eab344 100644 --- a/src/core/CCRef.ml +++ b/src/core/CCRef.ml @@ -32,6 +32,11 @@ let compare f r1 r2 = f !r1 !r2 let equal f r1 r2 = f !r1 !r2 +let swap a b = + let x = !a in + a := !b; + b := x + let to_list r = [!r] let to_seq r yield = yield !r diff --git a/src/core/CCRef.mli b/src/core/CCRef.mli index 4a488600..ed7fc05a 100644 --- a/src/core/CCRef.mli +++ b/src/core/CCRef.mli @@ -31,6 +31,10 @@ val get_then_incr : int t -> int (** [get_then_incr r] increments [r] and returns its old value, think [r++] @since 0.17 *) +val swap : 'a t -> 'a t -> unit +(** Swap values. + @since NEXT_RELEASE *) + val compare : 'a ord -> 'a t ord val equal : 'a eq -> 'a t eq