1 // automatically generated by the FlatBuffers compiler, do not modify 2 // swiftlint:disable all 3 // swiftformat:disable all 4 5 import FlatBuffers 6 7 public enum Color: UInt8, Enum, Verifiable { 8 public typealias T = UInt8 9 public static var byteSize: Int { return MemoryLayout<UInt8>.size } 10 public var value: UInt8 { return self.rawValue } 11 case red = 1 12 /// \brief color Green 13 /// Green is bit_flag with value (1u << 1) 14 case green = 2 15 /// \brief color Blue (1u << 3) 16 case blue = 8 17 18 public static var max: Color { return .blue } 19 public static var min: Color { return .red } 20 } 21 22 extension Color: Encodable { encodenull23 public func encode(to encoder: Encoder) throws { 24 var container = encoder.singleValueContainer() 25 switch self { 26 case .red: try container.encode("Red") 27 case .green: try container.encode("Green") 28 case .blue: try container.encode("Blue") 29 } 30 } 31 } 32 33 public struct Test: NativeStruct, Verifiable, FlatbuffersInitializable { 34 validateVersionnull35 static func validateVersion() { FlatBuffersVersion_2_0_0() } 36 37 private var _a: Int16 38 private var _b: Int8 39 private let padding0__: UInt8 = 0 40 41 public init(_ bb: ByteBuffer, o: Int32) { 42 let _accessor = Struct(bb: bb, position: o) 43 _a = _accessor.readBuffer(of: Int16.self, at: 0) 44 _b = _accessor.readBuffer(of: Int8.self, at: 2) 45 } 46 47 public init(a: Int16, b: Int8) { 48 _a = a 49 _b = b 50 } 51 52 public init() { 53 _a = 0 54 _b = 0 55 } 56 57 public var a: Int16 { _a } 58 public var b: Int8 { _b } 59 verify<T>null60 public static func verify<T>(_ verifier: inout Verifier, at position: Int, of type: T.Type) throws where T: Verifiable { 61 try verifier.inBuffer(position: position, of: Test.self) 62 } 63 } 64 65 extension Test: Encodable { 66 67 enum CodingKeys: String, CodingKey { 68 case a = "a" 69 case b = "b" 70 } encodenull71 public func encode(to encoder: Encoder) throws { 72 var container = encoder.container(keyedBy: CodingKeys.self) 73 if a != 0 { 74 try container.encodeIfPresent(a, forKey: .a) 75 } 76 if b != 0 { 77 try container.encodeIfPresent(b, forKey: .b) 78 } 79 } 80 } 81 82 public struct Test_Mutable: FlatBufferObject { 83 validateVersionnull84 static func validateVersion() { FlatBuffersVersion_2_0_0() } 85 public var __buffer: ByteBuffer! { return _accessor.bb } 86 private var _accessor: Struct 87 88 public init(_ bb: ByteBuffer, o: Int32) { _accessor = Struct(bb: bb, position: o) } 89 90 public var a: Int16 { return _accessor.readBuffer(of: Int16.self, at: 0) } 91 public var b: Int8 { return _accessor.readBuffer(of: Int8.self, at: 2) } 92 } 93 94 public struct Vec3: NativeStruct, Verifiable, FlatbuffersInitializable { 95 validateVersionnull96 static func validateVersion() { FlatBuffersVersion_2_0_0() } 97 98 private var _x: Float32 99 private var _y: Float32 100 private var _z: Float32 101 private let padding0__: UInt32 = 0 102 private var _test1: Double 103 private var _test2: UInt8 104 private let padding1__: UInt8 = 0 105 private var _test3: Test 106 private let padding2__: UInt16 = 0 107 108 public init(_ bb: ByteBuffer, o: Int32) { 109 let _accessor = Struct(bb: bb, position: o) 110 _x = _accessor.readBuffer(of: Float32.self, at: 0) 111 _y = _accessor.readBuffer(of: Float32.self, at: 4) 112 _z = _accessor.readBuffer(of: Float32.self, at: 8) 113 _test1 = _accessor.readBuffer(of: Double.self, at: 16) 114 _test2 = _accessor.readBuffer(of: UInt8.self, at: 24) 115 _test3 = Test(_accessor.bb, o: _accessor.postion + 26) 116 } 117 118 public init(x: Float32, y: Float32, z: Float32, test1: Double, test2: Color, test3: Test) { 119 _x = x 120 _y = y 121 _z = z 122 _test1 = test1 123 _test2 = test2.value 124 _test3 = test3 125 } 126 127 public init() { 128 _x = 0.0 129 _y = 0.0 130 _z = 0.0 131 _test1 = 0.0 132 _test2 = 0 133 _test3 = Test() 134 } 135 136 public var x: Float32 { _x } 137 public var y: Float32 { _y } 138 public var z: Float32 { _z } 139 public var test1: Double { _test1 } 140 public var test2: Color { Color(rawValue: _test2)! } 141 public var test3: Test { _test3 } 142 verify<T>null143 public static func verify<T>(_ verifier: inout Verifier, at position: Int, of type: T.Type) throws where T: Verifiable { 144 try verifier.inBuffer(position: position, of: Vec3.self) 145 } 146 } 147 148 extension Vec3: Encodable { 149 150 enum CodingKeys: String, CodingKey { 151 case x = "x" 152 case y = "y" 153 case z = "z" 154 case test1 = "test1" 155 case test2 = "test2" 156 case test3 = "test3" 157 } encodenull158 public func encode(to encoder: Encoder) throws { 159 var container = encoder.container(keyedBy: CodingKeys.self) 160 if x != 0.0 { 161 try container.encodeIfPresent(x, forKey: .x) 162 } 163 if y != 0.0 { 164 try container.encodeIfPresent(y, forKey: .y) 165 } 166 if z != 0.0 { 167 try container.encodeIfPresent(z, forKey: .z) 168 } 169 if test1 != 0.0 { 170 try container.encodeIfPresent(test1, forKey: .test1) 171 } 172 if test2 != .red { 173 try container.encodeIfPresent(test2, forKey: .test2) 174 } 175 try container.encodeIfPresent(test3, forKey: .test3) 176 } 177 } 178 179 public struct Vec3_Mutable: FlatBufferObject { 180 validateVersionnull181 static func validateVersion() { FlatBuffersVersion_2_0_0() } 182 public var __buffer: ByteBuffer! { return _accessor.bb } 183 private var _accessor: Struct 184 185 public init(_ bb: ByteBuffer, o: Int32) { _accessor = Struct(bb: bb, position: o) } 186 187 public var x: Float32 { return _accessor.readBuffer(of: Float32.self, at: 0) } 188 public var y: Float32 { return _accessor.readBuffer(of: Float32.self, at: 4) } 189 public var z: Float32 { return _accessor.readBuffer(of: Float32.self, at: 8) } 190 public var test1: Double { return _accessor.readBuffer(of: Double.self, at: 16) } 191 public var test2: Color { return Color(rawValue: _accessor.readBuffer(of: UInt8.self, at: 24)) ?? .red } 192 public var test3: Test_Mutable { return Test_Mutable(_accessor.bb, o: _accessor.postion + 26) } 193 } 194 195 /// an example documentation comment: "monster object" 196 public struct Monster: FlatBufferObject, Verifiable { 197 validateVersionnull198 static func validateVersion() { FlatBuffersVersion_2_0_0() } 199 public var __buffer: ByteBuffer! { return _accessor.bb } 200 private var _accessor: Table 201 getRootAsMonsternull202 public static func getRootAsMonster(bb: ByteBuffer) -> Monster { return Monster(Table(bb: bb, position: Int32(bb.read(def: UOffset.self, position: bb.reader)) + Int32(bb.reader))) } 203 204 private init(_ t: Table) { _accessor = t } 205 public init(_ bb: ByteBuffer, o: Int32) { _accessor = Table(bb: bb, position: o) } 206 207 private enum VTOFFSET: VOffset { 208 case pos = 4 209 case mana = 6 210 case hp = 8 211 case name = 10 212 case testarrayoftables = 12 213 case inventory = 14 214 case color = 16 215 var v: Int32 { Int32(self.rawValue) } 216 var p: VOffset { self.rawValue } 217 } 218 219 public var pos: Vec3? { let o = _accessor.offset(VTOFFSET.pos.v); return o == 0 ? nil : _accessor.readBuffer(of: Vec3.self, at: o) } 220 public var mutablePos: Vec3_Mutable? { let o = _accessor.offset(VTOFFSET.pos.v); return o == 0 ? nil : Vec3_Mutable(_accessor.bb, o: o + _accessor.postion) } 221 public var mana: Int16 { let o = _accessor.offset(VTOFFSET.mana.v); return o == 0 ? 150 : _accessor.readBuffer(of: Int16.self, at: o) } 222 public var hp: Int16 { let o = _accessor.offset(VTOFFSET.hp.v); return o == 0 ? 100 : _accessor.readBuffer(of: Int16.self, at: o) } 223 public var name: String! { let o = _accessor.offset(VTOFFSET.name.v); return _accessor.string(at: o) } 224 public var nameSegmentArray: [UInt8]! { return _accessor.getVector(at: VTOFFSET.name.v) } 225 public var hasTestarrayoftables: Bool { let o = _accessor.offset(VTOFFSET.testarrayoftables.v); return o == 0 ? false : true } 226 public var testarrayoftablesCount: Int32 { let o = _accessor.offset(VTOFFSET.testarrayoftables.v); return o == 0 ? 0 : _accessor.vector(count: o) } testarrayoftablesnull227 public func testarrayoftables(at index: Int32) -> Monster? { let o = _accessor.offset(VTOFFSET.testarrayoftables.v); return o == 0 ? nil : Monster(_accessor.bb, o: _accessor.indirect(_accessor.vector(at: o) + index * 4)) } testarrayoftablesBynull228 public func testarrayoftablesBy(key: String) -> Monster? { let o = _accessor.offset(VTOFFSET.testarrayoftables.v); return o == 0 ? nil : Monster.lookupByKey(vector: _accessor.vector(at: o), key: key, fbb: _accessor.bb) } 229 public var hasInventory: Bool { let o = _accessor.offset(VTOFFSET.inventory.v); return o == 0 ? false : true } 230 public var inventoryCount: Int32 { let o = _accessor.offset(VTOFFSET.inventory.v); return o == 0 ? 0 : _accessor.vector(count: o) } inventorynull231 public func inventory(at index: Int32) -> UInt8 { let o = _accessor.offset(VTOFFSET.inventory.v); return o == 0 ? 0 : _accessor.directRead(of: UInt8.self, offset: _accessor.vector(at: o) + index * 1) } 232 public var inventory: [UInt8] { return _accessor.getVector(at: VTOFFSET.inventory.v) ?? [] } 233 public var color: Color { let o = _accessor.offset(VTOFFSET.color.v); return o == 0 ? .blue : Color(rawValue: _accessor.readBuffer(of: UInt8.self, at: o)) ?? .blue } startMonsternull234 public static func startMonster(_ fbb: inout FlatBufferBuilder) -> UOffset { fbb.startTable(with: 7) } addnull235 public static func add(pos: Vec3?, _ fbb: inout FlatBufferBuilder) { guard let pos = pos else { return }; fbb.create(struct: pos, position: VTOFFSET.pos.p) } addnull236 public static func add(mana: Int16, _ fbb: inout FlatBufferBuilder) { fbb.add(element: mana, def: 150, at: VTOFFSET.mana.p) } addnull237 public static func add(hp: Int16, _ fbb: inout FlatBufferBuilder) { fbb.add(element: hp, def: 100, at: VTOFFSET.hp.p) } addnull238 public static func add(name: Offset, _ fbb: inout FlatBufferBuilder) { fbb.add(offset: name, at: VTOFFSET.name.p) } addVectorOfnull239 public static func addVectorOf(testarrayoftables: Offset, _ fbb: inout FlatBufferBuilder) { fbb.add(offset: testarrayoftables, at: VTOFFSET.testarrayoftables.p) } addVectorOfnull240 public static func addVectorOf(inventory: Offset, _ fbb: inout FlatBufferBuilder) { fbb.add(offset: inventory, at: VTOFFSET.inventory.p) } addnull241 public static func add(color: Color, _ fbb: inout FlatBufferBuilder) { fbb.add(element: color.rawValue, def: 8, at: VTOFFSET.color.p) } endMonsternull242 public static func endMonster(_ fbb: inout FlatBufferBuilder, start: UOffset) -> Offset { let end = Offset(offset: fbb.endTable(at: start)); fbb.require(table: end, fields: [10]); return end } 243 public static func createMonster( 244 _ fbb: inout FlatBufferBuilder, 245 pos: Vec3? = nil, 246 mana: Int16 = 150, 247 hp: Int16 = 100, 248 nameOffset name: Offset, 249 testarrayoftablesVectorOffset testarrayoftables: Offset = Offset(), 250 inventoryVectorOffset inventory: Offset = Offset(), 251 color: Color = .blue 252 ) -> Offset { 253 let __start = Monster.startMonster(&fbb) 254 Monster.add(pos: pos, &fbb) 255 Monster.add(mana: mana, &fbb) 256 Monster.add(hp: hp, &fbb) 257 Monster.add(name: name, &fbb) 258 Monster.addVectorOf(testarrayoftables: testarrayoftables, &fbb) 259 Monster.addVectorOf(inventory: inventory, &fbb) 260 Monster.add(color: color, &fbb) 261 return Monster.endMonster(&fbb, start: __start) 262 } sortVectorOfMonsternull263 public static func sortVectorOfMonster(offsets:[Offset], _ fbb: inout FlatBufferBuilder) -> Offset { 264 var off = offsets 265 off.sort { Table.compare(Table.offset(Int32($1.o), vOffset: 10, fbb: fbb.buffer), Table.offset(Int32($0.o), vOffset: 10, fbb: fbb.buffer), fbb: fbb.buffer) < 0 } 266 return fbb.createVector(ofOffsets: off) 267 } lookupByKeynull268 fileprivate static func lookupByKey(vector: Int32, key: String, fbb: ByteBuffer) -> Monster? { 269 let key = key.utf8.map { $0 } 270 var span = fbb.read(def: Int32.self, position: Int(vector - 4)) 271 var start: Int32 = 0 272 while span != 0 { 273 var middle = span / 2 274 let tableOffset = Table.indirect(vector + 4 * (start + middle), fbb) 275 let comp = Table.compare(Table.offset(Int32(fbb.capacity) - tableOffset, vOffset: 10, fbb: fbb), key, fbb: fbb) 276 if comp > 0 { 277 span = middle 278 } else if comp < 0 { 279 middle += 1 280 start += middle 281 span -= middle 282 } else { 283 return Monster(fbb, o: tableOffset) 284 } 285 } 286 return nil 287 } 288 verify<T>null289 public static func verify<T>(_ verifier: inout Verifier, at position: Int, of type: T.Type) throws where T: Verifiable { 290 var _v = try verifier.visitTable(at: position) 291 try _v.visit(field: VTOFFSET.pos.p, fieldName: "pos", required: false, type: Vec3.self) 292 try _v.visit(field: VTOFFSET.mana.p, fieldName: "mana", required: false, type: Int16.self) 293 try _v.visit(field: VTOFFSET.hp.p, fieldName: "hp", required: false, type: Int16.self) 294 try _v.visit(field: VTOFFSET.name.p, fieldName: "name", required: true, type: ForwardOffset<String>.self) 295 try _v.visit(field: VTOFFSET.testarrayoftables.p, fieldName: "testarrayoftables", required: false, type: ForwardOffset<Vector<ForwardOffset<Monster>, Monster>>.self) 296 try _v.visit(field: VTOFFSET.inventory.p, fieldName: "inventory", required: false, type: ForwardOffset<Vector<UInt8, UInt8>>.self) 297 try _v.visit(field: VTOFFSET.color.p, fieldName: "color", required: false, type: Color.self) 298 _v.finish() 299 } 300 } 301 302 extension Monster: Encodable { 303 304 enum CodingKeys: String, CodingKey { 305 case pos = "pos" 306 case mana = "mana" 307 case hp = "hp" 308 case name = "name" 309 case testarrayoftables = "testarrayoftables" 310 case inventory = "inventory" 311 case color = "color" 312 } encodenull313 public func encode(to encoder: Encoder) throws { 314 var container = encoder.container(keyedBy: CodingKeys.self) 315 try container.encodeIfPresent(pos, forKey: .pos) 316 if mana != 150 { 317 try container.encodeIfPresent(mana, forKey: .mana) 318 } 319 if hp != 100 { 320 try container.encodeIfPresent(hp, forKey: .hp) 321 } 322 try container.encodeIfPresent(name, forKey: .name) 323 if testarrayoftablesCount > 0 { 324 var contentEncoder = container.nestedUnkeyedContainer(forKey: .testarrayoftables) 325 for index in 0..<testarrayoftablesCount { 326 guard let type = testarrayoftables(at: index) else { continue } 327 try contentEncoder.encode(type) 328 } 329 } 330 if inventoryCount > 0 { 331 try container.encodeIfPresent(inventory, forKey: .inventory) 332 } 333 if color != .blue { 334 try container.encodeIfPresent(color, forKey: .color) 335 } 336 } 337 } 338 339