aboutsummaryrefslogtreecommitdiff
path: root/src/main/kotlin/util/data
diff options
context:
space:
mode:
authorLinnea Gräf <nea@nea.moe>2025-09-14 19:46:52 +0200
committerLinnea Gräf <nea@nea.moe>2025-09-14 19:46:52 +0200
commit0a96dd618acba15269627c7eae8a2291fb2dc84a (patch)
treef31a66cbd13cefbfb2d006f07d3ef3da1010f7e7 /src/main/kotlin/util/data
parent9abe9f46f04f188037687adb2740b32220ad21b2 (diff)
downloadFirmament-0a96dd618acba15269627c7eae8a2291fb2dc84a.tar.gz
Firmament-0a96dd618acba15269627c7eae8a2291fb2dc84a.tar.bz2
Firmament-0a96dd618acba15269627c7eae8a2291fb2dc84a.zip
snapshot
Diffstat (limited to 'src/main/kotlin/util/data')
-rw-r--r--src/main/kotlin/util/data/DataHolder.kt5
-rw-r--r--src/main/kotlin/util/data/IDataHolder.kt20
2 files changed, 12 insertions, 13 deletions
diff --git a/src/main/kotlin/util/data/DataHolder.kt b/src/main/kotlin/util/data/DataHolder.kt
index 9f21125..c138d78 100644
--- a/src/main/kotlin/util/data/DataHolder.kt
+++ b/src/main/kotlin/util/data/DataHolder.kt
@@ -1,11 +1,6 @@
package moe.nea.firmament.util.data
-import java.nio.file.Path
import kotlinx.serialization.KSerializer
-import kotlin.io.path.exists
-import kotlin.io.path.readText
-import kotlin.io.path.writeText
-import moe.nea.firmament.Firmament
import moe.nea.firmament.gui.config.storage.ConfigStorageClass
abstract class DataHolder<T>(
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