#[ Universe
  Automatically generated by the FlatBuffers compiler, do not modify.
  Or modify. I'm a message, not a cop.

  flatc version: 23.5.9

  Declared by  : //basic.fbs
  Rooting type : Universe (//basic.fbs)
]#

import Galaxy as Galaxy
import flatbuffers
import std/options

type Universe* = object of FlatObj
func age*(self: Universe): float64 =
  let o = self.tab.Offset(4)
  if o != 0:
    return Get[float64](self.tab, self.tab.Pos + o)
  return 0.0
func `age=`*(self: var Universe, n: float64): bool =
  return self.tab.MutateSlot(4, n)
func galaxiesLength*(self: Universe): int = 
  let o = self.tab.Offset(6)
  if o != 0:
    return self.tab.VectorLen(o)
func galaxies*(self: Universe, j: int): Galaxy.Galaxy = 
  let o = self.tab.Offset(6)
  if o != 0:
    var x = self.tab.Vector(o)
    x += j.uoffset * 4.uoffset
    return Galaxy.Galaxy(tab: Vtable(Bytes: self.tab.Bytes, Pos: x))
func galaxies*(self: Universe): seq[Galaxy.Galaxy] = 
  let len = self.galaxiesLength
  for i in countup(0, len - 1):
    result.add(self.galaxies(i))
proc UniverseStart*(builder: var Builder) =
  builder.StartObject(2)
proc UniverseAddage*(builder: var Builder, age: float64) =
  builder.PrependSlot(0, age, default(float64))
proc UniverseAddgalaxies*(builder: var Builder, galaxies: uoffset) =
  builder.PrependSlot(1, galaxies, default(uoffset))
proc UniverseStartgalaxiesVector*(builder: var Builder, numElems: uoffset) =
  builder.StartVector(4, numElems, 4)
proc UniverseEnd*(builder: var Builder): uoffset =
  return builder.EndObject()
