aboutsummaryrefslogtreecommitdiffstats
path: root/lib/kernel/Lifecycle.ml
diff options
context:
space:
mode:
authorMarcos Magueta <maguetamarcos@gmail.com>2026-10-11 00:17:53 -0300
committerMarcos Magueta <maguetamarcos@gmail.com>2026-10-11 00:17:53 -0300
commit470491974d1498a1982a4e4b3560370bdf3d8c27 (patch)
treeba4208b73b3f921545df4e0101747f083d8c0602 /lib/kernel/Lifecycle.ml
parent0161187d843c84011749139a85c0eb31685bbc4c (diff)
parent90e41279094c26e6fcc93966708374b8ceba80e4 (diff)
downloadRNT-470491974d1498a1982a4e4b3560370bdf3d8c27.tar.gz
RNT-470491974d1498a1982a4e4b3560370bdf3d8c27.zip
merge lifecycle-ergonomics and rework modes and contain checks
Diffstat (limited to 'lib/kernel/Lifecycle.ml')
-rw-r--r--lib/kernel/Lifecycle.ml4
1 files changed, 4 insertions, 0 deletions
diff --git a/lib/kernel/Lifecycle.ml b/lib/kernel/Lifecycle.ml
index ac6bb20..4fb12b9 100644
--- a/lib/kernel/Lifecycle.ml
+++ b/lib/kernel/Lifecycle.ml
@@ -1,6 +1,7 @@
class type lifecycle = object
method reference : bool
method release : unit
+ method is_managed : bool
end
class type virtual controlled_lifecycle = object
@@ -12,6 +13,7 @@ class null =
object
method reference = true
method release = ()
+ method is_managed = false
end
class exclusive =
@@ -19,6 +21,7 @@ class exclusive =
val taken = Atomic.make false
method reference = Atomic.compare_and_set taken false true
method release = Atomic.set taken false
+ method is_managed = true
end
class virtual counted =
@@ -27,6 +30,7 @@ class virtual counted =
method virtual destroy : unit
method reference = Atomic.incr references; true
method release = if Atomic.fetch_and_add references (-1) = 1 then self#destroy
+ method is_managed = true
end
class retaining inner (owner : lifecycle) =