@@ -32,7 +32,6 @@ internal sealed class CborWriter(
3232 getDestination().encodeByteString(byteArray)
3333 }
3434
35-
3635 protected var isClass = false
3736
3837 protected var encodeByteArrayAsByteString = false
@@ -199,17 +198,18 @@ internal class StructuredCborWriter(cbor: Cbor) : CborWriter(
199198 internal set
200199
201200
202- fun add (element : CborElement ) = elements.add(element)
201+ open fun add (element : CborElement ) = elements.add(element)
203202 class Map (tags : ULongArray , elements : MutableList <CborElement > = mutableListOf()) :
204- CborContainer (tags, elements) {
205- }
203+ CborContainer (tags, elements)
206204
207205 class List (tags : ULongArray , elements : MutableList <CborElement > = mutableListOf()) :
208- CborContainer (tags, elements) {
209- }
206+ CborContainer (tags, elements)
210207
211208 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+ }
213213 }
214214
215215 fun finalize () = when (this ) {
@@ -221,7 +221,7 @@ internal class StructuredCborWriter(cbor: Cbor) : CborWriter(
221221 tags = tags
222222 )
223223
224- is Primitive -> elements.first().also { it.tags = tags }
224+ is Primitive -> elements.first().also { it.tags + = tags }
225225
226226 }
227227 }
@@ -232,6 +232,7 @@ internal class StructuredCborWriter(cbor: Cbor) : CborWriter(
232232 fun finalize () = currentElement!! .finalize()
233233
234234 override fun beginStructure (descriptor : SerialDescriptor ): CompositeEncoder {
235+ // TODO check if cborelement and be done
235236 val tags = descriptor.getObjectTags() ? : ulongArrayOf()
236237 val element = if (descriptor.hasArrayTag()) {
237238 CborContainer .List (tags)
0 commit comments