aboutsummaryrefslogtreecommitdiffstats
path: root/lib/kernel/Lifecycle.mli
blob: 12964b077e465a7834095cb1b8d7bf46c5023843 (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
class type lifecycle = object
  method reference : bool
  method release : unit
end

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

class null : 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 to_string : string
  method destroy : unit
  method hash : Concepts.Hash.hash
  method protocols : Protocols.Handle.protocol list
end