RosettaCodeData/Task/Object-serialization/Nim/object-serialization.nim

26 lines
527 B
Nim

import marshal, streams
type
Base = object of RootObj
name: string
Descendant = object of Base
proc newBase(): Base = Base(name: "base")
proc newDescendant(): Descendant = Descendant(name: "descend")
proc print(obj: Base) =
echo(obj.name)
var
base = newBase()
descendant = newDescendant()
print(base)
print(descendant)
var strm = newFileStream("objects.dat", fmWrite)
store(strm, (base, descendant))
strm.close()
var t: (Base, Descendant)
load(newFileStream("objects.dat", fmRead), t)
print(t[0])
print(t[1])