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
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
|
|
} |