ChildReferenceCounter

This commit is contained in:
Andrew Golovashevich 2025-08-16 20:04:33 +03:00
parent 4b63563cbd
commit 0332e3eef7
3 changed files with 34 additions and 1 deletions

View File

@ -15,7 +15,7 @@ buildscript {
}
group = "ru.landgrafhomyak.utility"
version = "0.4"
version = "0.5"
repositories {
mavenCentral()

View File

@ -0,0 +1,19 @@
package ru.landgrafhomyak.utility.reference_counter
import kotlin.jvm.JvmName
public class ChildReferenceCounter : MayBeClosedReferenceCounter {
private val _parent: MayBeClosedReferenceCounter
internal constructor(parent: MayBeClosedReferenceCounter, errMessageClosed: String) : super(errMessageClosed) {
this._parent = parent
}
@Suppress("INAPPLICABLE_JVM_NAME")
@JvmName("close")
public override fun close(errExistRefs: String) {
this._parent.tryDecref {
super.close(errExistRefs)
}
}
}

View File

@ -112,6 +112,15 @@ public sealed class MayBeClosedReferenceCounter {
}
}
@JvmName("newChild")
public fun newChild(errMessageClosed: String): ChildReferenceCounter {
_Platform.jvm_assertNotNull(errMessageClosed, "param: errMessageClosed")
this.tryIncref {
return ChildReferenceCounter(this, errMessageClosed)
}
}
@Suppress("LEAKED_IN_PLACE_LAMBDA", "WRONG_INVOCATION_KIND")
@JvmName("child_inheritErrMessage")
public fun <R> child_inheritErrMessage(errExistRefs: String, scope: (MayBeClosedReferenceCounter) -> R): R {
@ -128,4 +137,9 @@ public sealed class MayBeClosedReferenceCounter {
scope = scope
)
}
@JvmName("newChild_inheritErrMessage")
public fun newChild_inheritErrMessage(): ChildReferenceCounter {
return this.newChild(this._errMessageClosed)
}
}