aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/main/kotlin/com/romangraef/jrconfig/Config.kt8
1 files changed, 8 insertions, 0 deletions
diff --git a/src/main/kotlin/com/romangraef/jrconfig/Config.kt b/src/main/kotlin/com/romangraef/jrconfig/Config.kt
index 1a1108b..d49bf1f 100644
--- a/src/main/kotlin/com/romangraef/jrconfig/Config.kt
+++ b/src/main/kotlin/com/romangraef/jrconfig/Config.kt
@@ -6,6 +6,7 @@ typealias ConfigVariableProvider<T> = (ConfigSaveLoadProvider, String) -> Config
object Config {
private var configProvider = mutableListOf<ConfigProvider>()
+ private val _usedPoints = mutableListOf<String>()
private val map: MutableMap<Class<*>, ConfigVariableProvider<*>> = mutableMapOf()
private val proxyProvider: ConfigSaveLoadProvider = object : ConfigSaveLoadProvider {
@@ -27,16 +28,23 @@ object Config {
map[String::class.java] = ::StringVariable
}
+ /**
+ * A list of all registered points. This list is not necessarily complete.
+ */
+ val usedPoints
+ get() = _usedPoints.toList()
@Suppress("UNCHECKED_CAST")
@JvmStatic
fun <T> get(clazz: Class<out T>, point: String): ConfigVariable<T> {
+ _usedPoints.add(point)
return (map[clazz] as? ConfigVariableProvider<T>)?.invoke(proxyProvider, point)
?: throw ConfigMissingProviderException(clazz)
}
@JvmStatic
fun <T : Enum<T>> getEnum(enumClass: Class<T>, point: String): ConfigVariable<T> {
+ _usedPoints.add(point)
return EnumVariable(enumClass, proxyProvider, point)
}