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

Reply via email to