From 202e70a99ab6e134d6600f89d9f5d96d7be3f5e5 Mon Sep 17 00:00:00 2001 From: sergeych Date: Thu, 14 Aug 2025 01:36:37 +0300 Subject: [PATCH] less debug noise --- .../net/sergeych/lyng/obj/ObjInstance.kt | 3 --- .../net/sergeych/lyng/obj/ObjInstanceClass.kt | 1 - .../net/sergeych/lyng/obj/ObjIterable.kt | 14 +++++++++----- .../kotlin/net/sergeych/lyng/obj/ObjSet.kt | 2 +- .../kotlin/net/sergeych/lynon/LynonDecoder.kt | 1 - .../kotlin/net/sergeych/lynon/packer.kt | 18 ++++++++++++++++-- 6 files changed, 26 insertions(+), 13 deletions(-) diff --git a/lynglib/src/commonMain/kotlin/net/sergeych/lyng/obj/ObjInstance.kt b/lynglib/src/commonMain/kotlin/net/sergeych/lyng/obj/ObjInstance.kt index feea933..62b10b6 100644 --- a/lynglib/src/commonMain/kotlin/net/sergeych/lyng/obj/ObjInstance.kt +++ b/lynglib/src/commonMain/kotlin/net/sergeych/lyng/obj/ObjInstance.kt @@ -88,18 +88,15 @@ class ObjInstance(override val objClass: ObjClass) : Obj() { val vars = instanceVars.values.map { it.value } if( vars.isNotEmpty()) { encoder.encodeAnyList(scope, vars) - println("serialized state vars $vars") } } internal suspend fun deserializeStateVars(scope: Scope, decoder: LynonDecoder) { val localVars = instanceVars.values.toList() if( localVars.isNotEmpty() ) { - println("gonna read vars") val vars = decoder.decodeAnyList(scope) if (vars.size > instanceVars.size) scope.raiseIllegalArgument("serialized vars has bigger size than instance vars") - println("deser state vars $vars") for ((i, v) in vars.withIndex()) { localVars[i].value = v } diff --git a/lynglib/src/commonMain/kotlin/net/sergeych/lyng/obj/ObjInstanceClass.kt b/lynglib/src/commonMain/kotlin/net/sergeych/lyng/obj/ObjInstanceClass.kt index b01f52e..2760bc5 100644 --- a/lynglib/src/commonMain/kotlin/net/sergeych/lyng/obj/ObjInstanceClass.kt +++ b/lynglib/src/commonMain/kotlin/net/sergeych/lyng/obj/ObjInstanceClass.kt @@ -29,7 +29,6 @@ class ObjInstanceClass(val name: String) : ObjClass(name) { override suspend fun deserialize(scope: Scope, decoder: LynonDecoder, lynonType: LynonType?): Obj { val args = decoder.decodeAnyList(scope) - println("deserializing constructor $name, $args params") val actualSize = constructorMeta?.params?.size ?: 0 if( args.size > actualSize ) scope.raiseIllegalArgument("constructor $name has only $actualSize but serialized version has ${args.size}") diff --git a/lynglib/src/commonMain/kotlin/net/sergeych/lyng/obj/ObjIterable.kt b/lynglib/src/commonMain/kotlin/net/sergeych/lyng/obj/ObjIterable.kt index 7edab1b..f668e94 100644 --- a/lynglib/src/commonMain/kotlin/net/sergeych/lyng/obj/ObjIterable.kt +++ b/lynglib/src/commonMain/kotlin/net/sergeych/lyng/obj/ObjIterable.kt @@ -59,12 +59,16 @@ val ObjIterable by lazy { } addFn("toSet") { - val result = mutableSetOf() - val it = thisObj.invokeInstanceMethod(this, "iterator") - while (it.invokeInstanceMethod(this, "hasNext").toBool()) { - result += it.invokeInstanceMethod(this, "next") + if( thisObj.isInstanceOf(ObjSet.type) ) + thisObj + else { + val result = mutableSetOf() + val it = thisObj.invokeInstanceMethod(this, "iterator") + while (it.invokeInstanceMethod(this, "hasNext").toBool()) { + result += it.invokeInstanceMethod(this, "next") + } + ObjSet(result) } - ObjSet(result) } addFn("toMap") { diff --git a/lynglib/src/commonMain/kotlin/net/sergeych/lyng/obj/ObjSet.kt b/lynglib/src/commonMain/kotlin/net/sergeych/lyng/obj/ObjSet.kt index b1a1db4..7e538b6 100644 --- a/lynglib/src/commonMain/kotlin/net/sergeych/lyng/obj/ObjSet.kt +++ b/lynglib/src/commonMain/kotlin/net/sergeych/lyng/obj/ObjSet.kt @@ -109,7 +109,7 @@ class ObjSet(val set: MutableSet = mutableSetOf()) : Obj() { companion object { - val type = object : ObjClass("Set", ObjCollection) { + val type: ObjClass = object : ObjClass("Set", ObjCollection) { override suspend fun callOn(scope: Scope): Obj { return ObjSet(scope.args.list.toMutableSet()) } diff --git a/lynglib/src/commonMain/kotlin/net/sergeych/lynon/LynonDecoder.kt b/lynglib/src/commonMain/kotlin/net/sergeych/lynon/LynonDecoder.kt index b64d988..d7940cc 100644 --- a/lynglib/src/commonMain/kotlin/net/sergeych/lynon/LynonDecoder.kt +++ b/lynglib/src/commonMain/kotlin/net/sergeych/lynon/LynonDecoder.kt @@ -65,7 +65,6 @@ open class LynonDecoder(val bin: BitInput, val settings: LynonSettings = LynonSe private suspend fun decodeClassObj(scope: Scope): ObjClass { val className = decodeObject(scope, ObjString.type, null) as ObjString - println("expected class name $className") return scope.get(className.value)?.value?.let { if (it !is ObjClass) scope.raiseClassCastError("Expected obj class but got ${it::class.simpleName}") diff --git a/lynglib/src/commonMain/kotlin/net/sergeych/lynon/packer.kt b/lynglib/src/commonMain/kotlin/net/sergeych/lynon/packer.kt index faececb..d849efa 100644 --- a/lynglib/src/commonMain/kotlin/net/sergeych/lynon/packer.kt +++ b/lynglib/src/commonMain/kotlin/net/sergeych/lynon/packer.kt @@ -28,7 +28,7 @@ import net.sergeych.lyng.obj.ObjString object ObjLynonClass : ObjClass("Lynon") { - suspend fun encodeAny(scope: Scope, obj: Obj): Obj { + suspend fun encodeAny(scope: Scope, obj: Obj): ObjBitBuffer { val bout = MemoryBitOutput() val serializer = LynonEncoder(bout) serializer.encodeAny(scope, obj) @@ -51,4 +51,18 @@ object ObjLynonClass : ObjClass("Lynon") { decodeAny(this, requireOnlyArg()) } } -} \ No newline at end of file +} + +@Suppress("unused") +suspend fun lynonEncodeAny(scope: Scope, value: Obj): UByteArray = + (ObjLynonClass.encodeAny(scope, value)) + .bitArray.asUbyteArray() + +@Suppress("unused") +suspend fun lynonDecodeAny(scope: Scope, encoded: UByteArray): Obj = + ObjLynonClass.decodeAny( + scope, + ObjBitBuffer( + BitArray(encoded, 8) + ) + )