@@ -201,8 +201,13 @@ internal object Cbor {
201
201
*
202
202
* `decode` will consume list values until an [IndefiniteBreak] is encountered.
203
203
*/
204
- internal class IndefiniteList (val value : MutableList <Value > = mutableListOf()) : Value {
205
- override fun encode (into : SdkBufferedSink ) = into.writeByte(encodeMajorMinor(Major .LIST , Minor .INDEFINITE ))
204
+ internal class IndefiniteList (val value : Collection <Value > = listOf()) : Value {
205
+ override fun encode (into : SdkBufferedSink ) {
206
+ into.writeByte(encodeMajorMinor(Major .LIST , Minor .INDEFINITE ))
207
+ value.forEach {
208
+ it.encode(into)
209
+ }
210
+ }
206
211
207
212
internal companion object {
208
213
internal fun decode (buffer : SdkBufferedSource ): IndefiniteList {
@@ -227,8 +232,8 @@ internal object Cbor {
227
232
internal class Map (val value : kotlin.collections.Map <Value , Value >) : Value {
228
233
override fun encode (into : SdkBufferedSink ) {
229
234
into.write(encodeArgument(Major .MAP , value.size.toULong()))
230
- value.forEach { (key , v) ->
231
- key .encode(into)
235
+ value.forEach { (k , v) ->
236
+ k .encode(into)
232
237
v.encode(into)
233
238
}
234
239
}
@@ -260,16 +265,22 @@ internal object Cbor {
260
265
*
261
266
* `decode` will consume map entries until an [IndefiniteBreak] is encountered.
262
267
*/
263
- internal class IndefiniteMap (val value : MutableMap <String , Value > = mutableMapOf()) : Value {
264
- override fun encode (into : SdkBufferedSink ) = into.writeByte(encodeMajorMinor(Major .MAP , Minor .INDEFINITE ))
268
+ internal class IndefiniteMap (val value : kotlin.collections.Map <Value , Value > = mapOf()) : Value {
269
+ override fun encode (into : SdkBufferedSink ) {
270
+ into.writeByte(encodeMajorMinor(Major .MAP , Minor .INDEFINITE ))
271
+ value.entries.forEach { (k, v) ->
272
+ k.encode(into)
273
+ v.encode(into)
274
+ }
275
+ }
265
276
266
277
internal companion object {
267
278
internal fun decode (buffer : SdkBufferedSource ): IndefiniteMap {
268
279
buffer.readByte() // discard head byte
269
- val valueMap = mutableMapOf<String , Value >()
280
+ val valueMap = mutableMapOf<Value , Value >()
270
281
271
282
while (! buffer.nextValueIsIndefiniteBreak) {
272
- val key = String .decode(buffer)
283
+ val key = Value .decode(buffer)
273
284
val value = Value .decode(buffer)
274
285
valueMap[key] = value
275
286
}
0 commit comments