mirror of
https://github.com/google/flatbuffers.git
synced 2026-06-08 14:15:17 +00:00
make unions with type aliases more usable (#5019)
Some generic C++ and Rust code is not generated when unions use type aliases because of potential ambiguity. Actually check for this ambiguity and only disable offending code only if it is found.
This commit is contained in:
committed by
Wouter van Oortmerssen
parent
4c3b6c247d
commit
91fe9ba93f
17
tests/MyGame/Example/AnyAmbiguousAliases.cs
Normal file
17
tests/MyGame/Example/AnyAmbiguousAliases.cs
Normal file
@@ -0,0 +1,17 @@
|
||||
// <auto-generated>
|
||||
// automatically generated by the FlatBuffers compiler, do not modify
|
||||
// </auto-generated>
|
||||
|
||||
namespace MyGame.Example
|
||||
{
|
||||
|
||||
public enum AnyAmbiguousAliases : byte
|
||||
{
|
||||
NONE = 0,
|
||||
M1 = 1,
|
||||
M2 = 2,
|
||||
M3 = 3,
|
||||
};
|
||||
|
||||
|
||||
}
|
||||
19
tests/MyGame/Example/AnyAmbiguousAliases.go
Normal file
19
tests/MyGame/Example/AnyAmbiguousAliases.go
Normal file
@@ -0,0 +1,19 @@
|
||||
// Code generated by the FlatBuffers compiler. DO NOT EDIT.
|
||||
|
||||
package Example
|
||||
|
||||
type AnyAmbiguousAliases = byte
|
||||
const (
|
||||
AnyAmbiguousAliasesNONE AnyAmbiguousAliases = 0
|
||||
AnyAmbiguousAliasesM1 AnyAmbiguousAliases = 1
|
||||
AnyAmbiguousAliasesM2 AnyAmbiguousAliases = 2
|
||||
AnyAmbiguousAliasesM3 AnyAmbiguousAliases = 3
|
||||
)
|
||||
|
||||
var EnumNamesAnyAmbiguousAliases = map[AnyAmbiguousAliases]string{
|
||||
AnyAmbiguousAliasesNONE:"NONE",
|
||||
AnyAmbiguousAliasesM1:"M1",
|
||||
AnyAmbiguousAliasesM2:"M2",
|
||||
AnyAmbiguousAliasesM3:"M3",
|
||||
}
|
||||
|
||||
18
tests/MyGame/Example/AnyAmbiguousAliases.java
Normal file
18
tests/MyGame/Example/AnyAmbiguousAliases.java
Normal file
@@ -0,0 +1,18 @@
|
||||
// automatically generated by the FlatBuffers compiler, do not modify
|
||||
|
||||
package MyGame.Example;
|
||||
|
||||
|
||||
@javax.annotation.Generated(value="flatc")
|
||||
public final class AnyAmbiguousAliases {
|
||||
private AnyAmbiguousAliases() { }
|
||||
public static final byte NONE = 0;
|
||||
public static final byte M1 = 1;
|
||||
public static final byte M2 = 2;
|
||||
public static final byte M3 = 3;
|
||||
|
||||
public static final String[] names = { "NONE", "M1", "M2", "M3", };
|
||||
|
||||
public static String name(int e) { return names[e]; }
|
||||
}
|
||||
|
||||
12
tests/MyGame/Example/AnyAmbiguousAliases.lua
Normal file
12
tests/MyGame/Example/AnyAmbiguousAliases.lua
Normal file
@@ -0,0 +1,12 @@
|
||||
-- automatically generated by the FlatBuffers compiler, do not modify
|
||||
|
||||
-- namespace: Example
|
||||
|
||||
local AnyAmbiguousAliases = {
|
||||
NONE = 0,
|
||||
M1 = 1,
|
||||
M2 = 2,
|
||||
M3 = 3,
|
||||
}
|
||||
|
||||
return AnyAmbiguousAliases -- return the module
|
||||
27
tests/MyGame/Example/AnyAmbiguousAliases.php
Normal file
27
tests/MyGame/Example/AnyAmbiguousAliases.php
Normal file
@@ -0,0 +1,27 @@
|
||||
<?php
|
||||
// automatically generated by the FlatBuffers compiler, do not modify
|
||||
|
||||
namespace MyGame\Example;
|
||||
|
||||
class AnyAmbiguousAliases
|
||||
{
|
||||
const NONE = 0;
|
||||
const M1 = 1;
|
||||
const M2 = 2;
|
||||
const M3 = 3;
|
||||
|
||||
private static $names = array(
|
||||
"NONE",
|
||||
"M1",
|
||||
"M2",
|
||||
"M3",
|
||||
);
|
||||
|
||||
public static function Name($e)
|
||||
{
|
||||
if (!isset(self::$names[$e])) {
|
||||
throw new \Exception();
|
||||
}
|
||||
return self::$names[$e];
|
||||
}
|
||||
}
|
||||
10
tests/MyGame/Example/AnyAmbiguousAliases.py
Normal file
10
tests/MyGame/Example/AnyAmbiguousAliases.py
Normal file
@@ -0,0 +1,10 @@
|
||||
# automatically generated by the FlatBuffers compiler, do not modify
|
||||
|
||||
# namespace: Example
|
||||
|
||||
class AnyAmbiguousAliases(object):
|
||||
NONE = 0
|
||||
M1 = 1
|
||||
M2 = 2
|
||||
M3 = 3
|
||||
|
||||
17
tests/MyGame/Example/AnyUniqueAliases.cs
Normal file
17
tests/MyGame/Example/AnyUniqueAliases.cs
Normal file
@@ -0,0 +1,17 @@
|
||||
// <auto-generated>
|
||||
// automatically generated by the FlatBuffers compiler, do not modify
|
||||
// </auto-generated>
|
||||
|
||||
namespace MyGame.Example
|
||||
{
|
||||
|
||||
public enum AnyUniqueAliases : byte
|
||||
{
|
||||
NONE = 0,
|
||||
M = 1,
|
||||
T = 2,
|
||||
M2 = 3,
|
||||
};
|
||||
|
||||
|
||||
}
|
||||
19
tests/MyGame/Example/AnyUniqueAliases.go
Normal file
19
tests/MyGame/Example/AnyUniqueAliases.go
Normal file
@@ -0,0 +1,19 @@
|
||||
// Code generated by the FlatBuffers compiler. DO NOT EDIT.
|
||||
|
||||
package Example
|
||||
|
||||
type AnyUniqueAliases = byte
|
||||
const (
|
||||
AnyUniqueAliasesNONE AnyUniqueAliases = 0
|
||||
AnyUniqueAliasesM AnyUniqueAliases = 1
|
||||
AnyUniqueAliasesT AnyUniqueAliases = 2
|
||||
AnyUniqueAliasesM2 AnyUniqueAliases = 3
|
||||
)
|
||||
|
||||
var EnumNamesAnyUniqueAliases = map[AnyUniqueAliases]string{
|
||||
AnyUniqueAliasesNONE:"NONE",
|
||||
AnyUniqueAliasesM:"M",
|
||||
AnyUniqueAliasesT:"T",
|
||||
AnyUniqueAliasesM2:"M2",
|
||||
}
|
||||
|
||||
18
tests/MyGame/Example/AnyUniqueAliases.java
Normal file
18
tests/MyGame/Example/AnyUniqueAliases.java
Normal file
@@ -0,0 +1,18 @@
|
||||
// automatically generated by the FlatBuffers compiler, do not modify
|
||||
|
||||
package MyGame.Example;
|
||||
|
||||
|
||||
@javax.annotation.Generated(value="flatc")
|
||||
public final class AnyUniqueAliases {
|
||||
private AnyUniqueAliases() { }
|
||||
public static final byte NONE = 0;
|
||||
public static final byte M = 1;
|
||||
public static final byte T = 2;
|
||||
public static final byte M2 = 3;
|
||||
|
||||
public static final String[] names = { "NONE", "M", "T", "M2", };
|
||||
|
||||
public static String name(int e) { return names[e]; }
|
||||
}
|
||||
|
||||
12
tests/MyGame/Example/AnyUniqueAliases.lua
Normal file
12
tests/MyGame/Example/AnyUniqueAliases.lua
Normal file
@@ -0,0 +1,12 @@
|
||||
-- automatically generated by the FlatBuffers compiler, do not modify
|
||||
|
||||
-- namespace: Example
|
||||
|
||||
local AnyUniqueAliases = {
|
||||
NONE = 0,
|
||||
M = 1,
|
||||
T = 2,
|
||||
M2 = 3,
|
||||
}
|
||||
|
||||
return AnyUniqueAliases -- return the module
|
||||
27
tests/MyGame/Example/AnyUniqueAliases.php
Normal file
27
tests/MyGame/Example/AnyUniqueAliases.php
Normal file
@@ -0,0 +1,27 @@
|
||||
<?php
|
||||
// automatically generated by the FlatBuffers compiler, do not modify
|
||||
|
||||
namespace MyGame\Example;
|
||||
|
||||
class AnyUniqueAliases
|
||||
{
|
||||
const NONE = 0;
|
||||
const M = 1;
|
||||
const T = 2;
|
||||
const M2 = 3;
|
||||
|
||||
private static $names = array(
|
||||
"NONE",
|
||||
"M",
|
||||
"T",
|
||||
"M2",
|
||||
);
|
||||
|
||||
public static function Name($e)
|
||||
{
|
||||
if (!isset(self::$names[$e])) {
|
||||
throw new \Exception();
|
||||
}
|
||||
return self::$names[$e];
|
||||
}
|
||||
}
|
||||
10
tests/MyGame/Example/AnyUniqueAliases.py
Normal file
10
tests/MyGame/Example/AnyUniqueAliases.py
Normal file
@@ -0,0 +1,10 @@
|
||||
# automatically generated by the FlatBuffers compiler, do not modify
|
||||
|
||||
# namespace: Example
|
||||
|
||||
class AnyUniqueAliases(object):
|
||||
NONE = 0
|
||||
M = 1
|
||||
T = 2
|
||||
M2 = 3
|
||||
|
||||
@@ -172,8 +172,14 @@ public struct Monster : IFlatbufferObject
|
||||
#endif
|
||||
public ulong[] GetVectorOfNonOwningReferencesArray() { return __p.__vector_as_array<ulong>(88); }
|
||||
public bool MutateVectorOfNonOwningReferences(int j, ulong vector_of_non_owning_references) { int o = __p.__offset(88); if (o != 0) { __p.bb.PutUlong(__p.__vector(o) + j * 8, vector_of_non_owning_references); return true; } else { return false; } }
|
||||
public AnyUniqueAliases AnyUniqueType { get { int o = __p.__offset(90); return o != 0 ? (AnyUniqueAliases)__p.bb.Get(o + __p.bb_pos) : AnyUniqueAliases.NONE; } }
|
||||
public bool MutateAnyUniqueType(AnyUniqueAliases any_unique_type) { int o = __p.__offset(90); if (o != 0) { __p.bb.Put(o + __p.bb_pos, (byte)any_unique_type); return true; } else { return false; } }
|
||||
public TTable? AnyUnique<TTable>() where TTable : struct, IFlatbufferObject { int o = __p.__offset(92); return o != 0 ? (TTable?)__p.__union<TTable>(o) : null; }
|
||||
public AnyAmbiguousAliases AnyAmbiguousType { get { int o = __p.__offset(94); return o != 0 ? (AnyAmbiguousAliases)__p.bb.Get(o + __p.bb_pos) : AnyAmbiguousAliases.NONE; } }
|
||||
public bool MutateAnyAmbiguousType(AnyAmbiguousAliases any_ambiguous_type) { int o = __p.__offset(94); if (o != 0) { __p.bb.Put(o + __p.bb_pos, (byte)any_ambiguous_type); return true; } else { return false; } }
|
||||
public TTable? AnyAmbiguous<TTable>() where TTable : struct, IFlatbufferObject { int o = __p.__offset(96); return o != 0 ? (TTable?)__p.__union<TTable>(o) : null; }
|
||||
|
||||
public static void StartMonster(FlatBufferBuilder builder) { builder.StartObject(43); }
|
||||
public static void StartMonster(FlatBufferBuilder builder) { builder.StartObject(47); }
|
||||
public static void AddPos(FlatBufferBuilder builder, Offset<Vec3> posOffset) { builder.AddStruct(0, posOffset.Value, 0); }
|
||||
public static void AddMana(FlatBufferBuilder builder, short mana) { builder.AddShort(1, mana, 150); }
|
||||
public static void AddHp(FlatBufferBuilder builder, short hp) { builder.AddShort(2, hp, 100); }
|
||||
@@ -261,6 +267,10 @@ public struct Monster : IFlatbufferObject
|
||||
public static VectorOffset CreateVectorOfNonOwningReferencesVector(FlatBufferBuilder builder, ulong[] data) { builder.StartVector(8, data.Length, 8); for (int i = data.Length - 1; i >= 0; i--) builder.AddUlong(data[i]); return builder.EndVector(); }
|
||||
public static VectorOffset CreateVectorOfNonOwningReferencesVectorBlock(FlatBufferBuilder builder, ulong[] data) { builder.StartVector(8, data.Length, 8); builder.Add(data); return builder.EndVector(); }
|
||||
public static void StartVectorOfNonOwningReferencesVector(FlatBufferBuilder builder, int numElems) { builder.StartVector(8, numElems, 8); }
|
||||
public static void AddAnyUniqueType(FlatBufferBuilder builder, AnyUniqueAliases anyUniqueType) { builder.AddByte(43, (byte)anyUniqueType, 0); }
|
||||
public static void AddAnyUnique(FlatBufferBuilder builder, int anyUniqueOffset) { builder.AddOffset(44, anyUniqueOffset, 0); }
|
||||
public static void AddAnyAmbiguousType(FlatBufferBuilder builder, AnyAmbiguousAliases anyAmbiguousType) { builder.AddByte(45, (byte)anyAmbiguousType, 0); }
|
||||
public static void AddAnyAmbiguous(FlatBufferBuilder builder, int anyAmbiguousOffset) { builder.AddOffset(46, anyAmbiguousOffset, 0); }
|
||||
public static Offset<Monster> EndMonster(FlatBufferBuilder builder) {
|
||||
int o = builder.EndObject();
|
||||
builder.Required(o, 10); // name
|
||||
|
||||
@@ -656,8 +656,50 @@ func (rcv *Monster) VectorOfNonOwningReferencesLength() int {
|
||||
return 0
|
||||
}
|
||||
|
||||
func (rcv *Monster) AnyUniqueType() byte {
|
||||
o := flatbuffers.UOffsetT(rcv._tab.Offset(90))
|
||||
if o != 0 {
|
||||
return rcv._tab.GetByte(o + rcv._tab.Pos)
|
||||
}
|
||||
return 0
|
||||
}
|
||||
|
||||
func (rcv *Monster) MutateAnyUniqueType(n byte) bool {
|
||||
return rcv._tab.MutateByteSlot(90, n)
|
||||
}
|
||||
|
||||
func (rcv *Monster) AnyUnique(obj *flatbuffers.Table) bool {
|
||||
o := flatbuffers.UOffsetT(rcv._tab.Offset(92))
|
||||
if o != 0 {
|
||||
rcv._tab.Union(obj, o)
|
||||
return true
|
||||
}
|
||||
return false
|
||||
}
|
||||
|
||||
func (rcv *Monster) AnyAmbiguousType() byte {
|
||||
o := flatbuffers.UOffsetT(rcv._tab.Offset(94))
|
||||
if o != 0 {
|
||||
return rcv._tab.GetByte(o + rcv._tab.Pos)
|
||||
}
|
||||
return 0
|
||||
}
|
||||
|
||||
func (rcv *Monster) MutateAnyAmbiguousType(n byte) bool {
|
||||
return rcv._tab.MutateByteSlot(94, n)
|
||||
}
|
||||
|
||||
func (rcv *Monster) AnyAmbiguous(obj *flatbuffers.Table) bool {
|
||||
o := flatbuffers.UOffsetT(rcv._tab.Offset(96))
|
||||
if o != 0 {
|
||||
rcv._tab.Union(obj, o)
|
||||
return true
|
||||
}
|
||||
return false
|
||||
}
|
||||
|
||||
func MonsterStart(builder *flatbuffers.Builder) {
|
||||
builder.StartObject(43)
|
||||
builder.StartObject(47)
|
||||
}
|
||||
func MonsterAddPos(builder *flatbuffers.Builder, pos flatbuffers.UOffsetT) {
|
||||
builder.PrependStructSlot(0, flatbuffers.UOffsetT(pos), 0)
|
||||
@@ -836,6 +878,18 @@ func MonsterAddVectorOfNonOwningReferences(builder *flatbuffers.Builder, vectorO
|
||||
func MonsterStartVectorOfNonOwningReferencesVector(builder *flatbuffers.Builder, numElems int) flatbuffers.UOffsetT {
|
||||
return builder.StartVector(8, numElems, 8)
|
||||
}
|
||||
func MonsterAddAnyUniqueType(builder *flatbuffers.Builder, anyUniqueType byte) {
|
||||
builder.PrependByteSlot(43, anyUniqueType, 0)
|
||||
}
|
||||
func MonsterAddAnyUnique(builder *flatbuffers.Builder, anyUnique flatbuffers.UOffsetT) {
|
||||
builder.PrependUOffsetTSlot(44, flatbuffers.UOffsetT(anyUnique), 0)
|
||||
}
|
||||
func MonsterAddAnyAmbiguousType(builder *flatbuffers.Builder, anyAmbiguousType byte) {
|
||||
builder.PrependByteSlot(45, anyAmbiguousType, 0)
|
||||
}
|
||||
func MonsterAddAnyAmbiguous(builder *flatbuffers.Builder, anyAmbiguous flatbuffers.UOffsetT) {
|
||||
builder.PrependUOffsetTSlot(46, flatbuffers.UOffsetT(anyAmbiguous), 0)
|
||||
}
|
||||
func MonsterEnd(builder *flatbuffers.Builder) flatbuffers.UOffsetT {
|
||||
return builder.EndObject()
|
||||
}
|
||||
|
||||
@@ -148,8 +148,14 @@ public final class Monster extends Table {
|
||||
public ByteBuffer vectorOfNonOwningReferencesAsByteBuffer() { return __vector_as_bytebuffer(88, 8); }
|
||||
public ByteBuffer vectorOfNonOwningReferencesInByteBuffer(ByteBuffer _bb) { return __vector_in_bytebuffer(_bb, 88, 8); }
|
||||
public boolean mutateVectorOfNonOwningReferences(int j, long vector_of_non_owning_references) { int o = __offset(88); if (o != 0) { bb.putLong(__vector(o) + j * 8, vector_of_non_owning_references); return true; } else { return false; } }
|
||||
public byte anyUniqueType() { int o = __offset(90); return o != 0 ? bb.get(o + bb_pos) : 0; }
|
||||
public boolean mutateAnyUniqueType(byte any_unique_type) { int o = __offset(90); if (o != 0) { bb.put(o + bb_pos, any_unique_type); return true; } else { return false; } }
|
||||
public Table anyUnique(Table obj) { int o = __offset(92); return o != 0 ? __union(obj, o) : null; }
|
||||
public byte anyAmbiguousType() { int o = __offset(94); return o != 0 ? bb.get(o + bb_pos) : 0; }
|
||||
public boolean mutateAnyAmbiguousType(byte any_ambiguous_type) { int o = __offset(94); if (o != 0) { bb.put(o + bb_pos, any_ambiguous_type); return true; } else { return false; } }
|
||||
public Table anyAmbiguous(Table obj) { int o = __offset(96); return o != 0 ? __union(obj, o) : null; }
|
||||
|
||||
public static void startMonster(FlatBufferBuilder builder) { builder.startObject(43); }
|
||||
public static void startMonster(FlatBufferBuilder builder) { builder.startObject(47); }
|
||||
public static void addPos(FlatBufferBuilder builder, int posOffset) { builder.addStruct(0, posOffset, 0); }
|
||||
public static void addMana(FlatBufferBuilder builder, short mana) { builder.addShort(1, mana, 150); }
|
||||
public static void addHp(FlatBufferBuilder builder, short hp) { builder.addShort(2, hp, 100); }
|
||||
@@ -223,6 +229,10 @@ public final class Monster extends Table {
|
||||
public static void addVectorOfNonOwningReferences(FlatBufferBuilder builder, int vectorOfNonOwningReferencesOffset) { builder.addOffset(42, vectorOfNonOwningReferencesOffset, 0); }
|
||||
public static int createVectorOfNonOwningReferencesVector(FlatBufferBuilder builder, long[] data) { builder.startVector(8, data.length, 8); for (int i = data.length - 1; i >= 0; i--) builder.addLong(data[i]); return builder.endVector(); }
|
||||
public static void startVectorOfNonOwningReferencesVector(FlatBufferBuilder builder, int numElems) { builder.startVector(8, numElems, 8); }
|
||||
public static void addAnyUniqueType(FlatBufferBuilder builder, byte anyUniqueType) { builder.addByte(43, anyUniqueType, 0); }
|
||||
public static void addAnyUnique(FlatBufferBuilder builder, int anyUniqueOffset) { builder.addOffset(44, anyUniqueOffset, 0); }
|
||||
public static void addAnyAmbiguousType(FlatBufferBuilder builder, byte anyAmbiguousType) { builder.addByte(45, anyAmbiguousType, 0); }
|
||||
public static void addAnyAmbiguous(FlatBufferBuilder builder, int anyAmbiguousOffset) { builder.addOffset(46, anyAmbiguousOffset, 0); }
|
||||
public static int endMonster(FlatBufferBuilder builder) {
|
||||
int o = builder.endObject();
|
||||
builder.required(o, 10); // name
|
||||
|
||||
@@ -477,7 +477,37 @@ function Monster_mt:VectorOfNonOwningReferencesLength()
|
||||
end
|
||||
return 0
|
||||
end
|
||||
function Monster.Start(builder) builder:StartObject(43) end
|
||||
function Monster_mt:AnyUniqueType()
|
||||
local o = self.view:Offset(90)
|
||||
if o ~= 0 then
|
||||
return self.view:Get(flatbuffers.N.Uint8, o + self.view.pos)
|
||||
end
|
||||
return 0
|
||||
end
|
||||
function Monster_mt:AnyUnique()
|
||||
local o = self.view:Offset(92)
|
||||
if o ~= 0 then
|
||||
local obj = flatbuffers.view.New(require('flatbuffers.binaryarray').New(0), 0)
|
||||
self.view:Union(obj, o)
|
||||
return obj
|
||||
end
|
||||
end
|
||||
function Monster_mt:AnyAmbiguousType()
|
||||
local o = self.view:Offset(94)
|
||||
if o ~= 0 then
|
||||
return self.view:Get(flatbuffers.N.Uint8, o + self.view.pos)
|
||||
end
|
||||
return 0
|
||||
end
|
||||
function Monster_mt:AnyAmbiguous()
|
||||
local o = self.view:Offset(96)
|
||||
if o ~= 0 then
|
||||
local obj = flatbuffers.view.New(require('flatbuffers.binaryarray').New(0), 0)
|
||||
self.view:Union(obj, o)
|
||||
return obj
|
||||
end
|
||||
end
|
||||
function Monster.Start(builder) builder:StartObject(47) end
|
||||
function Monster.AddPos(builder, pos) builder:PrependStructSlot(0, pos, 0) end
|
||||
function Monster.AddMana(builder, mana) builder:PrependInt16Slot(1, mana, 150) end
|
||||
function Monster.AddHp(builder, hp) builder:PrependInt16Slot(2, hp, 100) end
|
||||
@@ -537,6 +567,10 @@ function Monster.StartVectorOfCoOwningReferencesVector(builder, numElems) return
|
||||
function Monster.AddNonOwningReference(builder, nonOwningReference) builder:PrependUint64Slot(41, nonOwningReference, 0) end
|
||||
function Monster.AddVectorOfNonOwningReferences(builder, vectorOfNonOwningReferences) builder:PrependUOffsetTRelativeSlot(42, vectorOfNonOwningReferences, 0) end
|
||||
function Monster.StartVectorOfNonOwningReferencesVector(builder, numElems) return builder:StartVector(8, numElems, 8) end
|
||||
function Monster.AddAnyUniqueType(builder, anyUniqueType) builder:PrependUint8Slot(43, anyUniqueType, 0) end
|
||||
function Monster.AddAnyUnique(builder, anyUnique) builder:PrependUOffsetTRelativeSlot(44, anyUnique, 0) end
|
||||
function Monster.AddAnyAmbiguousType(builder, anyAmbiguousType) builder:PrependUint8Slot(45, anyAmbiguousType, 0) end
|
||||
function Monster.AddAnyAmbiguous(builder, anyAmbiguous) builder:PrependUOffsetTRelativeSlot(46, anyAmbiguous, 0) end
|
||||
function Monster.End(builder) return builder:EndObject() end
|
||||
|
||||
return Monster -- return the module
|
||||
@@ -611,22 +611,58 @@ class Monster extends Table
|
||||
return $o != 0 ? $this->__vector_len($o) : 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return byte
|
||||
*/
|
||||
public function getAnyUniqueType()
|
||||
{
|
||||
$o = $this->__offset(90);
|
||||
return $o != 0 ? $this->bb->getByte($o + $this->bb_pos) : \MyGame\Example\AnyUniqueAliases::NONE;
|
||||
}
|
||||
|
||||
/**
|
||||
* @returnint
|
||||
*/
|
||||
public function getAnyUnique($obj)
|
||||
{
|
||||
$o = $this->__offset(92);
|
||||
return $o != 0 ? $this->__union($obj, $o) : null;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return byte
|
||||
*/
|
||||
public function getAnyAmbiguousType()
|
||||
{
|
||||
$o = $this->__offset(94);
|
||||
return $o != 0 ? $this->bb->getByte($o + $this->bb_pos) : \MyGame\Example\AnyAmbiguousAliases::NONE;
|
||||
}
|
||||
|
||||
/**
|
||||
* @returnint
|
||||
*/
|
||||
public function getAnyAmbiguous($obj)
|
||||
{
|
||||
$o = $this->__offset(96);
|
||||
return $o != 0 ? $this->__union($obj, $o) : null;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param FlatBufferBuilder $builder
|
||||
* @return void
|
||||
*/
|
||||
public static function startMonster(FlatBufferBuilder $builder)
|
||||
{
|
||||
$builder->StartObject(43);
|
||||
$builder->StartObject(47);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param FlatBufferBuilder $builder
|
||||
* @return Monster
|
||||
*/
|
||||
public static function createMonster(FlatBufferBuilder $builder, $pos, $mana, $hp, $name, $inventory, $color, $test_type, $test, $test4, $testarrayofstring, $testarrayoftables, $enemy, $testnestedflatbuffer, $testempty, $testbool, $testhashs32_fnv1, $testhashu32_fnv1, $testhashs64_fnv1, $testhashu64_fnv1, $testhashs32_fnv1a, $testhashu32_fnv1a, $testhashs64_fnv1a, $testhashu64_fnv1a, $testarrayofbools, $testf, $testf2, $testf3, $testarrayofstring2, $testarrayofsortedstruct, $flex, $test5, $vector_of_longs, $vector_of_doubles, $parent_namespace_test, $vector_of_referrables, $single_weak_reference, $vector_of_weak_references, $vector_of_strong_referrables, $co_owning_reference, $vector_of_co_owning_references, $non_owning_reference, $vector_of_non_owning_references)
|
||||
public static function createMonster(FlatBufferBuilder $builder, $pos, $mana, $hp, $name, $inventory, $color, $test_type, $test, $test4, $testarrayofstring, $testarrayoftables, $enemy, $testnestedflatbuffer, $testempty, $testbool, $testhashs32_fnv1, $testhashu32_fnv1, $testhashs64_fnv1, $testhashu64_fnv1, $testhashs32_fnv1a, $testhashu32_fnv1a, $testhashs64_fnv1a, $testhashu64_fnv1a, $testarrayofbools, $testf, $testf2, $testf3, $testarrayofstring2, $testarrayofsortedstruct, $flex, $test5, $vector_of_longs, $vector_of_doubles, $parent_namespace_test, $vector_of_referrables, $single_weak_reference, $vector_of_weak_references, $vector_of_strong_referrables, $co_owning_reference, $vector_of_co_owning_references, $non_owning_reference, $vector_of_non_owning_references, $any_unique_type, $any_unique, $any_ambiguous_type, $any_ambiguous)
|
||||
{
|
||||
$builder->startObject(43);
|
||||
$builder->startObject(47);
|
||||
self::addPos($builder, $pos);
|
||||
self::addMana($builder, $mana);
|
||||
self::addHp($builder, $hp);
|
||||
@@ -669,6 +705,10 @@ class Monster extends Table
|
||||
self::addVectorOfCoOwningReferences($builder, $vector_of_co_owning_references);
|
||||
self::addNonOwningReference($builder, $non_owning_reference);
|
||||
self::addVectorOfNonOwningReferences($builder, $vector_of_non_owning_references);
|
||||
self::addAnyUniqueType($builder, $any_unique_type);
|
||||
self::addAnyUnique($builder, $any_unique);
|
||||
self::addAnyAmbiguousType($builder, $any_ambiguous_type);
|
||||
self::addAnyAmbiguous($builder, $any_ambiguous);
|
||||
$o = $builder->endObject();
|
||||
$builder->required($o, 10); // name
|
||||
return $o;
|
||||
@@ -1497,6 +1537,36 @@ class Monster extends Table
|
||||
$builder->startVector(8, $numElems, 8);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param FlatBufferBuilder $builder
|
||||
* @param byte
|
||||
* @return void
|
||||
*/
|
||||
public static function addAnyUniqueType(FlatBufferBuilder $builder, $anyUniqueType)
|
||||
{
|
||||
$builder->addByteX(43, $anyUniqueType, 0);
|
||||
}
|
||||
|
||||
public static function addAnyUnique(FlatBufferBuilder $builder, $offset)
|
||||
{
|
||||
$builder->addOffsetX(44, $offset, 0);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param FlatBufferBuilder $builder
|
||||
* @param byte
|
||||
* @return void
|
||||
*/
|
||||
public static function addAnyAmbiguousType(FlatBufferBuilder $builder, $anyAmbiguousType)
|
||||
{
|
||||
$builder->addByteX(45, $anyAmbiguousType, 0);
|
||||
}
|
||||
|
||||
public static function addAnyAmbiguous(FlatBufferBuilder $builder, $offset)
|
||||
{
|
||||
$builder->addOffsetX(46, $offset, 0);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param FlatBufferBuilder $builder
|
||||
* @return int table offset
|
||||
|
||||
@@ -560,7 +560,41 @@ class Monster(object):
|
||||
return self._tab.VectorLen(o)
|
||||
return 0
|
||||
|
||||
def MonsterStart(builder): builder.StartObject(43)
|
||||
# Monster
|
||||
def AnyUniqueType(self):
|
||||
o = flatbuffers.number_types.UOffsetTFlags.py_type(self._tab.Offset(90))
|
||||
if o != 0:
|
||||
return self._tab.Get(flatbuffers.number_types.Uint8Flags, o + self._tab.Pos)
|
||||
return 0
|
||||
|
||||
# Monster
|
||||
def AnyUnique(self):
|
||||
o = flatbuffers.number_types.UOffsetTFlags.py_type(self._tab.Offset(92))
|
||||
if o != 0:
|
||||
from flatbuffers.table import Table
|
||||
obj = Table(bytearray(), 0)
|
||||
self._tab.Union(obj, o)
|
||||
return obj
|
||||
return None
|
||||
|
||||
# Monster
|
||||
def AnyAmbiguousType(self):
|
||||
o = flatbuffers.number_types.UOffsetTFlags.py_type(self._tab.Offset(94))
|
||||
if o != 0:
|
||||
return self._tab.Get(flatbuffers.number_types.Uint8Flags, o + self._tab.Pos)
|
||||
return 0
|
||||
|
||||
# Monster
|
||||
def AnyAmbiguous(self):
|
||||
o = flatbuffers.number_types.UOffsetTFlags.py_type(self._tab.Offset(96))
|
||||
if o != 0:
|
||||
from flatbuffers.table import Table
|
||||
obj = Table(bytearray(), 0)
|
||||
self._tab.Union(obj, o)
|
||||
return obj
|
||||
return None
|
||||
|
||||
def MonsterStart(builder): builder.StartObject(47)
|
||||
def MonsterAddPos(builder, pos): builder.PrependStructSlot(0, flatbuffers.number_types.UOffsetTFlags.py_type(pos), 0)
|
||||
def MonsterAddMana(builder, mana): builder.PrependInt16Slot(1, mana, 150)
|
||||
def MonsterAddHp(builder, hp): builder.PrependInt16Slot(2, hp, 100)
|
||||
@@ -620,4 +654,8 @@ def MonsterStartVectorOfCoOwningReferencesVector(builder, numElems): return buil
|
||||
def MonsterAddNonOwningReference(builder, nonOwningReference): builder.PrependUint64Slot(41, nonOwningReference, 0)
|
||||
def MonsterAddVectorOfNonOwningReferences(builder, vectorOfNonOwningReferences): builder.PrependUOffsetTRelativeSlot(42, flatbuffers.number_types.UOffsetTFlags.py_type(vectorOfNonOwningReferences), 0)
|
||||
def MonsterStartVectorOfNonOwningReferencesVector(builder, numElems): return builder.StartVector(8, numElems, 8)
|
||||
def MonsterAddAnyUniqueType(builder, anyUniqueType): builder.PrependUint8Slot(43, anyUniqueType, 0)
|
||||
def MonsterAddAnyUnique(builder, anyUnique): builder.PrependUOffsetTRelativeSlot(44, flatbuffers.number_types.UOffsetTFlags.py_type(anyUnique), 0)
|
||||
def MonsterAddAnyAmbiguousType(builder, anyAmbiguousType): builder.PrependUint8Slot(45, anyAmbiguousType, 0)
|
||||
def MonsterAddAnyAmbiguous(builder, anyAmbiguous): builder.PrependUOffsetTRelativeSlot(46, flatbuffers.number_types.UOffsetTFlags.py_type(anyAmbiguous), 0)
|
||||
def MonsterEnd(builder): return builder.EndObject()
|
||||
|
||||
Reference in New Issue
Block a user