You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

27 lines
1005 B
Kotlin

package me.eater.hefbrug.dsl.context
import me.eater.hefbrug.definition.DefinitionKey
import me.eater.hefbrug.definition.DefinitionSkeleton
import me.eater.hefbrug.dsl.annotation.HefbrugDSL
import me.eater.hefbrug.state.AbstractState
import me.eater.hefbrug.state.property.ProxyDelegate
import kotlin.properties.ReadWriteProperty
import kotlin.reflect.KMutableProperty0
@HefbrugDSL
open class DefinitionContext<S : AbstractState>(private val definition: DefinitionSkeleton<S, DefinitionContextSkeleton<S>>) :
DefinitionContextSkeleton<S> {
protected fun <T> proxy(reference: KMutableProperty0<T>): ReadWriteProperty<DefinitionContext<*>, T> =
ProxyDelegate(reference)
protected val state: S
get() = definition.state
override val after: MutableSet<DefinitionKey>
get() = definition.after
override val before: MutableSet<DefinitionKey>
get() = definition.before
override val require: MutableSet<DefinitionKey>
get() = definition.require
}