ChildReferenceCounter
This commit is contained in:
parent
4b63563cbd
commit
0332e3eef7
@ -15,7 +15,7 @@ buildscript {
|
||||
}
|
||||
|
||||
group = "ru.landgrafhomyak.utility"
|
||||
version = "0.4"
|
||||
version = "0.5"
|
||||
|
||||
repositories {
|
||||
mavenCentral()
|
||||
|
||||
@ -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)
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -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)
|
||||
}
|
||||
}
|
||||
Loading…
Reference in New Issue
Block a user