@@ -89,18 +89,26 @@ public sealed class Cbor(
89
89
return reader.decodeSerializableValue(deserializer)
90
90
}
91
91
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
+ }
92
96
93
- public fun <T > encodeToCbor (serializer : SerializationStrategy <T >, value : T ): CborElement {
97
+ public fun <T > encodeToCbor (serializer : SerializationStrategy <T >, value : T ): CborElement {
94
98
val writer = StructuredCborWriter (this )
95
99
writer.encodeSerializableValue(serializer, value)
96
- return writer.finalize()
100
+ return writer.finalize()
97
101
}
98
102
}
99
103
100
104
@ExperimentalSerializationApi
101
105
public inline fun <reified T > Cbor.encodeToCbor (value : T ): CborElement =
102
106
encodeToCbor(serializersModule.serializer(), value)
103
107
108
+ @ExperimentalSerializationApi
109
+ public inline fun <reified T > Cbor.decodeFromCbor (element : CborElement ): T =
110
+ decodeFromCbor(serializersModule.serializer(), element)
111
+
104
112
@OptIn(ExperimentalSerializationApi ::class )
105
113
private class CborImpl (
106
114
configuration : CborConfiguration ,
@@ -119,18 +127,20 @@ private class CborImpl(
119
127
public fun Cbor (from : Cbor = Cbor , builderAction : CborBuilder .() -> Unit ): Cbor {
120
128
val builder = CborBuilder (from)
121
129
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
+ ),
134
144
builder.serializersModule
135
145
)
136
146
}
0 commit comments