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" group = "ru.landgrafhomyak.utility"
version = "0.4" version = "0.5"
repositories { repositories {
mavenCentral() 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") @Suppress("LEAKED_IN_PLACE_LAMBDA", "WRONG_INVOCATION_KIND")
@JvmName("child_inheritErrMessage") @JvmName("child_inheritErrMessage")
public fun <R> child_inheritErrMessage(errExistRefs: String, scope: (MayBeClosedReferenceCounter) -> R): R { public fun <R> child_inheritErrMessage(errExistRefs: String, scope: (MayBeClosedReferenceCounter) -> R): R {
@ -128,4 +137,9 @@ public sealed class MayBeClosedReferenceCounter {
scope = scope scope = scope
) )
} }
@JvmName("newChild_inheritErrMessage")
public fun newChild_inheritErrMessage(): ChildReferenceCounter {
return this.newChild(this._errMessageClosed)
}
} }