@@ -32,7 +32,6 @@ internal sealed class CborWriter(
32
32
getDestination().encodeByteString(byteArray)
33
33
}
34
34
35
-
36
35
protected var isClass = false
37
36
38
37
protected var encodeByteArrayAsByteString = false
@@ -199,17 +198,18 @@ internal class StructuredCborWriter(cbor: Cbor) : CborWriter(
199
198
internal set
200
199
201
200
202
- fun add (element : CborElement ) = elements.add(element)
201
+ open fun add (element : CborElement ) = elements.add(element)
203
202
class Map (tags : ULongArray , elements : MutableList <CborElement > = mutableListOf()) :
204
- CborContainer (tags, elements) {
205
- }
203
+ CborContainer (tags, elements)
206
204
207
205
class List (tags : ULongArray , elements : MutableList <CborElement > = mutableListOf()) :
208
- CborContainer (tags, elements) {
209
- }
206
+ CborContainer (tags, elements)
210
207
211
208
class Primitive (tags : ULongArray ) : CborContainer(tags, elements = mutableListOf()) {
212
-
209
+ override fun add (element : CborElement ): Boolean {
210
+ require(elements.isEmpty()) {" Implementation error. Please report a bug." }
211
+ return elements.add(element)
212
+ }
213
213
}
214
214
215
215
fun finalize () = when (this ) {
@@ -221,7 +221,7 @@ internal class StructuredCborWriter(cbor: Cbor) : CborWriter(
221
221
tags = tags
222
222
)
223
223
224
- is Primitive -> elements.first().also { it.tags = tags }
224
+ is Primitive -> elements.first().also { it.tags + = tags }
225
225
226
226
}
227
227
}
@@ -232,6 +232,7 @@ internal class StructuredCborWriter(cbor: Cbor) : CborWriter(
232
232
fun finalize () = currentElement!! .finalize()
233
233
234
234
override fun beginStructure (descriptor : SerialDescriptor ): CompositeEncoder {
235
+ // TODO check if cborelement and be done
235
236
val tags = descriptor.getObjectTags() ? : ulongArrayOf()
236
237
val element = if (descriptor.hasArrayTag()) {
237
238
CborContainer .List (tags)
0 commit comments