add swift flatbuffers
This commit is contained in:
@@ -0,0 +1 @@
|
||||
|
||||
@@ -0,0 +1 @@
|
||||
enum Color:byte { red, green, blue }
|
||||
@@ -0,0 +1,6 @@
|
||||
enum Color:byte { red, green, blue }
|
||||
|
||||
struct Vec3 {
|
||||
x:float;
|
||||
y:float;
|
||||
}
|
||||
@@ -0,0 +1,12 @@
|
||||
enum Color:byte { red, green, blue }
|
||||
|
||||
struct Vec3 {
|
||||
x:float;
|
||||
y:float;
|
||||
}
|
||||
|
||||
table Monster {
|
||||
pos:Vec3;
|
||||
color:Color = Blue;
|
||||
}
|
||||
|
||||
@@ -0,0 +1,18 @@
|
||||
enum Color:byte { red, green, blue }
|
||||
|
||||
struct Vec3 {
|
||||
x:float;
|
||||
y:float;
|
||||
}
|
||||
|
||||
table Monster {
|
||||
pos:Vec3;
|
||||
color:Color = Blue;
|
||||
|
||||
mana:short = 150;
|
||||
hp:short = 100;
|
||||
name:string;
|
||||
equipped:Equipment;
|
||||
weapons:[Weapon];
|
||||
path:[Vec3];
|
||||
}
|
||||
@@ -0,0 +1,25 @@
|
||||
enum Color:byte { red, green, blue }
|
||||
|
||||
union Equipment { Weapon } // Optionally add more tables.
|
||||
|
||||
struct Vec3 {
|
||||
x:float;
|
||||
y:float;
|
||||
}
|
||||
|
||||
table Monster {
|
||||
pos:Vec3;
|
||||
color:Color = Blue;
|
||||
|
||||
mana:short = 150;
|
||||
hp:short = 100;
|
||||
name:string;
|
||||
equipped:Equipment;
|
||||
weapons:[Weapon];
|
||||
path:[Vec3];
|
||||
}
|
||||
|
||||
table Weapon {
|
||||
name:string;
|
||||
damage:short;
|
||||
}
|
||||
@@ -0,0 +1,27 @@
|
||||
enum Color:byte { red, green, blue }
|
||||
|
||||
union Equipment { Weapon } // Optionally add more tables.
|
||||
|
||||
struct Vec3 {
|
||||
x:float;
|
||||
y:float;
|
||||
}
|
||||
|
||||
table Monster {
|
||||
pos:Vec3;
|
||||
color:Color = Blue;
|
||||
|
||||
mana:short = 150;
|
||||
hp:short = 100;
|
||||
name:string;
|
||||
equipped:Equipment;
|
||||
weapons:[Weapon];
|
||||
path:[Vec3];
|
||||
}
|
||||
|
||||
table Weapon {
|
||||
name:string;
|
||||
damage:short;
|
||||
}
|
||||
|
||||
root_type Monster; // flatc --swift monster.fbs
|
||||
@@ -0,0 +1 @@
|
||||
import Foundation
|
||||
@@ -0,0 +1,71 @@
|
||||
import FlatBuffers
|
||||
import Foundation
|
||||
|
||||
func run() {
|
||||
// create a `FlatBufferBuilder`, which will be used to serialize objects
|
||||
let builder = FlatBufferBuilder(initialSize: 1024)
|
||||
|
||||
let weapon1Name = builder.create(string: "Sword")
|
||||
let weapon2Name = builder.create(string: "Axe")
|
||||
|
||||
// start creating the weapon by calling startWeapon
|
||||
let weapon1Start = Weapon.startWeapon(&builder)
|
||||
Weapon.add(name: weapon1Name, &builder)
|
||||
Weapon.add(damage: 3, &builder)
|
||||
// end the object by passing the start point for the weapon 1
|
||||
let sword = Weapon.endWeapon(&builder, start: weapon1Start)
|
||||
|
||||
let weapon2Start = Weapon.startWeapon(&builder)
|
||||
Weapon.add(name: weapon2Name, &builder)
|
||||
Weapon.add(damage: 5, &builder)
|
||||
let axe = Weapon.endWeapon(&builder, start: weapon2Start)
|
||||
|
||||
// Create a FlatBuffer `vector` that contains offsets to the sword and axe
|
||||
// we created above.
|
||||
let weaponsOffset = builder.createVector(ofOffsets: [sword, axe])
|
||||
|
||||
// Name of the Monster.
|
||||
let name = builder.create(string: "Orc")
|
||||
|
||||
let pathOffset = fbb.createVector(ofStructs: [
|
||||
Vec3(x: 0, y: 0),
|
||||
Vec3(x: 5, y: 5),
|
||||
])
|
||||
|
||||
// startVector(len, elementSize: MemoryLayout<Offset>.size)
|
||||
// for o in offsets.reversed() {
|
||||
// push(element: o)
|
||||
// }
|
||||
// endVector(len: len)
|
||||
|
||||
let orc = Monster.createMonster(
|
||||
&builder,
|
||||
pos: Vec3(x: 1, y: 2),
|
||||
hp: 300,
|
||||
nameOffset: name,
|
||||
color: .red,
|
||||
weaponsVectorOffset: weaponsOffset,
|
||||
equippedType: .weapon,
|
||||
equippedOffset: axe,
|
||||
pathOffset: pathOffset)
|
||||
|
||||
// let start = Monster.startMonster(&builder)
|
||||
// Monster.add(pos: Vec3(x: 1, y: 2), &builder)
|
||||
// Monster.add(hp: 300, &builder)
|
||||
// Monster.add(name: name, &builder)
|
||||
// Monster.add(color: .red, &builder)
|
||||
// Monster.addVectorOf(weapons: weaponsOffset, &builder)
|
||||
// Monster.add(equippedType: .weapon, &builder)
|
||||
// Monster.addVectorOf(paths: weaponsOffset, &builder)
|
||||
// Monster.add(equipped: axe, &builder)
|
||||
// var orc = Monster.endMonster(&builder, start: start)
|
||||
|
||||
// Call `finish(offset:)` to instruct the builder that this monster is complete.
|
||||
builder.finish(offset: orc)
|
||||
// This must be called after `finish()`.
|
||||
// `sizedByteArray` returns the finished buf of type [UInt8].
|
||||
let buf = builder.sizedByteArray
|
||||
|
||||
// or you can use to get an object of type Data
|
||||
let bufData = ByteBuffer(data: builder.sizedBuffer)
|
||||
}
|
||||
@@ -0,0 +1,11 @@
|
||||
import FlatBuffers
|
||||
import Foundation
|
||||
|
||||
func run() {
|
||||
// create a ByteBuffer(:) from an [UInt8] or Data()
|
||||
let buf = [] // Get your data
|
||||
var byteBuffer = ByteBuffer(bytes: buf)
|
||||
// Get an accessor to the root object inside the buffer.
|
||||
let monster: Monster = try! getCheckedRoot(byteBuffer: &byteBuffer)
|
||||
// let monster: Monster = getRoot(byteBuffer: &byteBuffer)
|
||||
}
|
||||
@@ -0,0 +1,19 @@
|
||||
import FlatBuffers
|
||||
import Foundation
|
||||
|
||||
func run() {
|
||||
// create a ByteBuffer(:) from an [UInt8] or Data()
|
||||
let buf = [] // Get your data
|
||||
var byteBuffer = ByteBuffer(bytes: buf)
|
||||
// Get an accessor to the root object inside the buffer.
|
||||
let monster: Monster = try! getCheckedRoot(byteBuffer: &byteBuffer)
|
||||
// let monster: Monster = getRoot(byteBuffer: &byteBuffer)
|
||||
|
||||
let hp = monster.hp
|
||||
let mana = monster.mana
|
||||
let name = monster.name // returns an optional string
|
||||
|
||||
let pos = monster.pos
|
||||
let x = pos.x
|
||||
let y = pos.y
|
||||
}
|
||||
@@ -0,0 +1,26 @@
|
||||
import FlatBuffers
|
||||
import Foundation
|
||||
|
||||
func run() {
|
||||
// create a ByteBuffer(:) from an [UInt8] or Data()
|
||||
let buf = [] // Get your data
|
||||
var byteBuffer = ByteBuffer(bytes: buf)
|
||||
// Get an accessor to the root object inside the buffer.
|
||||
let monster: Monster = try! getCheckedRoot(byteBuffer: &byteBuffer)
|
||||
// let monster: Monster = getRoot(byteBuffer: &byteBuffer)
|
||||
|
||||
let hp = monster.hp
|
||||
let mana = monster.mana
|
||||
let name = monster.name // returns an optional string
|
||||
|
||||
let pos = monster.pos
|
||||
let x = pos.x
|
||||
let y = pos.y
|
||||
|
||||
// Get and check if the monster has an equipped item
|
||||
if monster.equippedType == .weapon {
|
||||
let _weapon = monster.equipped(type: Weapon.self)
|
||||
let name = _weapon.name // should return "Axe"
|
||||
let dmg = _weapon.damage // should return 5
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,2 @@
|
||||
import FlatBuffers
|
||||
import Foundation
|
||||
@@ -0,0 +1,7 @@
|
||||
import FlatBuffers
|
||||
import Foundation
|
||||
|
||||
func run() {
|
||||
// create a `FlatBufferBuilder`, which will be used to serialize objects
|
||||
let builder = FlatBufferBuilder(initialSize: 1024)
|
||||
}
|
||||
@@ -0,0 +1,10 @@
|
||||
import FlatBuffers
|
||||
import Foundation
|
||||
|
||||
func run() {
|
||||
// create a `FlatBufferBuilder`, which will be used to serialize objects
|
||||
let builder = FlatBufferBuilder(initialSize: 1024)
|
||||
|
||||
let weapon1Name = builder.create(string: "Sword")
|
||||
let weapon2Name = builder.create(string: "Axe")
|
||||
}
|
||||
@@ -0,0 +1,22 @@
|
||||
import FlatBuffers
|
||||
import Foundation
|
||||
|
||||
func run() {
|
||||
// create a `FlatBufferBuilder`, which will be used to serialize objects
|
||||
let builder = FlatBufferBuilder(initialSize: 1024)
|
||||
|
||||
let weapon1Name = builder.create(string: "Sword")
|
||||
let weapon2Name = builder.create(string: "Axe")
|
||||
|
||||
// start creating the weapon by calling startWeapon
|
||||
let weapon1Start = Weapon.startWeapon(&builder)
|
||||
Weapon.add(name: weapon1Name, &builder)
|
||||
Weapon.add(damage: 3, &builder)
|
||||
// end the object by passing the start point for the weapon 1
|
||||
let sword = Weapon.endWeapon(&builder, start: weapon1Start)
|
||||
|
||||
let weapon2Start = Weapon.startWeapon(&builder)
|
||||
Weapon.add(name: weapon2Name, &builder)
|
||||
Weapon.add(damage: 5, &builder)
|
||||
let axe = Weapon.endWeapon(&builder, start: weapon2Start)
|
||||
}
|
||||
@@ -0,0 +1,26 @@
|
||||
import FlatBuffers
|
||||
import Foundation
|
||||
|
||||
func run() {
|
||||
// create a `FlatBufferBuilder`, which will be used to serialize objects
|
||||
let builder = FlatBufferBuilder(initialSize: 1024)
|
||||
|
||||
let weapon1Name = builder.create(string: "Sword")
|
||||
let weapon2Name = builder.create(string: "Axe")
|
||||
|
||||
// start creating the weapon by calling startWeapon
|
||||
let weapon1Start = Weapon.startWeapon(&builder)
|
||||
Weapon.add(name: weapon1Name, &builder)
|
||||
Weapon.add(damage: 3, &builder)
|
||||
// end the object by passing the start point for the weapon 1
|
||||
let sword = Weapon.endWeapon(&builder, start: weapon1Start)
|
||||
|
||||
let weapon2Start = Weapon.startWeapon(&builder)
|
||||
Weapon.add(name: weapon2Name, &builder)
|
||||
Weapon.add(damage: 5, &builder)
|
||||
let axe = Weapon.endWeapon(&builder, start: weapon2Start)
|
||||
|
||||
// Create a FlatBuffer `vector` that contains offsets to the sword and axe
|
||||
// we created above.
|
||||
let weaponsOffset = builder.createVector(ofOffsets: [sword, axe])
|
||||
}
|
||||
@@ -0,0 +1,29 @@
|
||||
import FlatBuffers
|
||||
import Foundation
|
||||
|
||||
func run() {
|
||||
// create a `FlatBufferBuilder`, which will be used to serialize objects
|
||||
let builder = FlatBufferBuilder(initialSize: 1024)
|
||||
|
||||
let weapon1Name = builder.create(string: "Sword")
|
||||
let weapon2Name = builder.create(string: "Axe")
|
||||
|
||||
// start creating the weapon by calling startWeapon
|
||||
let weapon1Start = Weapon.startWeapon(&builder)
|
||||
Weapon.add(name: weapon1Name, &builder)
|
||||
Weapon.add(damage: 3, &builder)
|
||||
// end the object by passing the start point for the weapon 1
|
||||
let sword = Weapon.endWeapon(&builder, start: weapon1Start)
|
||||
|
||||
let weapon2Start = Weapon.startWeapon(&builder)
|
||||
Weapon.add(name: weapon2Name, &builder)
|
||||
Weapon.add(damage: 5, &builder)
|
||||
let axe = Weapon.endWeapon(&builder, start: weapon2Start)
|
||||
|
||||
// Create a FlatBuffer `vector` that contains offsets to the sword and axe
|
||||
// we created above.
|
||||
let weaponsOffset = builder.createVector(ofOffsets: [sword, axe])
|
||||
|
||||
// Name of the Monster.
|
||||
let name = builder.create(string: "Orc")
|
||||
}
|
||||
@@ -0,0 +1,40 @@
|
||||
import FlatBuffers
|
||||
import Foundation
|
||||
|
||||
func run() {
|
||||
// create a `FlatBufferBuilder`, which will be used to serialize objects
|
||||
let builder = FlatBufferBuilder(initialSize: 1024)
|
||||
|
||||
let weapon1Name = builder.create(string: "Sword")
|
||||
let weapon2Name = builder.create(string: "Axe")
|
||||
|
||||
// start creating the weapon by calling startWeapon
|
||||
let weapon1Start = Weapon.startWeapon(&builder)
|
||||
Weapon.add(name: weapon1Name, &builder)
|
||||
Weapon.add(damage: 3, &builder)
|
||||
// end the object by passing the start point for the weapon 1
|
||||
let sword = Weapon.endWeapon(&builder, start: weapon1Start)
|
||||
|
||||
let weapon2Start = Weapon.startWeapon(&builder)
|
||||
Weapon.add(name: weapon2Name, &builder)
|
||||
Weapon.add(damage: 5, &builder)
|
||||
let axe = Weapon.endWeapon(&builder, start: weapon2Start)
|
||||
|
||||
// Create a FlatBuffer `vector` that contains offsets to the sword and axe
|
||||
// we created above.
|
||||
let weaponsOffset = builder.createVector(ofOffsets: [sword, axe])
|
||||
|
||||
// Name of the Monster.
|
||||
let name = builder.create(string: "Orc")
|
||||
|
||||
let pathOffset = fbb.createVector(ofStructs: [
|
||||
Vec3(x: 0, y: 0),
|
||||
Vec3(x: 5, y: 5),
|
||||
])
|
||||
|
||||
// startVector(len, elementSize: MemoryLayout<Offset>.size)
|
||||
// for o in offsets.reversed() {
|
||||
// push(element: o)
|
||||
// }
|
||||
// endVector(len: len)
|
||||
}
|
||||
@@ -0,0 +1,62 @@
|
||||
import FlatBuffers
|
||||
import Foundation
|
||||
|
||||
func run() {
|
||||
// create a `FlatBufferBuilder`, which will be used to serialize objects
|
||||
let builder = FlatBufferBuilder(initialSize: 1024)
|
||||
|
||||
let weapon1Name = builder.create(string: "Sword")
|
||||
let weapon2Name = builder.create(string: "Axe")
|
||||
|
||||
// start creating the weapon by calling startWeapon
|
||||
let weapon1Start = Weapon.startWeapon(&builder)
|
||||
Weapon.add(name: weapon1Name, &builder)
|
||||
Weapon.add(damage: 3, &builder)
|
||||
// end the object by passing the start point for the weapon 1
|
||||
let sword = Weapon.endWeapon(&builder, start: weapon1Start)
|
||||
|
||||
let weapon2Start = Weapon.startWeapon(&builder)
|
||||
Weapon.add(name: weapon2Name, &builder)
|
||||
Weapon.add(damage: 5, &builder)
|
||||
let axe = Weapon.endWeapon(&builder, start: weapon2Start)
|
||||
|
||||
// Create a FlatBuffer `vector` that contains offsets to the sword and axe
|
||||
// we created above.
|
||||
let weaponsOffset = builder.createVector(ofOffsets: [sword, axe])
|
||||
|
||||
// Name of the Monster.
|
||||
let name = builder.create(string: "Orc")
|
||||
|
||||
let pathOffset = fbb.createVector(ofStructs: [
|
||||
Vec3(x: 0, y: 0),
|
||||
Vec3(x: 5, y: 5),
|
||||
])
|
||||
|
||||
// startVector(len, elementSize: MemoryLayout<Offset>.size)
|
||||
// for o in offsets.reversed() {
|
||||
// push(element: o)
|
||||
// }
|
||||
// endVector(len: len)
|
||||
|
||||
let orc = Monster.createMonster(
|
||||
&builder,
|
||||
pos: Vec3(x: 1, y: 2),
|
||||
hp: 300,
|
||||
nameOffset: name,
|
||||
color: .red,
|
||||
weaponsVectorOffset: weaponsOffset,
|
||||
equippedType: .weapon,
|
||||
equippedOffset: axe,
|
||||
pathOffset: pathOffset)
|
||||
|
||||
// let start = Monster.startMonster(&builder)
|
||||
// Monster.add(pos: Vec3(x: 1, y: 2), &builder)
|
||||
// Monster.add(hp: 300, &builder)
|
||||
// Monster.add(name: name, &builder)
|
||||
// Monster.add(color: .red, &builder)
|
||||
// Monster.addVectorOf(weapons: weaponsOffset, &builder)
|
||||
// Monster.add(equippedType: .weapon, &builder)
|
||||
// Monster.addVectorOf(paths: weaponsOffset, &builder)
|
||||
// Monster.add(equipped: axe, &builder)
|
||||
// var orc = Monster.endMonster(&builder, start: start)
|
||||
}
|
||||
Reference in New Issue
Block a user