美文网首页
flatbuffers

flatbuffers

作者: hehehehe | 来源:发表于2023-11-06 20:32 被阅读0次

https://github.com/google/flatbuffers/releases/download/v23.5.26/Linux.flatc.binary.g++-10.zip

monster.fbs

// Example IDL file for our monster's schema.
 
namespace MyGame.Sample;
 
enum Color:byte { Red = 0, Green, Blue = 2 }
 
union Equipment { Weapon } // Optionally add more tables.
 
struct Vec3 {
  x:float;
  y:float;
  z:float;
}
 
table Monster {
  pos:Vec3; // Struct.
  mana:short = 150;
  hp:short = 100;
  name:string;
  friendly:bool = false (deprecated);
  inventory:[ubyte];  // Vector of scalars.
  color:Color = Blue; // Enum.
  weapons:[Weapon];   // Vector of tables.
  equipped:Equipment; // Union.
  path:[Vec3];        // Vector of structs.
}
 
table Weapon {
  name:string;
  damage:short;
}
 
root_type Monster;

./flatc --python monster.fbs

import flatbuffers
 
# Generated by `flatc`.
import MyGame.Sample.Color
import MyGame.Sample.Monster
import MyGame.Sample.Vec3

buf = /* the data you just read, in an object of type "bytearray" */
 
// Get an accessor to the root object inside the buffer.
monster = MyGame.Sample.Monster.Monster.GetRootAs(buf, 0)
 
# Note: We use `0` for the offset here, which is typical for most buffers
# you would read.  If you wanted to read from the `builder.Bytes` directly,
# you would need to pass in the offset of `builder.Head()`, as the builder
# constructs the buffer backwards, so may not start at offset 0.


hp = monster.Hp()
mana = monster.Mana()
name = monster.Name()

pos = monster.Pos()
x = pos.X()
y = pos.Y()
z = pos.Z()


相关文章

网友评论

      本文标题:flatbuffers

      本文链接:https://www.haomeiwen.com/subject/tndxwdtx.html