import streams import strformat import strutils #
# I7 structure
type
i7 = object
flag: bool value: int8
# Implement custom serialization and deserialization for i7
proc putValue(sstream: var StringStream, value: i7) =
sstream.write(value.flag) sstream.write(value.value)
proc getValue(sstream: var StringStream): i7 =
sstream.read(result.flag) sstream.read(result.value)
# Main code
block:
var sstream = newStringStream()
for v in -127 .. 127:
sstream.setPosition(0) let data = i7(flag: false, value: v.int8)
putValue(sstream, data) sstream.setPosition(0) let data2 = getValue(sstream)
doAssert data == data2, fmt"values don't match: {data.value} != {data2.value}"
echo fmt"value: {data.value}, binary: {sstream.data.toHex()}"