aboutsummaryrefslogtreecommitdiffstats
path: root/lib/kernel/Lifecycle.mli
blob: a32319705333df8c64add82aaac7711b477689a6 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
class type lifecycle = object
  method reference : bool
  method release : unit
  method is_managed : bool
end

class type virtual controlled_lifecycle = object
  inherit lifecycle
  method virtual destroy : unit
end

class null : lifecycle
class exclusive : lifecycle
class virtual counted : controlled_lifecycle

(** stands for [inner], carrying what it carries, while holding a
    reference to [owner], so what [inner] reads outlives a release of
    the object that produced it. *)
class retaining : Protocols.Handle.t -> lifecycle -> object
  inherit lifecycle
  method destroy : unit
  method hash : Concepts.Hash.hash
  method protocols : Protocols.Handle.protocol list
end