blob: 603b63bcd6145244c2db7024e51890e33b5a9c96 [file] [log] [blame]
James Kuszmaul3b15b0c2022-11-08 14:03:16 -08001import table
2
3
4type FlatObj* {.inheritable.} = object
5 tab*: Vtable
6
7func Table*(this: var FlatObj): Vtable = this.tab
8
9func Init*(this: var FlatObj; buf: seq[byte]; i: uoffset) =
10 this.tab.Bytes = buf
11 this.tab.Pos = i
12
13# Cant define it in table.nim since it needs FlatObj and Init
14func GetUnion*[T: FlatObj](this: var Vtable; off: uoffset): T =
15 result.Init(this.Bytes, this.Indirect(off))
16
17func GetRootAs*(result: var FlatObj; buf: seq[byte]; offset: uoffset) =
18 var
19 vtable = Vtable(Bytes: buf[offset..^1], Pos: offset)
20 n = Get[uoffset](vtable, offset)
21 result.Init(buf, n+offset)
22
23func GetRootAs*(result: var FlatObj; buf: string; offset: uoffset) =
24 result.GetRootAs(cast[seq[byte]](buf), offset)