aboutsummaryrefslogtreecommitdiffstats
path: root/lib/kernel/Lifecycle.ml
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--lib/kernel/Lifecycle.ml52
1 files changed, 22 insertions, 30 deletions
diff --git a/lib/kernel/Lifecycle.ml b/lib/kernel/Lifecycle.ml
index 772cb6e..bf0b544 100644
--- a/lib/kernel/Lifecycle.ml
+++ b/lib/kernel/Lifecycle.ml
@@ -8,33 +8,25 @@ class type virtual controlled_lifecycle = object
method virtual destroy : unit
end
-class null = object
- method reference = true
- method release = ()
-end
-
-class virtual counted = object (self)
- val references = Atomic.make 1
-
- method virtual destroy : unit
-
- method reference =
- Atomic.incr references;
- true
-
- method release =
- if Atomic.fetch_and_add references (-1) = 1 then
- self#destroy
-end
-
-class retaining inner (owner : lifecycle) = object
- inherit counted
- initializer ignore owner#reference
-
- method destroy =
- Protocols.Handle.release inner;
- owner#release
-
- method hash = Protocols.Handle.hash inner
- method protocols = Protocols.Handle.protocols inner
-end
+class null =
+ object
+ method reference = true
+ method release = ()
+ end
+
+class virtual counted =
+ object (self)
+ val references = Atomic.make 1
+ method virtual destroy : unit
+ method reference = Atomic.incr references; true
+ method release = if Atomic.fetch_and_add references (-1) = 1 then self#destroy
+ end
+
+class retaining inner (owner : lifecycle) =
+ object
+ inherit counted
+ initializer ignore owner#reference
+ method destroy = Protocols.Handle.release inner; owner#release
+ method hash = Protocols.Handle.hash inner
+ method protocols = Protocols.Handle.protocols inner
+ end