diff --git a/build.gradle.kts b/build.gradle.kts index f2a9eac..3fbe7ba 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -15,7 +15,7 @@ buildscript { } group = "ru.landgrafhomyak.utility" -version = "0.4" +version = "0.5" repositories { mavenCentral() diff --git a/src/commonMain/kotlin/ru/landgrafhomyak/utility/reference_counter/ChildReferenceCounter.kt b/src/commonMain/kotlin/ru/landgrafhomyak/utility/reference_counter/ChildReferenceCounter.kt new file mode 100644 index 0000000..2510773 --- /dev/null +++ b/src/commonMain/kotlin/ru/landgrafhomyak/utility/reference_counter/ChildReferenceCounter.kt @@ -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) + } + } +} \ No newline at end of file diff --git a/src/commonMain/kotlin/ru/landgrafhomyak/utility/reference_counter/MayBeClosedReferenceCounter.kt b/src/commonMain/kotlin/ru/landgrafhomyak/utility/reference_counter/MayBeClosedReferenceCounter.kt index 9b0015a..466a669 100644 --- a/src/commonMain/kotlin/ru/landgrafhomyak/utility/reference_counter/MayBeClosedReferenceCounter.kt +++ b/src/commonMain/kotlin/ru/landgrafhomyak/utility/reference_counter/MayBeClosedReferenceCounter.kt @@ -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 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) + } } \ No newline at end of file