From e3d0aabd0f7b6ab45c24f812845f633fe8141101 Mon Sep 17 00:00:00 2001 From: Andrew Golovashevich Date: Wed, 26 Mar 2025 01:57:41 +0300 Subject: [PATCH] isClosed property --- .../reference_counter/CloseableReferenceCounter.kt | 2 ++ .../reference_counter/CloseableReferenceCounter_Debug.kt | 8 +++++++- 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/src/commonMain/kotlin/ru/landrafhomyak/utility/reference_counter/CloseableReferenceCounter.kt b/src/commonMain/kotlin/ru/landrafhomyak/utility/reference_counter/CloseableReferenceCounter.kt index 15cfee4..fbd4386 100644 --- a/src/commonMain/kotlin/ru/landrafhomyak/utility/reference_counter/CloseableReferenceCounter.kt +++ b/src/commonMain/kotlin/ru/landrafhomyak/utility/reference_counter/CloseableReferenceCounter.kt @@ -53,6 +53,8 @@ public class CloseableReferenceCounter { return safeAutoClose2(onSuccess = this::decref, action = block) } + public val isClosed: Boolean get() = this._value.get() < 0 + public fun close(errExistRefs: String) { _Platform.jvm_assertNotNull(errExistRefs, "param: errExistRefs") val state = _CloseableReferenceCounter_LowLevel.compareAndExchange(this._value, 0, _CloseableReferenceCounter_LowLevel.CLOSED_STATE_VALUE) diff --git a/src/commonMain/kotlin/ru/landrafhomyak/utility/reference_counter/CloseableReferenceCounter_Debug.kt b/src/commonMain/kotlin/ru/landrafhomyak/utility/reference_counter/CloseableReferenceCounter_Debug.kt index c1f9f19..a9471a3 100644 --- a/src/commonMain/kotlin/ru/landrafhomyak/utility/reference_counter/CloseableReferenceCounter_Debug.kt +++ b/src/commonMain/kotlin/ru/landrafhomyak/utility/reference_counter/CloseableReferenceCounter_Debug.kt @@ -37,7 +37,6 @@ public class CloseableReferenceCounter_Debug { } - @Suppress("NOTHING_TO_INLINE") private inline fun _throwErrors(valueToCheck: Long) { when { @@ -100,6 +99,13 @@ public class CloseableReferenceCounter_Debug { return safeAutoClose2(onSuccess = this::decref, action = block) } + public val isClosed: Boolean + get() { + val state = this._value.get() + this._throwErrors(state) + return state < 0; + } + public fun close(errExistRefs: String) { _Platform.jvm_assertNotNull(errExistRefs, "param: errExistRefs") val state = _CloseableReferenceCounter_LowLevel.compareAndExchange(this._value, 0, _CloseableReferenceCounter_LowLevel.CLOSED_STATE_VALUE)