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 Character: UInt8, UnionEnum {
8   public typealias T = UInt8
9 
10   public init?(value: T) {
11     self.init(rawValue: value)
12   }
13 
14   public static var byteSize: Int { return MemoryLayout<UInt8>.size }
15   public var value: UInt8 { return self.rawValue }
16   case none_ = 0
17   case mulan = 1
18   case rapunzel = 2
19   case belle = 3
20   case bookfan = 4
21   case other = 5
22   case unused = 6
23 
24   public static var max: Character { return .unused }
25   public static var min: Character { return .none_ }
26 }
27 
28 extension Character: Encodable {
encodenull29   public func encode(to encoder: Encoder) throws {
30     var container = encoder.singleValueContainer()
31     switch self {
32     case .none_: try container.encode("NONE")
33     case .mulan: try container.encode("MuLan")
34     case .rapunzel: try container.encode("Rapunzel")
35     case .belle: try container.encode("Belle")
36     case .bookfan: try container.encode("BookFan")
37     case .other: try container.encode("Other")
38     case .unused: try container.encode("Unused")
39     }
40   }
41 }
42 
43 public struct CharacterUnion {
44   public var type: Character
45   public var value: NativeObject?
46   public init(_ v: NativeObject?, type: Character) {
47     self.type = type
48     self.value = v
49   }
packnull50   public func pack(builder: inout FlatBufferBuilder) -> Offset {
51     switch type {
52     case .mulan:
53       var __obj = value as? AttackerT
54       return Attacker.pack(&builder, obj: &__obj)
55     case .rapunzel:
56       var __obj = value as? Rapunzel
57       return Rapunzel_Mutable.pack(&builder, obj: &__obj)
58     case .belle:
59       var __obj = value as? BookReader
60       return BookReader_Mutable.pack(&builder, obj: &__obj)
61     case .bookfan:
62       var __obj = value as? BookReader
63       return BookReader_Mutable.pack(&builder, obj: &__obj)
64     case .other:
65       var __obj = value as? String
66       return String.pack(&builder, obj: &__obj)
67     case .unused:
68       var __obj = value as? String
69       return String.pack(&builder, obj: &__obj)
70     default: return Offset()
71     }
72   }
73 }
74 public enum Gadget: UInt8, UnionEnum {
75   public typealias T = UInt8
76 
77   public init?(value: T) {
78     self.init(rawValue: value)
79   }
80 
81   public static var byteSize: Int { return MemoryLayout<UInt8>.size }
82   public var value: UInt8 { return self.rawValue }
83   case none_ = 0
84   case fallingtub = 1
85   case handfan = 2
86 
87   public static var max: Gadget { return .handfan }
88   public static var min: Gadget { return .none_ }
89 }
90 
91 extension Gadget: Encodable {
encodenull92   public func encode(to encoder: Encoder) throws {
93     var container = encoder.singleValueContainer()
94     switch self {
95     case .none_: try container.encode("NONE")
96     case .fallingtub: try container.encode("FallingTub")
97     case .handfan: try container.encode("HandFan")
98     }
99   }
100 }
101 
102 public struct GadgetUnion {
103   public var type: Gadget
104   public var value: NativeObject?
105   public init(_ v: NativeObject?, type: Gadget) {
106     self.type = type
107     self.value = v
108   }
packnull109   public func pack(builder: inout FlatBufferBuilder) -> Offset {
110     switch type {
111     case .fallingtub:
112       var __obj = value as? FallingTub
113       return FallingTub_Mutable.pack(&builder, obj: &__obj)
114     case .handfan:
115       var __obj = value as? HandFanT
116       return HandFan.pack(&builder, obj: &__obj)
117     default: return Offset()
118     }
119   }
120 }
121 public struct Rapunzel: NativeStruct, Verifiable, FlatbuffersInitializable, NativeObject {
122 
validateVersionnull123   static func validateVersion() { FlatBuffersVersion_2_0_0() }
124 
125   private var _hairLength: Int32
126 
127   public init(_ bb: ByteBuffer, o: Int32) {
128     let _accessor = Struct(bb: bb, position: o)
129     _hairLength = _accessor.readBuffer(of: Int32.self, at: 0)
130   }
131 
132   public init(hairLength: Int32) {
133     _hairLength = hairLength
134   }
135 
136   public init() {
137     _hairLength = 0
138   }
139 
140   public init(_ _t: inout Rapunzel_Mutable) {
141     _hairLength = _t.hairLength
142   }
143 
144   public var hairLength: Int32 { _hairLength }
145 
verify<T>null146   public static func verify<T>(_ verifier: inout Verifier, at position: Int, of type: T.Type) throws where T: Verifiable {
147     try verifier.inBuffer(position: position, of: Rapunzel.self)
148   }
149 }
150 
151 extension Rapunzel: Encodable {
152 
153   enum CodingKeys: String, CodingKey {
154     case hairLength = "hair_length"
155   }
encodenull156   public func encode(to encoder: Encoder) throws {
157     var container = encoder.container(keyedBy: CodingKeys.self)
158     if hairLength != 0 {
159       try container.encodeIfPresent(hairLength, forKey: .hairLength)
160     }
161   }
162 }
163 
164 public struct Rapunzel_Mutable: FlatBufferObject {
165 
validateVersionnull166   static func validateVersion() { FlatBuffersVersion_2_0_0() }
167   public var __buffer: ByteBuffer! { return _accessor.bb }
168   private var _accessor: Struct
169 
170   public init(_ bb: ByteBuffer, o: Int32) { _accessor = Struct(bb: bb, position: o) }
171 
172   public var hairLength: Int32 { return _accessor.readBuffer(of: Int32.self, at: 0) }
mutatenull173   @discardableResult public func mutate(hairLength: Int32) -> Bool { return _accessor.mutate(hairLength, index: 0) }
174 
175 
unpacknull176   public mutating func unpack() -> Rapunzel {
177     return Rapunzel(&self)
178   }
packnull179   public static func pack(_ builder: inout FlatBufferBuilder, obj: inout Rapunzel?) -> Offset {
180     guard var obj = obj else { return Offset() }
181     return pack(&builder, obj: &obj)
182   }
183 
packnull184   public static func pack(_ builder: inout FlatBufferBuilder, obj: inout Rapunzel) -> Offset {
185     return builder.create(struct: obj)
186   }
187 }
188 
189 public struct BookReader: NativeStruct, Verifiable, FlatbuffersInitializable, NativeObject {
190 
validateVersionnull191   static func validateVersion() { FlatBuffersVersion_2_0_0() }
192 
193   private var _booksRead: Int32
194 
195   public init(_ bb: ByteBuffer, o: Int32) {
196     let _accessor = Struct(bb: bb, position: o)
197     _booksRead = _accessor.readBuffer(of: Int32.self, at: 0)
198   }
199 
200   public init(booksRead: Int32) {
201     _booksRead = booksRead
202   }
203 
204   public init() {
205     _booksRead = 0
206   }
207 
208   public init(_ _t: inout BookReader_Mutable) {
209     _booksRead = _t.booksRead
210   }
211 
212   public var booksRead: Int32 { _booksRead }
213 
verify<T>null214   public static func verify<T>(_ verifier: inout Verifier, at position: Int, of type: T.Type) throws where T: Verifiable {
215     try verifier.inBuffer(position: position, of: BookReader.self)
216   }
217 }
218 
219 extension BookReader: Encodable {
220 
221   enum CodingKeys: String, CodingKey {
222     case booksRead = "books_read"
223   }
encodenull224   public func encode(to encoder: Encoder) throws {
225     var container = encoder.container(keyedBy: CodingKeys.self)
226     if booksRead != 0 {
227       try container.encodeIfPresent(booksRead, forKey: .booksRead)
228     }
229   }
230 }
231 
232 public struct BookReader_Mutable: FlatBufferObject {
233 
validateVersionnull234   static func validateVersion() { FlatBuffersVersion_2_0_0() }
235   public var __buffer: ByteBuffer! { return _accessor.bb }
236   private var _accessor: Struct
237 
238   public init(_ bb: ByteBuffer, o: Int32) { _accessor = Struct(bb: bb, position: o) }
239 
240   public var booksRead: Int32 { return _accessor.readBuffer(of: Int32.self, at: 0) }
mutatenull241   @discardableResult public func mutate(booksRead: Int32) -> Bool { return _accessor.mutate(booksRead, index: 0) }
242 
243 
unpacknull244   public mutating func unpack() -> BookReader {
245     return BookReader(&self)
246   }
packnull247   public static func pack(_ builder: inout FlatBufferBuilder, obj: inout BookReader?) -> Offset {
248     guard var obj = obj else { return Offset() }
249     return pack(&builder, obj: &obj)
250   }
251 
packnull252   public static func pack(_ builder: inout FlatBufferBuilder, obj: inout BookReader) -> Offset {
253     return builder.create(struct: obj)
254   }
255 }
256 
257 public struct FallingTub: NativeStruct, Verifiable, FlatbuffersInitializable, NativeObject {
258 
validateVersionnull259   static func validateVersion() { FlatBuffersVersion_2_0_0() }
260 
261   private var _weight: Int32
262 
263   public init(_ bb: ByteBuffer, o: Int32) {
264     let _accessor = Struct(bb: bb, position: o)
265     _weight = _accessor.readBuffer(of: Int32.self, at: 0)
266   }
267 
268   public init(weight: Int32) {
269     _weight = weight
270   }
271 
272   public init() {
273     _weight = 0
274   }
275 
276   public init(_ _t: inout FallingTub_Mutable) {
277     _weight = _t.weight
278   }
279 
280   public var weight: Int32 { _weight }
281 
verify<T>null282   public static func verify<T>(_ verifier: inout Verifier, at position: Int, of type: T.Type) throws where T: Verifiable {
283     try verifier.inBuffer(position: position, of: FallingTub.self)
284   }
285 }
286 
287 extension FallingTub: Encodable {
288 
289   enum CodingKeys: String, CodingKey {
290     case weight = "weight"
291   }
encodenull292   public func encode(to encoder: Encoder) throws {
293     var container = encoder.container(keyedBy: CodingKeys.self)
294     if weight != 0 {
295       try container.encodeIfPresent(weight, forKey: .weight)
296     }
297   }
298 }
299 
300 public struct FallingTub_Mutable: FlatBufferObject {
301 
validateVersionnull302   static func validateVersion() { FlatBuffersVersion_2_0_0() }
303   public var __buffer: ByteBuffer! { return _accessor.bb }
304   private var _accessor: Struct
305 
306   public init(_ bb: ByteBuffer, o: Int32) { _accessor = Struct(bb: bb, position: o) }
307 
308   public var weight: Int32 { return _accessor.readBuffer(of: Int32.self, at: 0) }
mutatenull309   @discardableResult public func mutate(weight: Int32) -> Bool { return _accessor.mutate(weight, index: 0) }
310 
311 
unpacknull312   public mutating func unpack() -> FallingTub {
313     return FallingTub(&self)
314   }
packnull315   public static func pack(_ builder: inout FlatBufferBuilder, obj: inout FallingTub?) -> Offset {
316     guard var obj = obj else { return Offset() }
317     return pack(&builder, obj: &obj)
318   }
319 
packnull320   public static func pack(_ builder: inout FlatBufferBuilder, obj: inout FallingTub) -> Offset {
321     return builder.create(struct: obj)
322   }
323 }
324 
325 public struct Attacker: FlatBufferObject, Verifiable, ObjectAPIPacker {
326 
validateVersionnull327   static func validateVersion() { FlatBuffersVersion_2_0_0() }
328   public var __buffer: ByteBuffer! { return _accessor.bb }
329   private var _accessor: Table
330 
331   public static var id: String { "MOVI" }
finishnull332   public static func finish(_ fbb: inout FlatBufferBuilder, end: Offset, prefix: Bool = false) { fbb.finish(offset: end, fileId: Attacker.id, addPrefix: prefix) }
getRootAsAttackernull333   public static func getRootAsAttacker(bb: ByteBuffer) -> Attacker { return Attacker(Table(bb: bb, position: Int32(bb.read(def: UOffset.self, position: bb.reader)) + Int32(bb.reader))) }
334 
335   private init(_ t: Table) { _accessor = t }
336   public init(_ bb: ByteBuffer, o: Int32) { _accessor = Table(bb: bb, position: o) }
337 
338   private enum VTOFFSET: VOffset {
339     case swordAttackDamage = 4
340     var v: Int32 { Int32(self.rawValue) }
341     var p: VOffset { self.rawValue }
342   }
343 
344   public var swordAttackDamage: Int32 { let o = _accessor.offset(VTOFFSET.swordAttackDamage.v); return o == 0 ? 0 : _accessor.readBuffer(of: Int32.self, at: o) }
mutatenull345   @discardableResult public func mutate(swordAttackDamage: Int32) -> Bool {let o = _accessor.offset(VTOFFSET.swordAttackDamage.v);  return _accessor.mutate(swordAttackDamage, index: o) }
startAttackernull346   public static func startAttacker(_ fbb: inout FlatBufferBuilder) -> UOffset { fbb.startTable(with: 1) }
addnull347   public static func add(swordAttackDamage: Int32, _ fbb: inout FlatBufferBuilder) { fbb.add(element: swordAttackDamage, def: 0, at: VTOFFSET.swordAttackDamage.p) }
endAttackernull348   public static func endAttacker(_ fbb: inout FlatBufferBuilder, start: UOffset) -> Offset { let end = Offset(offset: fbb.endTable(at: start)); return end }
349   public static func createAttacker(
350     _ fbb: inout FlatBufferBuilder,
351     swordAttackDamage: Int32 = 0
352   ) -> Offset {
353     let __start = Attacker.startAttacker(&fbb)
354     Attacker.add(swordAttackDamage: swordAttackDamage, &fbb)
355     return Attacker.endAttacker(&fbb, start: __start)
356   }
357 
358 
unpacknull359   public mutating func unpack() -> AttackerT {
360     return AttackerT(&self)
361   }
packnull362   public static func pack(_ builder: inout FlatBufferBuilder, obj: inout AttackerT?) -> Offset {
363     guard var obj = obj else { return Offset() }
364     return pack(&builder, obj: &obj)
365   }
366 
packnull367   public static func pack(_ builder: inout FlatBufferBuilder, obj: inout AttackerT) -> Offset {
368     let __root = Attacker.startAttacker(&builder)
369     Attacker.add(swordAttackDamage: obj.swordAttackDamage, &builder)
370     return Attacker.endAttacker(&builder, start: __root)
371   }
372 
verify<T>null373   public static func verify<T>(_ verifier: inout Verifier, at position: Int, of type: T.Type) throws where T: Verifiable {
374     var _v = try verifier.visitTable(at: position)
375     try _v.visit(field: VTOFFSET.swordAttackDamage.p, fieldName: "swordAttackDamage", required: false, type: Int32.self)
376     _v.finish()
377   }
378 }
379 
380 extension Attacker: Encodable {
381 
382   enum CodingKeys: String, CodingKey {
383     case swordAttackDamage = "sword_attack_damage"
384   }
encodenull385   public func encode(to encoder: Encoder) throws {
386     var container = encoder.container(keyedBy: CodingKeys.self)
387     if swordAttackDamage != 0 {
388       try container.encodeIfPresent(swordAttackDamage, forKey: .swordAttackDamage)
389     }
390   }
391 }
392 
393 public class AttackerT: NativeObject {
394 
395   public var swordAttackDamage: Int32
396 
397   public init(_ _t: inout Attacker) {
398     swordAttackDamage = _t.swordAttackDamage
399   }
400 
401   public init() {
402     swordAttackDamage = 0
403   }
404 
serializenull405   public func serialize() -> ByteBuffer { return serialize(type: Attacker.self) }
406 
407 }
408 public struct HandFan: FlatBufferObject, Verifiable, ObjectAPIPacker {
409 
validateVersionnull410   static func validateVersion() { FlatBuffersVersion_2_0_0() }
411   public var __buffer: ByteBuffer! { return _accessor.bb }
412   private var _accessor: Table
413 
414   public static var id: String { "MOVI" }
finishnull415   public static func finish(_ fbb: inout FlatBufferBuilder, end: Offset, prefix: Bool = false) { fbb.finish(offset: end, fileId: HandFan.id, addPrefix: prefix) }
getRootAsHandFannull416   public static func getRootAsHandFan(bb: ByteBuffer) -> HandFan { return HandFan(Table(bb: bb, position: Int32(bb.read(def: UOffset.self, position: bb.reader)) + Int32(bb.reader))) }
417 
418   private init(_ t: Table) { _accessor = t }
419   public init(_ bb: ByteBuffer, o: Int32) { _accessor = Table(bb: bb, position: o) }
420 
421   private enum VTOFFSET: VOffset {
422     case length = 4
423     var v: Int32 { Int32(self.rawValue) }
424     var p: VOffset { self.rawValue }
425   }
426 
427   public var length: Int32 { let o = _accessor.offset(VTOFFSET.length.v); return o == 0 ? 0 : _accessor.readBuffer(of: Int32.self, at: o) }
mutatenull428   @discardableResult public func mutate(length: Int32) -> Bool {let o = _accessor.offset(VTOFFSET.length.v);  return _accessor.mutate(length, index: o) }
startHandFannull429   public static func startHandFan(_ fbb: inout FlatBufferBuilder) -> UOffset { fbb.startTable(with: 1) }
addnull430   public static func add(length: Int32, _ fbb: inout FlatBufferBuilder) { fbb.add(element: length, def: 0, at: VTOFFSET.length.p) }
endHandFannull431   public static func endHandFan(_ fbb: inout FlatBufferBuilder, start: UOffset) -> Offset { let end = Offset(offset: fbb.endTable(at: start)); return end }
432   public static func createHandFan(
433     _ fbb: inout FlatBufferBuilder,
434     length: Int32 = 0
435   ) -> Offset {
436     let __start = HandFan.startHandFan(&fbb)
437     HandFan.add(length: length, &fbb)
438     return HandFan.endHandFan(&fbb, start: __start)
439   }
440 
441 
unpacknull442   public mutating func unpack() -> HandFanT {
443     return HandFanT(&self)
444   }
packnull445   public static func pack(_ builder: inout FlatBufferBuilder, obj: inout HandFanT?) -> Offset {
446     guard var obj = obj else { return Offset() }
447     return pack(&builder, obj: &obj)
448   }
449 
packnull450   public static func pack(_ builder: inout FlatBufferBuilder, obj: inout HandFanT) -> Offset {
451     let __root = HandFan.startHandFan(&builder)
452     HandFan.add(length: obj.length, &builder)
453     return HandFan.endHandFan(&builder, start: __root)
454   }
455 
verify<T>null456   public static func verify<T>(_ verifier: inout Verifier, at position: Int, of type: T.Type) throws where T: Verifiable {
457     var _v = try verifier.visitTable(at: position)
458     try _v.visit(field: VTOFFSET.length.p, fieldName: "length", required: false, type: Int32.self)
459     _v.finish()
460   }
461 }
462 
463 extension HandFan: Encodable {
464 
465   enum CodingKeys: String, CodingKey {
466     case length = "length"
467   }
encodenull468   public func encode(to encoder: Encoder) throws {
469     var container = encoder.container(keyedBy: CodingKeys.self)
470     if length != 0 {
471       try container.encodeIfPresent(length, forKey: .length)
472     }
473   }
474 }
475 
476 public class HandFanT: NativeObject {
477 
478   public var length: Int32
479 
480   public init(_ _t: inout HandFan) {
481     length = _t.length
482   }
483 
484   public init() {
485     length = 0
486   }
487 
serializenull488   public func serialize() -> ByteBuffer { return serialize(type: HandFan.self) }
489 
490 }
491 public struct Movie: FlatBufferObject, Verifiable, ObjectAPIPacker {
492 
validateVersionnull493   static func validateVersion() { FlatBuffersVersion_2_0_0() }
494   public var __buffer: ByteBuffer! { return _accessor.bb }
495   private var _accessor: Table
496 
497   public static var id: String { "MOVI" }
finishnull498   public static func finish(_ fbb: inout FlatBufferBuilder, end: Offset, prefix: Bool = false) { fbb.finish(offset: end, fileId: Movie.id, addPrefix: prefix) }
getRootAsMovienull499   public static func getRootAsMovie(bb: ByteBuffer) -> Movie { return Movie(Table(bb: bb, position: Int32(bb.read(def: UOffset.self, position: bb.reader)) + Int32(bb.reader))) }
500 
501   private init(_ t: Table) { _accessor = t }
502   public init(_ bb: ByteBuffer, o: Int32) { _accessor = Table(bb: bb, position: o) }
503 
504   private enum VTOFFSET: VOffset {
505     case mainCharacterType = 4
506     case mainCharacter = 6
507     case charactersType = 8
508     case characters = 10
509     var v: Int32 { Int32(self.rawValue) }
510     var p: VOffset { self.rawValue }
511   }
512 
513   public var mainCharacterType: Character { let o = _accessor.offset(VTOFFSET.mainCharacterType.v); return o == 0 ? .none_ : Character(rawValue: _accessor.readBuffer(of: UInt8.self, at: o)) ?? .none_ }
mainCharacter<T: FlatbuffersInitializable>null514   public func mainCharacter<T: FlatbuffersInitializable>(type: T.Type) -> T? { let o = _accessor.offset(VTOFFSET.mainCharacter.v); return o == 0 ? nil : _accessor.union(o) }
515   public var hasCharactersType: Bool { let o = _accessor.offset(VTOFFSET.charactersType.v); return o == 0 ? false : true }
516   public var charactersTypeCount: Int32 { let o = _accessor.offset(VTOFFSET.charactersType.v); return o == 0 ? 0 : _accessor.vector(count: o) }
charactersTypenull517   public func charactersType(at index: Int32) -> Character? { let o = _accessor.offset(VTOFFSET.charactersType.v); return o == 0 ? Character.none_ : Character(rawValue: _accessor.directRead(of: UInt8.self, offset: _accessor.vector(at: o) + index * 1)) }
518   public var hasCharacters: Bool { let o = _accessor.offset(VTOFFSET.characters.v); return o == 0 ? false : true }
519   public var charactersCount: Int32 { let o = _accessor.offset(VTOFFSET.characters.v); return o == 0 ? 0 : _accessor.vector(count: o) }
characters<T: FlatbuffersInitializable>null520   public func characters<T: FlatbuffersInitializable>(at index: Int32, type: T.Type) -> T? { let o = _accessor.offset(VTOFFSET.characters.v); return o == 0 ? nil : _accessor.directUnion(_accessor.vector(at: o) + index * 4) }
startMovienull521   public static func startMovie(_ fbb: inout FlatBufferBuilder) -> UOffset { fbb.startTable(with: 4) }
addnull522   public static func add(mainCharacterType: Character, _ fbb: inout FlatBufferBuilder) { fbb.add(element: mainCharacterType.rawValue, def: 0, at: VTOFFSET.mainCharacterType.p) }
addnull523   public static func add(mainCharacter: Offset, _ fbb: inout FlatBufferBuilder) { fbb.add(offset: mainCharacter, at: VTOFFSET.mainCharacter.p) }
addVectorOfnull524   public static func addVectorOf(charactersType: Offset, _ fbb: inout FlatBufferBuilder) { fbb.add(offset: charactersType, at: VTOFFSET.charactersType.p) }
addVectorOfnull525   public static func addVectorOf(characters: Offset, _ fbb: inout FlatBufferBuilder) { fbb.add(offset: characters, at: VTOFFSET.characters.p) }
endMovienull526   public static func endMovie(_ fbb: inout FlatBufferBuilder, start: UOffset) -> Offset { let end = Offset(offset: fbb.endTable(at: start)); return end }
527   public static func createMovie(
528     _ fbb: inout FlatBufferBuilder,
529     mainCharacterType: Character = .none_,
530     mainCharacterOffset mainCharacter: Offset = Offset(),
531     charactersTypeVectorOffset charactersType: Offset = Offset(),
532     charactersVectorOffset characters: Offset = Offset()
533   ) -> Offset {
534     let __start = Movie.startMovie(&fbb)
535     Movie.add(mainCharacterType: mainCharacterType, &fbb)
536     Movie.add(mainCharacter: mainCharacter, &fbb)
537     Movie.addVectorOf(charactersType: charactersType, &fbb)
538     Movie.addVectorOf(characters: characters, &fbb)
539     return Movie.endMovie(&fbb, start: __start)
540   }
541 
542 
unpacknull543   public mutating func unpack() -> MovieT {
544     return MovieT(&self)
545   }
packnull546   public static func pack(_ builder: inout FlatBufferBuilder, obj: inout MovieT?) -> Offset {
547     guard var obj = obj else { return Offset() }
548     return pack(&builder, obj: &obj)
549   }
550 
packnull551   public static func pack(_ builder: inout FlatBufferBuilder, obj: inout MovieT) -> Offset {
552     let __mainCharacter = obj.mainCharacter?.pack(builder: &builder) ?? Offset()
553     var __characters__: [Offset] = []
554     for i in obj.characters {
555       guard let off = i?.pack(builder: &builder) else { continue }
556       __characters__.append(off)
557     }
558     let __characters = builder.createVector(ofOffsets: __characters__)
559     let __charactersType = builder.createVector(obj.characters.compactMap { $0?.type })
560     let __root = Movie.startMovie(&builder)
561     if let o = obj.mainCharacter?.type {
562       Movie.add(mainCharacterType: o, &builder)
563       Movie.add(mainCharacter: __mainCharacter, &builder)
564     }
565 
566     Movie.addVectorOf(charactersType: __charactersType, &builder)
567     Movie.addVectorOf(characters: __characters, &builder)
568     return Movie.endMovie(&builder, start: __root)
569   }
570 
verify<T>null571   public static func verify<T>(_ verifier: inout Verifier, at position: Int, of type: T.Type) throws where T: Verifiable {
572     var _v = try verifier.visitTable(at: position)
573     try _v.visit(unionKey: VTOFFSET.mainCharacterType.p, unionField: VTOFFSET.mainCharacter.p, unionKeyName: "mainCharacterType", fieldName: "mainCharacter", required: false, completion: { (verifier, key: Character, pos) in
574       switch key {
575       case .none_:
576         break // NOTE - SWIFT doesnt support none
577       case .mulan:
578         try ForwardOffset<Attacker>.verify(&verifier, at: pos, of: Attacker.self)
579       case .rapunzel:
580         try Rapunzel.verify(&verifier, at: pos, of: Rapunzel.self)
581       case .belle:
582         try BookReader.verify(&verifier, at: pos, of: BookReader.self)
583       case .bookfan:
584         try BookReader.verify(&verifier, at: pos, of: BookReader.self)
585       case .other:
586         try ForwardOffset<String>.verify(&verifier, at: pos, of: String.self)
587       case .unused:
588         try ForwardOffset<String>.verify(&verifier, at: pos, of: String.self)
589       }
590     })
591     try _v.visitUnionVector(unionKey: VTOFFSET.charactersType.p, unionField: VTOFFSET.characters.p, unionKeyName: "charactersType", fieldName: "characters", required: false, completion: { (verifier, key: Character, pos) in
592       switch key {
593       case .none_:
594         break // NOTE - SWIFT doesnt support none
595       case .mulan:
596         try ForwardOffset<Attacker>.verify(&verifier, at: pos, of: Attacker.self)
597       case .rapunzel:
598         try Rapunzel.verify(&verifier, at: pos, of: Rapunzel.self)
599       case .belle:
600         try BookReader.verify(&verifier, at: pos, of: BookReader.self)
601       case .bookfan:
602         try BookReader.verify(&verifier, at: pos, of: BookReader.self)
603       case .other:
604         try ForwardOffset<String>.verify(&verifier, at: pos, of: String.self)
605       case .unused:
606         try ForwardOffset<String>.verify(&verifier, at: pos, of: String.self)
607       }
608     })
609     _v.finish()
610   }
611 }
612 
613 extension Movie: Encodable {
614 
615   enum CodingKeys: String, CodingKey {
616     case mainCharacterType = "main_character_type"
617     case mainCharacter = "main_character"
618     case charactersType = "characters_type"
619     case characters = "characters"
620   }
encodenull621   public func encode(to encoder: Encoder) throws {
622     var container = encoder.container(keyedBy: CodingKeys.self)
623     if mainCharacterType != .none_ {
624       try container.encodeIfPresent(mainCharacterType, forKey: .mainCharacterType)
625     }
626     switch mainCharacterType {
627     case .mulan:
628       let _v = mainCharacter(type: Attacker.self)
629       try container.encodeIfPresent(_v, forKey: .mainCharacter)
630     case .rapunzel:
631       let _v = mainCharacter(type: Rapunzel.self)
632       try container.encodeIfPresent(_v, forKey: .mainCharacter)
633     case .belle:
634       let _v = mainCharacter(type: BookReader.self)
635       try container.encodeIfPresent(_v, forKey: .mainCharacter)
636     case .bookfan:
637       let _v = mainCharacter(type: BookReader.self)
638       try container.encodeIfPresent(_v, forKey: .mainCharacter)
639     case .other:
640       let _v = mainCharacter(type: String.self)
641       try container.encodeIfPresent(_v, forKey: .mainCharacter)
642     case .unused:
643       let _v = mainCharacter(type: String.self)
644       try container.encodeIfPresent(_v, forKey: .mainCharacter)
645     default: break;
646     }
647     if charactersCount > 0 {
648       var enumsEncoder = container.nestedUnkeyedContainer(forKey: .charactersType)
649       var contentEncoder = container.nestedUnkeyedContainer(forKey: .characters)
650       for index in 0..<charactersCount {
651         guard let type = charactersType(at: index) else { continue }
652         try enumsEncoder.encode(type)
653         switch type {
654         case .mulan:
655           let _v = characters(at: index, type: Attacker.self)
656           try contentEncoder.encode(_v)
657         case .rapunzel:
658           let _v = characters(at: index, type: Rapunzel.self)
659           try contentEncoder.encode(_v)
660         case .belle:
661           let _v = characters(at: index, type: BookReader.self)
662           try contentEncoder.encode(_v)
663         case .bookfan:
664           let _v = characters(at: index, type: BookReader.self)
665           try contentEncoder.encode(_v)
666         case .other:
667           let _v = characters(at: index, type: String.self)
668           try contentEncoder.encode(_v)
669         case .unused:
670           let _v = characters(at: index, type: String.self)
671           try contentEncoder.encode(_v)
672         default: break;
673         }
674       }
675     }
676   }
677 }
678 
679 public class MovieT: NativeObject {
680 
681   public var mainCharacter: CharacterUnion?
682   public var characters: [CharacterUnion?]
683 
684   public init(_ _t: inout Movie) {
685     switch _t.mainCharacterType {
686     case .mulan:
687       var _v = _t.mainCharacter(type: Attacker.self)
688       mainCharacter = CharacterUnion(_v?.unpack(), type: .mulan)
689     case .rapunzel:
690       var _v = _t.mainCharacter(type: Rapunzel_Mutable.self)
691       mainCharacter = CharacterUnion(_v?.unpack(), type: .rapunzel)
692     case .belle:
693       var _v = _t.mainCharacter(type: BookReader_Mutable.self)
694       mainCharacter = CharacterUnion(_v?.unpack(), type: .belle)
695     case .bookfan:
696       var _v = _t.mainCharacter(type: BookReader_Mutable.self)
697       mainCharacter = CharacterUnion(_v?.unpack(), type: .bookfan)
698     case .other:
699       var _v = _t.mainCharacter(type: String.self)
700       mainCharacter = CharacterUnion(_v?.unpack(), type: .other)
701     case .unused:
702       var _v = _t.mainCharacter(type: String.self)
703       mainCharacter = CharacterUnion(_v?.unpack(), type: .unused)
704     default: break
705     }
706     characters = []
707     for index in 0..<_t.charactersCount {
708         switch _t.charactersType(at: index) {
709         case .mulan:
710           var _v = _t.characters(at: index, type: Attacker.self)
711           characters.append(CharacterUnion(_v?.unpack(), type: .mulan))
712         case .rapunzel:
713           var _v = _t.characters(at: index, type: Rapunzel_Mutable.self)
714           characters.append(CharacterUnion(_v?.unpack(), type: .rapunzel))
715         case .belle:
716           var _v = _t.characters(at: index, type: BookReader_Mutable.self)
717           characters.append(CharacterUnion(_v?.unpack(), type: .belle))
718         case .bookfan:
719           var _v = _t.characters(at: index, type: BookReader_Mutable.self)
720           characters.append(CharacterUnion(_v?.unpack(), type: .bookfan))
721         case .other:
722           var _v = _t.characters(at: index, type: String.self)
723           characters.append(CharacterUnion(_v?.unpack(), type: .other))
724         case .unused:
725           var _v = _t.characters(at: index, type: String.self)
726           characters.append(CharacterUnion(_v?.unpack(), type: .unused))
727         default: break
728         }
729     }
730   }
731 
732   public init() {
733     characters = []
734   }
735 
serializenull736   public func serialize() -> ByteBuffer { return serialize(type: Movie.self) }
737 
738 }
739