@@ -89,18 +89,26 @@ public sealed class Cbor(
8989 return reader.decodeSerializableValue(deserializer)
9090 }
9191
92+ public fun <T > decodeFromCbor (deserializer : DeserializationStrategy <T >, element : CborElement ): T {
93+ val reader = StructuredCborReader (this , StructuredCborParser (element, configuration.verifyObjectTags))
94+ return reader.decodeSerializableValue(deserializer)
95+ }
9296
93- public fun <T > encodeToCbor (serializer : SerializationStrategy <T >, value : T ): CborElement {
97+ public fun <T > encodeToCbor (serializer : SerializationStrategy <T >, value : T ): CborElement {
9498 val writer = StructuredCborWriter (this )
9599 writer.encodeSerializableValue(serializer, value)
96- return writer.finalize()
100+ return writer.finalize()
97101 }
98102}
99103
100104@ExperimentalSerializationApi
101105public inline fun <reified T > Cbor.encodeToCbor (value : T ): CborElement =
102106 encodeToCbor(serializersModule.serializer(), value)
103107
108+ @ExperimentalSerializationApi
109+ public inline fun <reified T > Cbor.decodeFromCbor (element : CborElement ): T =
110+ decodeFromCbor(serializersModule.serializer(), element)
111+
104112@OptIn(ExperimentalSerializationApi ::class )
105113private class CborImpl (
106114 configuration : CborConfiguration ,
@@ -119,18 +127,20 @@ private class CborImpl(
119127public fun Cbor (from : Cbor = Cbor , builderAction : CborBuilder .() -> Unit ): Cbor {
120128 val builder = CborBuilder (from)
121129 builder.builderAction()
122- return CborImpl (CborConfiguration (
123- builder.encodeDefaults,
124- builder.ignoreUnknownKeys,
125- builder.encodeKeyTags,
126- builder.encodeValueTags,
127- builder.encodeObjectTags,
128- builder.verifyKeyTags,
129- builder.verifyValueTags,
130- builder.verifyObjectTags,
131- builder.useDefiniteLengthEncoding,
132- builder.preferCborLabelsOverNames,
133- builder.alwaysUseByteString),
130+ return CborImpl (
131+ CborConfiguration (
132+ builder.encodeDefaults,
133+ builder.ignoreUnknownKeys,
134+ builder.encodeKeyTags,
135+ builder.encodeValueTags,
136+ builder.encodeObjectTags,
137+ builder.verifyKeyTags,
138+ builder.verifyValueTags,
139+ builder.verifyObjectTags,
140+ builder.useDefiniteLengthEncoding,
141+ builder.preferCborLabelsOverNames,
142+ builder.alwaysUseByteString
143+ ),
134144 builder.serializersModule
135145 )
136146}
0 commit comments