Source file cb_set.ml

1
2
3
4
5
6
7
8
9
10
11
type cb = unit -> unit

type t = { cbs: cb Alist.t } [@@unboxed]

let create () : t = { cbs = Alist.make () }

let[@inline] register self f = Alist.add self.cbs f

let[@inline] trigger self = List.iter (fun f -> f ()) (Alist.get self.cbs)

let clear self : unit = ignore (Alist.pop_all self.cbs : _ list)