diff options
Diffstat (limited to 'src/main/kotlin/util/data/IDataHolder.kt')
| -rw-r--r-- | src/main/kotlin/util/data/IDataHolder.kt | 20 |
1 files changed, 12 insertions, 8 deletions
diff --git a/src/main/kotlin/util/data/IDataHolder.kt b/src/main/kotlin/util/data/IDataHolder.kt index 81198ee..541fc1b 100644 --- a/src/main/kotlin/util/data/IDataHolder.kt +++ b/src/main/kotlin/util/data/IDataHolder.kt @@ -9,23 +9,27 @@ import moe.nea.firmament.gui.config.storage.ConfigStorageClass import moe.nea.firmament.gui.config.storage.FirmamentConfigLoader import moe.nea.firmament.util.SBData -sealed interface IDataHolder<T> { +sealed class IDataHolder<T> { fun markDirty() { FirmamentConfigLoader.markDirty(this) } - fun keys(): Collection<T> - fun saveTo(key: T): JsonObject - fun loadFrom(key: T, jsonObject: JsonObject) - fun clear() - val storageClass: ConfigStorageClass + init { + require(this.javaClass.getAnnotation(Config::class.java) != null) + } + + abstract fun keys(): Collection<T> + abstract fun saveTo(key: T): JsonObject + abstract fun loadFrom(key: T, jsonObject: JsonObject) + abstract fun clear() + abstract val storageClass: ConfigStorageClass } open class ProfileKeyedConfig<T>( val prefix: String, val serializer: KSerializer<T>, val default: () -> T, -) : IDataHolder<UUID> { +) : IDataHolder<UUID>() { override val storageClass: ConfigStorageClass get() = ConfigStorageClass.PROFILE @@ -65,7 +69,7 @@ abstract class GenericConfig<T>( val prefix: String, val serializer: KSerializer<T>, val default: () -> T, -) : IDataHolder<Unit> { +) : IDataHolder<Unit>() { private var _data: T? = null |
