Source file ref_intf.ml

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
open! Core

module type T = sig
  type elt : float64
  type t

  val create : elt -> t
  val create_local : elt -> local_ t [@@zero_alloc]
  val create_zero : unit -> t
  val get : local_ t -> elt [@@zero_alloc]
  val set : local_ t -> elt -> unit [@@zero_alloc]
  val add : local_ t -> elt -> unit [@@zero_alloc]

  module O : sig
    val ref : elt -> local_ t [@@zero_alloc]
    val ( ! ) : local_ t -> elt [@@zero_alloc]
    val ( := ) : local_ t -> elt -> unit [@@zero_alloc]
    val ( += ) : local_ t -> elt -> unit [@@zero_alloc]
  end
end