G
Size: a a a
G
f
VB
f
load
наверное))?f
kind
первым, в обратную сторону просто загружаем его первым и вперед в case
VB
VB
G
VB
G
f
type
A = ref object of RootObj
typeId: int # ???
B = ref object of A
C = ref object of A
var data: @[A(), B(), C()]
proc deser(stream: Stream): A =
let id = stream.loadTypeId()
result = # Создать наследованный объект, учитывая то что пользователь также мог сделать свой `typeId`.
# Можно сделать через `id -> newObjCallback(): A` callback table?
G
VB
packet A:
a: Optional[int]
packet B of A:
b: string
pa = A.init()
pb = B.init(b: "test")
var js = pb.dump()
B.load(js)
G
g
g
g
g
g