All Downloads are FREE. Search and download functionalities are using the official Maven repository.

commonMain.entity.optional.delegate.OptionalBooleanDelegate.kt Maven / Gradle / Ivy

The newest version!
package dev.kord.common.entity.optional.delegate

import dev.kord.common.entity.optional.OptionalBoolean
import dev.kord.common.entity.optional.optional
import dev.kord.common.entity.optional.value
import kotlin.jvm.JvmName
import kotlin.properties.ReadWriteProperty
import kotlin.reflect.KMutableProperty0
import kotlin.reflect.KProperty

public fun KMutableProperty0.delegate(): ReadWriteProperty =
    object : ReadWriteProperty {

        override fun getValue(thisRef: Any?, property: KProperty<*>): Boolean? {
            return [email protected]().value
        }

        override fun setValue(thisRef: Any?, property: KProperty<*>, value: Boolean?) {
            val optional = if (value == null) OptionalBoolean.Missing
            else OptionalBoolean.Value(value)
            [email protected](optional)
        }

    }

@JvmName("provideNullableDelegate")
public fun  KMutableProperty0.delegate(): ReadWriteProperty =
    object : ReadWriteProperty {

        override fun getValue(thisRef: T, property: KProperty<*>): Boolean? {
            return [email protected]().value
        }

        override fun setValue(thisRef: T, property: KProperty<*>, value: Boolean?) {
            [email protected](value?.optional())
        }

    }




© 2015 - 2024 Weber Informatics LLC | Privacy Policy