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()}"