2 * Copyright 2021 Google Inc. All rights reserved.
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
8 * http://www.apache.org/licenses/LICENSE-2.0
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
19 /// NativeStruct is a protocol that indicates if the struct is a native `swift` struct
20 /// since now we will be serializing native structs into the buffer.
21 public protocol NativeStruct {}
23 /// FlatbufferObject structures all the Flatbuffers objects
24 public protocol FlatBufferObject {
25 var __buffer: ByteBuffer! { get }
26 init(_ bb: ByteBuffer, o: Int32)
29 public protocol ObjectAPIPacker {
31 static func pack(_ builder: inout FlatBufferBuilder, obj: inout T) -> Offset<UOffset>
32 mutating func unpack() -> T
35 public protocol Enum {
36 associatedtype T: Scalar
37 static var byteSize: Int { get }