@@ -96,6 +96,9 @@ proc writeHead(
9696 else :
9797 discard
9898
99+ proc writeHead (w: var CborWriter , majorType: CborMajor ) {.raises : [IOError ].} =
100+ w.stream.write initialByte (majorType, cborMinorIndef)
101+
99102func inObject (w: CborWriter ): bool =
100103 w.stack.len > 0 and w.stack[^ 1 ] == CborMajor .Map
101104
@@ -137,7 +140,7 @@ proc beginObject*(w: var CborWriter, length = -1) {.raises: [IOError].} =
137140 if length >= 0 :
138141 w.writeHead (CborMajor .Map , length.uint64 )
139142 else :
140- w.stream. write initialByte (CborMajor .Map , cborMinorIndef )
143+ w.writeHead (CborMajor .Map )
141144
142145 w.wantName = true
143146 w.stack.add CborMajor .Map
@@ -161,7 +164,7 @@ proc beginArray*(w: var CborWriter, length = -1) {.raises: [IOError].} =
161164 if length >= 0 :
162165 w.writeHead (CborMajor .Array , length.uint64 )
163166 else :
164- w.stream. write initialByte (CborMajor .Array , cborMinorIndef )
167+ w.writeHead (CborMajor .Array )
165168
166169 w.stack.add CborMajor .Array
167170
@@ -191,7 +194,7 @@ proc beginStringLike(
191194 w.writeHead (kind, length.uint64 )
192195 w.wantBytes = true
193196 else :
194- w.stream. write initialByte (kind, cborMinorIndef )
197+ w.writeHead (kind)
195198 w.wantBytesElm = true
196199
197200 w.stack.add kind
@@ -305,11 +308,11 @@ proc write*(w: var CborWriter, val: SomeFloat) {.raises: [IOError].} =
305308 w.streamElement (s):
306309 case val.classify
307310 of fcNan:
308- s. write [ initialByte (CborMajor .SimpleOrFloat , cborMinorLen2), 0x 7E 'u8 , 0x 00 'u8 ]
311+ w. writeHead (CborMajor .SimpleOrFloat , 0x 7E00 'u16 )
309312 of fcInf:
310- s. write [ initialByte (CborMajor .SimpleOrFloat , cborMinorLen2), 0x 7C 'u8 , 0x 00 'u8 ]
313+ w. writeHead (CborMajor .SimpleOrFloat , 0x 7C00 'u16 )
311314 of fcNegInf:
312- s. write [ initialByte (CborMajor .SimpleOrFloat , cborMinorLen2), 0x FC 'u8 , 0x 00 'u8 ]
315+ w. writeHead (CborMajor .SimpleOrFloat , 0x FC00 'u16 )
313316 else :
314317 # VM requires this cast dance because float32 has 64-bit precision
315318 # if val == float32(val):
@@ -437,13 +440,16 @@ proc writeRecordValue*(w: var CborWriter, value: object | tuple) {.raises: [IOEr
437440 discard fieldName
438441 w.endObject (stopCode = false )
439442
440- proc writeValue * (w: var CborWriter , value: CborNumber ) {.raises : [IOError ].} =
443+ proc write * (w: var CborWriter , value: CborNumber ) {.raises : [IOError ].} =
441444 w.streamElement (_):
442445 if value.sign == CborSign .Neg :
443446 w.writeHead (CborMajor .Negative , value.integer)
444447 else :
445448 w.writeHead (CborMajor .Unsigned , value.integer)
446449
450+ proc writeValue * (w: var CborWriter , value: CborNumber ) {.raises : [IOError ].} =
451+ w.write (value)
452+
447453proc writeValue * (w: var CborWriter , value: CborObjectType ) {.raises : [IOError ].} =
448454 var fieldCount = 0
449455 for _, v in value:
0 commit comments