Descriptor in SchemeSpec
This commit is contained in:
parent
3ab3f2766c
commit
d68fbfd8a5
@ -2,7 +2,7 @@ plugins {
|
|||||||
id("ru.mipt.npm.project")
|
id("ru.mipt.npm.project")
|
||||||
}
|
}
|
||||||
|
|
||||||
val dataforgeVersion by extra("0.2.0-dev-6")
|
val dataforgeVersion by extra("0.2.0-dev-7")
|
||||||
|
|
||||||
val bintrayRepo by extra("dataforge")
|
val bintrayRepo by extra("dataforge")
|
||||||
val githubProject by extra("dataforge-core")
|
val githubProject by extra("dataforge-core")
|
||||||
|
@ -479,11 +479,11 @@ public class hep/dataforge/meta/Scheme : hep/dataforge/meta/Configurable, hep/da
|
|||||||
public fun <init> ()V
|
public fun <init> ()V
|
||||||
public fun <init> (Lhep/dataforge/meta/Config;Lhep/dataforge/meta/ItemProvider;Lhep/dataforge/meta/descriptors/NodeDescriptor;)V
|
public fun <init> (Lhep/dataforge/meta/Config;Lhep/dataforge/meta/ItemProvider;Lhep/dataforge/meta/descriptors/NodeDescriptor;)V
|
||||||
public synthetic fun <init> (Lhep/dataforge/meta/Config;Lhep/dataforge/meta/ItemProvider;Lhep/dataforge/meta/descriptors/NodeDescriptor;ILkotlin/jvm/internal/DefaultConstructorMarker;)V
|
public synthetic fun <init> (Lhep/dataforge/meta/Config;Lhep/dataforge/meta/ItemProvider;Lhep/dataforge/meta/descriptors/NodeDescriptor;ILkotlin/jvm/internal/DefaultConstructorMarker;)V
|
||||||
public fun getConfig ()Lhep/dataforge/meta/Config;
|
public final fun getConfig ()Lhep/dataforge/meta/Config;
|
||||||
public final fun getDefaultItem (Lhep/dataforge/names/Name;)Lhep/dataforge/meta/MetaItem;
|
public final fun getDefaultItem (Lhep/dataforge/names/Name;)Lhep/dataforge/meta/MetaItem;
|
||||||
public fun getDefaultLayer ()Lhep/dataforge/meta/Meta;
|
public fun getDefaultLayer ()Lhep/dataforge/meta/Meta;
|
||||||
public synthetic fun getDescriptor ()Lhep/dataforge/meta/descriptors/ItemDescriptor;
|
public synthetic fun getDescriptor ()Lhep/dataforge/meta/descriptors/ItemDescriptor;
|
||||||
public fun getDescriptor ()Lhep/dataforge/meta/descriptors/NodeDescriptor;
|
public final fun getDescriptor ()Lhep/dataforge/meta/descriptors/NodeDescriptor;
|
||||||
public fun getItem (Lhep/dataforge/names/Name;)Lhep/dataforge/meta/MetaItem;
|
public fun getItem (Lhep/dataforge/names/Name;)Lhep/dataforge/meta/MetaItem;
|
||||||
public final fun isEmpty ()Z
|
public final fun isEmpty ()Z
|
||||||
public fun setItem (Lhep/dataforge/names/Name;Lhep/dataforge/meta/MetaItem;)V
|
public fun setItem (Lhep/dataforge/names/Name;Lhep/dataforge/meta/MetaItem;)V
|
||||||
@ -499,9 +499,11 @@ public final class hep/dataforge/meta/SchemeKt {
|
|||||||
public static synthetic fun toScheme$default (Lhep/dataforge/meta/Meta;Lhep/dataforge/meta/Specification;Lkotlin/jvm/functions/Function1;ILjava/lang/Object;)Lhep/dataforge/meta/Configurable;
|
public static synthetic fun toScheme$default (Lhep/dataforge/meta/Meta;Lhep/dataforge/meta/Specification;Lkotlin/jvm/functions/Function1;ILjava/lang/Object;)Lhep/dataforge/meta/Configurable;
|
||||||
}
|
}
|
||||||
|
|
||||||
public class hep/dataforge/meta/SchemeSpec : hep/dataforge/meta/Specification {
|
public class hep/dataforge/meta/SchemeSpec : hep/dataforge/meta/Specification, hep/dataforge/meta/descriptors/Described {
|
||||||
public fun <init> (Lkotlin/jvm/functions/Function0;)V
|
public fun <init> (Lkotlin/jvm/functions/Function0;)V
|
||||||
public fun <init> (Lkotlin/jvm/functions/Function2;)V
|
public fun <init> (Lkotlin/jvm/functions/Function3;)V
|
||||||
|
public synthetic fun getDescriptor ()Lhep/dataforge/meta/descriptors/ItemDescriptor;
|
||||||
|
public fun getDescriptor ()Lhep/dataforge/meta/descriptors/NodeDescriptor;
|
||||||
public synthetic fun wrap (Lhep/dataforge/meta/Meta;Lhep/dataforge/meta/ItemProvider;)Lhep/dataforge/meta/MutableItemProvider;
|
public synthetic fun wrap (Lhep/dataforge/meta/Meta;Lhep/dataforge/meta/ItemProvider;)Lhep/dataforge/meta/MutableItemProvider;
|
||||||
public fun wrap (Lhep/dataforge/meta/Meta;Lhep/dataforge/meta/ItemProvider;)Lhep/dataforge/meta/Scheme;
|
public fun wrap (Lhep/dataforge/meta/Meta;Lhep/dataforge/meta/ItemProvider;)Lhep/dataforge/meta/Scheme;
|
||||||
}
|
}
|
||||||
|
@ -12,12 +12,16 @@ import hep.dataforge.names.asName
|
|||||||
public open class Scheme(
|
public open class Scheme(
|
||||||
config: Config = Config(),
|
config: Config = Config(),
|
||||||
internal var default: ItemProvider? = null,
|
internal var default: ItemProvider? = null,
|
||||||
override val descriptor: NodeDescriptor? = null,
|
descriptor: NodeDescriptor? = null,
|
||||||
) : Configurable, Described, MetaRepr {
|
) : Configurable, Described, MetaRepr {
|
||||||
|
|
||||||
override var config: Config = config
|
override var config: Config = config
|
||||||
internal set
|
internal set
|
||||||
|
|
||||||
|
override var descriptor: NodeDescriptor? = descriptor
|
||||||
|
internal set
|
||||||
|
|
||||||
|
|
||||||
public fun getDefaultItem(name: Name): MetaItem<*>? {
|
public fun getDefaultItem(name: Name): MetaItem<*>? {
|
||||||
return default?.getItem(name) ?: descriptor?.get(name)?.defaultItem()
|
return default?.getItem(name) ?: descriptor?.get(name)?.defaultItem()
|
||||||
}
|
}
|
||||||
@ -79,13 +83,14 @@ public inline operator fun <T : Scheme> T.invoke(block: T.() -> Unit): T = apply
|
|||||||
* A specification for simplified generation of wrappers
|
* A specification for simplified generation of wrappers
|
||||||
*/
|
*/
|
||||||
public open class SchemeSpec<T : Scheme>(
|
public open class SchemeSpec<T : Scheme>(
|
||||||
private val builder: (config: Config, defaultProvider: ItemProvider) -> T,
|
private val builder: (config: Config, defaultProvider: ItemProvider, descriptor: NodeDescriptor?) -> T,
|
||||||
) : Specification<T> {
|
) : Specification<T>, Described {
|
||||||
|
|
||||||
public constructor(emptyBuilder: () -> T) : this({ config: Config, defaultProvider: ItemProvider ->
|
public constructor(emptyBuilder: () -> T) : this({ config: Config, defaultProvider: ItemProvider, descriptor: NodeDescriptor? ->
|
||||||
emptyBuilder().apply {
|
emptyBuilder().apply {
|
||||||
this.config = config
|
this.config = config
|
||||||
this.default = defaultProvider
|
this.default = defaultProvider
|
||||||
|
this.descriptor = descriptor
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
@ -93,10 +98,13 @@ public open class SchemeSpec<T : Scheme>(
|
|||||||
* If the provided [Meta] is a [Config] use it as a scheme base, otherwise use it as default.
|
* If the provided [Meta] is a [Config] use it as a scheme base, otherwise use it as default.
|
||||||
*/
|
*/
|
||||||
override fun wrap(meta: Meta, defaultProvider: ItemProvider): T = if (meta is Config) {
|
override fun wrap(meta: Meta, defaultProvider: ItemProvider): T = if (meta is Config) {
|
||||||
builder(meta, defaultProvider)
|
builder(meta, defaultProvider, descriptor)
|
||||||
} else {
|
} else {
|
||||||
builder(Config(), meta.withDefault(defaultProvider))
|
builder(Config(), meta.withDefault(defaultProvider), descriptor)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//TODO Generate descriptor from Scheme class
|
||||||
|
override val descriptor: NodeDescriptor? get() = null
|
||||||
}
|
}
|
||||||
|
|
||||||
///**
|
///**
|
||||||
|
Loading…
Reference in New Issue
Block a user