From ef9e22b51c912d1a92954937bf9c32116eb042f3 Mon Sep 17 00:00:00 2001 From: DBotThePony Date: Fri, 30 Dec 2022 16:25:15 +0700 Subject: [PATCH] =?UTF-8?q?=D0=BC=D0=BC=D0=BC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../kstarbound/io/KConcreteTypeAdapter.kt | 22 +++++++++++++------ 1 file changed, 15 insertions(+), 7 deletions(-) diff --git a/src/main/kotlin/ru/dbotthepony/kstarbound/io/KConcreteTypeAdapter.kt b/src/main/kotlin/ru/dbotthepony/kstarbound/io/KConcreteTypeAdapter.kt index b5efc66e..e029af8d 100644 --- a/src/main/kotlin/ru/dbotthepony/kstarbound/io/KConcreteTypeAdapter.kt +++ b/src/main/kotlin/ru/dbotthepony/kstarbound/io/KConcreteTypeAdapter.kt @@ -44,8 +44,8 @@ private fun resolveBound(bound: Class, stringAdapter: TypeAdapter } } -private class ListAdapter(private val bound: Class, private val stringAdapter: TypeAdapter) : TypeAdapter?>() { - private val resolvedBound by lazy { resolveBound(bound, stringAdapter) } +private class ListAdapter(private val type: Class, private val stringAdapter: TypeAdapter) : TypeAdapter?>() { + private val resolvedBound by lazy { resolveBound(type, stringAdapter) } override fun write(out: JsonWriter, value: List?) { out.beginArray() @@ -78,9 +78,9 @@ private class ListAdapter(private val bound: Class, private val stringAdap } } -private class MapAdapter(private val boundKey: Class, private val boundValue: Class, private val stringAdapter: TypeAdapter) : TypeAdapter?>() { - private val resolvedKey by lazy { resolveBound(boundKey, stringAdapter) } - private val resolvedValue by lazy { resolveBound(boundValue, stringAdapter) } +private class MapAdapter(private val keyType: Class, private val valueType: Class, private val stringAdapter: TypeAdapter) : TypeAdapter?>() { + private val resolvedKey by lazy { resolveBound(keyType, stringAdapter) } + private val resolvedValue by lazy { resolveBound(valueType, stringAdapter) } override fun write(out: JsonWriter, value: Map?) { out.beginArray() @@ -120,8 +120,8 @@ private class MapAdapter(private val boundKey: Class, private val bound } } -private class StringMapAdapter(private val bound: Class, private val stringAdapter: TypeAdapter, private val interner: Interner) : TypeAdapter?>() { - private val resolvedBound by lazy { resolveBound(bound, stringAdapter) } +private class StringMapAdapter(private val type: Class, private val stringAdapter: TypeAdapter, private val interner: Interner) : TypeAdapter?>() { + private val resolvedBound by lazy { resolveBound(type, stringAdapter) } override fun write(out: JsonWriter, value: Map?) { val resolvedBound = resolvedBound @@ -601,6 +601,14 @@ class KConcreteTypeAdapter private constructor( return this } + fun makeListAdapter(type: Class): TypeAdapter?> { + return ListAdapter(type, internedStringAdapter) + } + + fun makeObjectAdapter(type: Class): TypeAdapter?> { + return StringMapAdapter(type, internedStringAdapter, stringInterner) + } + /** * Добавляет поле, которое содержит список значений V (без null). *