interface FlexibleEnv
Allows for runtime expandable Environment.
This neglects type safety of R, but might be in fact way easier to use. TODO actually needed sealed class but it did not work
get |
abstract fun <T : Any> get(id: ResourceId<T>): Option<T> |
set |
abstract fun <T : Any> set(id: ResourceId<T>, t: T): FlexibleEnv |
create |
fun <T : Any> create(id: ResourceId<T>, t: T): FlexibleEnvfun <T : Any> create(t: T): FlexibleEnv |
empty |
fun empty(): FlexibleEnv |
with |
Add next type to env. fun <T : Any> FlexibleEnv.with(t: T): FlexibleEnvfun <T : Any> FlexibleEnv.with(id: ResourceId<T>, t: T): FlexibleEnv |
withTxProvider |
fun <R, G : TxProvider<R, G>> FlexibleEnv.withTxProvider(provider: TxProvider<R, G>): FlexibleEnv |
EnvLeaf |
object EnvLeaf : FlexibleEnv |
FlexSecurityProvider |
Provider of flex sec. class FlexSecurityProvider<USER, ROLE> : FlexibleEnv, SecurityProvider<USER, ROLE> |
WrappedEnv |
Node instance of flexibleEnv data class WrappedEnv<Y : Any> : FlexibleEnv |