Skip to content

Commit 58bbe52

Browse files
committed
Make IndefiniteList/IndefiniteMap take a List/Map instead of MutableList/MutableMap
1 parent 00a1862 commit 58bbe52

File tree

1 file changed

+19
-8
lines changed
  • runtime/serde/serde-cbor/common/src/aws/smithy/kotlin/runtime/serde/cbor

1 file changed

+19
-8
lines changed

runtime/serde/serde-cbor/common/src/aws/smithy/kotlin/runtime/serde/cbor/Cbor.kt

Lines changed: 19 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -201,8 +201,13 @@ internal object Cbor {
201201
*
202202
* `decode` will consume list values until an [IndefiniteBreak] is encountered.
203203
*/
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+
}
206211

207212
internal companion object {
208213
internal fun decode(buffer: SdkBufferedSource): IndefiniteList {
@@ -227,8 +232,8 @@ internal object Cbor {
227232
internal class Map(val value: kotlin.collections.Map<Value, Value>) : Value {
228233
override fun encode(into: SdkBufferedSink) {
229234
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)
232237
v.encode(into)
233238
}
234239
}
@@ -260,16 +265,22 @@ internal object Cbor {
260265
*
261266
* `decode` will consume map entries until an [IndefiniteBreak] is encountered.
262267
*/
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+
}
265276

266277
internal companion object {
267278
internal fun decode(buffer: SdkBufferedSource): IndefiniteMap {
268279
buffer.readByte() // discard head byte
269-
val valueMap = mutableMapOf<String, Value>()
280+
val valueMap = mutableMapOf<Value, Value>()
270281

271282
while (!buffer.nextValueIsIndefiniteBreak) {
272-
val key = String.decode(buffer)
283+
val key = Value.decode(buffer)
273284
val value = Value.decode(buffer)
274285
valueMap[key] = value
275286
}

0 commit comments

Comments
 (0)