mirror of
https://github.com/google/flatbuffers.git
synced 2026-06-10 07:06:26 +00:00
Merge branch 'master' of https://github.com/google/flatbuffers
This commit is contained in:
@@ -17,9 +17,9 @@ public struct Monster : IFlatbufferObject
|
||||
|
||||
|
||||
public static void StartMonster(FlatBufferBuilder builder) { builder.StartObject(0); }
|
||||
public static Offset<MyGame.Example2.Monster> EndMonster(FlatBufferBuilder builder) {
|
||||
public static Offset<Monster> EndMonster(FlatBufferBuilder builder) {
|
||||
int o = builder.EndObject();
|
||||
return new Offset<MyGame.Example2.Monster>(o);
|
||||
return new Offset<Monster>(o);
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
Binary file not shown.
@@ -76,6 +76,22 @@ inline const char **EnumNamesAny() {
|
||||
|
||||
inline const char *EnumNameAny(Any e) { return EnumNamesAny()[static_cast<int>(e)]; }
|
||||
|
||||
template<typename T> struct AnyTraits {
|
||||
static const Any enum_value = Any_NONE;
|
||||
};
|
||||
|
||||
template<> struct AnyTraits<Monster> {
|
||||
static const Any enum_value = Any_Monster;
|
||||
};
|
||||
|
||||
template<> struct AnyTraits<TestSimpleTableWithEnum> {
|
||||
static const Any enum_value = Any_TestSimpleTableWithEnum;
|
||||
};
|
||||
|
||||
template<> struct AnyTraits<MyGame::Example2::Monster> {
|
||||
static const Any enum_value = Any_MyGame_Example2_Monster;
|
||||
};
|
||||
|
||||
inline bool VerifyAny(flatbuffers::Verifier &verifier, const void *union_obj, Any type);
|
||||
|
||||
MANUALLY_ALIGNED_STRUCT(2) Test FLATBUFFERS_FINAL_CLASS {
|
||||
|
||||
@@ -24,9 +24,9 @@ public struct TableInFirstNS : IFlatbufferObject
|
||||
public static void AddFooTable(FlatBufferBuilder builder, Offset<NamespaceA.NamespaceB.TableInNestedNS> fooTableOffset) { builder.AddOffset(0, fooTableOffset.Value, 0); }
|
||||
public static void AddFooEnum(FlatBufferBuilder builder, NamespaceA.NamespaceB.EnumInNestedNS fooEnum) { builder.AddSbyte(1, (sbyte)fooEnum, 0); }
|
||||
public static void AddFooStruct(FlatBufferBuilder builder, Offset<NamespaceA.NamespaceB.StructInNestedNS> fooStructOffset) { builder.AddStruct(2, fooStructOffset.Value, 0); }
|
||||
public static Offset<NamespaceA.TableInFirstNS> EndTableInFirstNS(FlatBufferBuilder builder) {
|
||||
public static Offset<TableInFirstNS> EndTableInFirstNS(FlatBufferBuilder builder) {
|
||||
int o = builder.EndObject();
|
||||
return new Offset<NamespaceA.TableInFirstNS>(o);
|
||||
return new Offset<TableInFirstNS>(o);
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
@@ -16,11 +16,11 @@ public struct TableInC : IFlatbufferObject
|
||||
public TableInC __assign(int _i, ByteBuffer _bb) { __init(_i, _bb); return this; }
|
||||
|
||||
public NamespaceA.TableInFirstNS? ReferToA1 { get { int o = __p.__offset(4); return o != 0 ? (NamespaceA.TableInFirstNS?)(new NamespaceA.TableInFirstNS()).__assign(__p.__indirect(o + __p.bb_pos), __p.bb) : null; } }
|
||||
public SecondTableInA? ReferToA2 { get { int o = __p.__offset(6); return o != 0 ? (SecondTableInA?)(new SecondTableInA()).__assign(__p.__indirect(o + __p.bb_pos), __p.bb) : null; } }
|
||||
public NamespaceA.SecondTableInA? ReferToA2 { get { int o = __p.__offset(6); return o != 0 ? (NamespaceA.SecondTableInA?)(new NamespaceA.SecondTableInA()).__assign(__p.__indirect(o + __p.bb_pos), __p.bb) : null; } }
|
||||
|
||||
public static Offset<NamespaceC.TableInC> CreateTableInC(FlatBufferBuilder builder,
|
||||
public static Offset<TableInC> CreateTableInC(FlatBufferBuilder builder,
|
||||
Offset<NamespaceA.TableInFirstNS> refer_to_a1Offset = default(Offset<NamespaceA.TableInFirstNS>),
|
||||
Offset<SecondTableInA> refer_to_a2Offset = default(Offset<SecondTableInA>)) {
|
||||
Offset<NamespaceA.SecondTableInA> refer_to_a2Offset = default(Offset<NamespaceA.SecondTableInA>)) {
|
||||
builder.StartObject(2);
|
||||
TableInC.AddReferToA2(builder, refer_to_a2Offset);
|
||||
TableInC.AddReferToA1(builder, refer_to_a1Offset);
|
||||
@@ -29,10 +29,10 @@ public struct TableInC : IFlatbufferObject
|
||||
|
||||
public static void StartTableInC(FlatBufferBuilder builder) { builder.StartObject(2); }
|
||||
public static void AddReferToA1(FlatBufferBuilder builder, Offset<NamespaceA.TableInFirstNS> referToA1Offset) { builder.AddOffset(0, referToA1Offset.Value, 0); }
|
||||
public static void AddReferToA2(FlatBufferBuilder builder, Offset<SecondTableInA> referToA2Offset) { builder.AddOffset(1, referToA2Offset.Value, 0); }
|
||||
public static Offset<NamespaceC.TableInC> EndTableInC(FlatBufferBuilder builder) {
|
||||
public static void AddReferToA2(FlatBufferBuilder builder, Offset<NamespaceA.SecondTableInA> referToA2Offset) { builder.AddOffset(1, referToA2Offset.Value, 0); }
|
||||
public static Offset<TableInC> EndTableInC(FlatBufferBuilder builder) {
|
||||
int o = builder.EndObject();
|
||||
return new Offset<NamespaceC.TableInC>(o);
|
||||
return new Offset<TableInC>(o);
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
@@ -16,8 +16,8 @@ public final class TableInC extends Table {
|
||||
|
||||
public NamespaceA.TableInFirstNS referToA1() { return referToA1(new NamespaceA.TableInFirstNS()); }
|
||||
public NamespaceA.TableInFirstNS referToA1(NamespaceA.TableInFirstNS obj) { int o = __offset(4); return o != 0 ? obj.__assign(__indirect(o + bb_pos), bb) : null; }
|
||||
public SecondTableInA referToA2() { return referToA2(new SecondTableInA()); }
|
||||
public SecondTableInA referToA2(SecondTableInA obj) { int o = __offset(6); return o != 0 ? obj.__assign(__indirect(o + bb_pos), bb) : null; }
|
||||
public NamespaceA.SecondTableInA referToA2() { return referToA2(new NamespaceA.SecondTableInA()); }
|
||||
public NamespaceA.SecondTableInA referToA2(NamespaceA.SecondTableInA obj) { int o = __offset(6); return o != 0 ? obj.__assign(__indirect(o + bb_pos), bb) : null; }
|
||||
|
||||
public static int createTableInC(FlatBufferBuilder builder,
|
||||
int refer_to_a1Offset,
|
||||
|
||||
@@ -465,7 +465,7 @@ void ReflectionTest(uint8_t *flatbuf, size_t length) {
|
||||
// Make sure the schema is what we expect it to be.
|
||||
auto &schema = *reflection::GetSchema(bfbsfile.c_str());
|
||||
auto root_table = schema.root_table();
|
||||
TEST_EQ_STR(root_table->name()->c_str(), "Monster");
|
||||
TEST_EQ_STR(root_table->name()->c_str(), "MyGame.Example.Monster");
|
||||
auto fields = root_table->fields();
|
||||
auto hp_field_ptr = fields->LookupByKey("hp");
|
||||
TEST_NOTNULL(hp_field_ptr);
|
||||
@@ -478,6 +478,14 @@ void ReflectionTest(uint8_t *flatbuf, size_t length) {
|
||||
TEST_NOTNULL(friendly_field_ptr->attributes());
|
||||
TEST_NOTNULL(friendly_field_ptr->attributes()->LookupByKey("priority"));
|
||||
|
||||
// Make sure the table index is what we expect it to be.
|
||||
auto pos_field_ptr = fields->LookupByKey("pos");
|
||||
TEST_NOTNULL(pos_field_ptr);
|
||||
TEST_EQ(pos_field_ptr->type()->base_type(), reflection::Obj);
|
||||
auto pos_table_ptr = schema.objects()->Get(pos_field_ptr->type()->index());
|
||||
TEST_NOTNULL(pos_table_ptr);
|
||||
TEST_EQ_STR(pos_table_ptr->name()->c_str(), "MyGame.Example.Vec3");
|
||||
|
||||
// Now use it to dynamically access a buffer.
|
||||
auto &root = *flatbuffers::GetAnyRoot(flatbuf);
|
||||
auto hp = flatbuffers::GetFieldI<uint16_t>(root, hp_field);
|
||||
|
||||
Reference in New Issue
Block a user