diff --git a/net/FlatBuffers/IFlatbufferObject .cs b/net/FlatBuffers/IFlatbufferObject.cs similarity index 95% rename from net/FlatBuffers/IFlatbufferObject .cs rename to net/FlatBuffers/IFlatbufferObject.cs index fb6dc5b24d0c380ef46fd3419e971b73b699b39e..6a15aba6e5b6a0c0bb3b919a275d45e93e407227 100644 --- a/net/FlatBuffers/IFlatbufferObject .cs +++ b/net/FlatBuffers/IFlatbufferObject.cs @@ -22,5 +22,7 @@ namespace FlatBuffers public interface IFlatbufferObject { void __init(int _i, ByteBuffer _bb); + + ByteBuffer ByteBuffer { get; } } } diff --git a/src/idl_gen_general.cpp b/src/idl_gen_general.cpp index 0cbc9edc387fbabe0e25e2e5ccc38d4696441fdc..30899d4d45546726dbcc2e50fdbf5631754899c2 100644 --- a/src/idl_gen_general.cpp +++ b/src/idl_gen_general.cpp @@ -804,6 +804,11 @@ void GenStruct(StructDef &struct_def, std::string *code_ptr) { code += " private "; code += struct_def.fixed ? "Struct" : "Table"; code += " __p;\n"; + + if (lang_.language == IDLOptions::kCSharp) { + code += " public ByteBuffer ByteBuffer { get { return __p.bb; } }\n"; + } + } else { code += lang_.inheritance_marker; code += struct_def.fixed ? "Struct" : "Table"; diff --git a/tests/FlatBuffers.Test/FlatBuffers.Test.csproj b/tests/FlatBuffers.Test/FlatBuffers.Test.csproj index efdd29a757302c1296109350290890d2b8c91c7a..6e76b07f1d33fcba08f789667b31a16d9f742d88 100644 --- a/tests/FlatBuffers.Test/FlatBuffers.Test.csproj +++ b/tests/FlatBuffers.Test/FlatBuffers.Test.csproj @@ -41,8 +41,8 @@ <Compile Include="..\..\net\FlatBuffers\ByteBuffer.cs"> <Link>FlatBuffers\ByteBuffer.cs</Link> </Compile> - <Compile Include="..\..\net\FlatBuffers\IFlatbufferObject .cs"> - <Link>FlatBuffers\IFlatbufferObject .cs</Link> + <Compile Include="..\..\net\FlatBuffers\IFlatbufferObject.cs"> + <Link>FlatBuffers\IFlatbufferObject.cs</Link> </Compile> <Compile Include="..\..\net\FlatBuffers\Offset.cs"> <Link>FlatBuffers\Offset.cs</Link> @@ -119,4 +119,4 @@ <Target Name="AfterBuild"> </Target> --> -</Project> \ No newline at end of file +</Project> diff --git a/tests/MyGame/Example/Monster.cs b/tests/MyGame/Example/Monster.cs index 222fc5e79ca512dbd21e3ca9b81893b90a940c55..30f49221e187100360abf5a9f82bd9f0e49c91c3 100644 --- a/tests/MyGame/Example/Monster.cs +++ b/tests/MyGame/Example/Monster.cs @@ -10,6 +10,7 @@ using FlatBuffers; public struct Monster : IFlatbufferObject { private Table __p; + public ByteBuffer ByteBuffer { get { return __p.bb; } } public static Monster GetRootAsMonster(ByteBuffer _bb) { return GetRootAsMonster(_bb, new Monster()); } public static Monster GetRootAsMonster(ByteBuffer _bb, Monster obj) { return (obj.__assign(_bb.GetInt(_bb.Position) + _bb.Position, _bb)); } public static bool MonsterBufferHasIdentifier(ByteBuffer _bb) { return Table.__has_identifier(_bb, "MONS"); } diff --git a/tests/MyGame/Example/Stat.cs b/tests/MyGame/Example/Stat.cs index b73dc16a019e1d4ac937cc0fe13a1f07849755eb..0fb5bd0f27cebbed0233d89dfa7cfd3f91438eab 100644 --- a/tests/MyGame/Example/Stat.cs +++ b/tests/MyGame/Example/Stat.cs @@ -9,6 +9,7 @@ using FlatBuffers; public struct Stat : IFlatbufferObject { private Table __p; + public ByteBuffer ByteBuffer { get { return __p.bb; } } public static Stat GetRootAsStat(ByteBuffer _bb) { return GetRootAsStat(_bb, new Stat()); } public static Stat GetRootAsStat(ByteBuffer _bb, Stat obj) { return (obj.__assign(_bb.GetInt(_bb.Position) + _bb.Position, _bb)); } public void __init(int _i, ByteBuffer _bb) { __p.bb_pos = _i; __p.bb = _bb; } diff --git a/tests/MyGame/Example/Test.cs b/tests/MyGame/Example/Test.cs index 08c669bf32d41225082ef0a114cb109f84b34bdf..92c3b912c38e90a672142c9be1ffaedff56bdf70 100644 --- a/tests/MyGame/Example/Test.cs +++ b/tests/MyGame/Example/Test.cs @@ -9,6 +9,7 @@ using FlatBuffers; public struct Test : IFlatbufferObject { private Struct __p; + public ByteBuffer ByteBuffer { get { return __p.bb; } } public void __init(int _i, ByteBuffer _bb) { __p.bb_pos = _i; __p.bb = _bb; } public Test __assign(int _i, ByteBuffer _bb) { __init(_i, _bb); return this; } diff --git a/tests/MyGame/Example/TestSimpleTableWithEnum.cs b/tests/MyGame/Example/TestSimpleTableWithEnum.cs index 0b775ab1695d4a8903c45955bc0a81277834498b..bff386407f13bf7067d7d6c075504c4d62e48e50 100644 --- a/tests/MyGame/Example/TestSimpleTableWithEnum.cs +++ b/tests/MyGame/Example/TestSimpleTableWithEnum.cs @@ -9,6 +9,7 @@ using FlatBuffers; public partial struct TestSimpleTableWithEnum : IFlatbufferObject { private Table __p; + public ByteBuffer ByteBuffer { get { return __p.bb; } } public static TestSimpleTableWithEnum GetRootAsTestSimpleTableWithEnum(ByteBuffer _bb) { return GetRootAsTestSimpleTableWithEnum(_bb, new TestSimpleTableWithEnum()); } public static TestSimpleTableWithEnum GetRootAsTestSimpleTableWithEnum(ByteBuffer _bb, TestSimpleTableWithEnum obj) { return (obj.__assign(_bb.GetInt(_bb.Position) + _bb.Position, _bb)); } public void __init(int _i, ByteBuffer _bb) { __p.bb_pos = _i; __p.bb = _bb; } diff --git a/tests/MyGame/Example/Vec3.cs b/tests/MyGame/Example/Vec3.cs index 2cafbcc5a81a077f24dc6a093ab8421aa0e2f5f3..055254343f744f72283e95a9a0abacddd2574cf7 100644 --- a/tests/MyGame/Example/Vec3.cs +++ b/tests/MyGame/Example/Vec3.cs @@ -9,6 +9,7 @@ using FlatBuffers; public struct Vec3 : IFlatbufferObject { private Struct __p; + public ByteBuffer ByteBuffer { get { return __p.bb; } } public void __init(int _i, ByteBuffer _bb) { __p.bb_pos = _i; __p.bb = _bb; } public Vec3 __assign(int _i, ByteBuffer _bb) { __init(_i, _bb); return this; } diff --git a/tests/MyGame/Example2/Monster.cs b/tests/MyGame/Example2/Monster.cs index 64a5836d21aae907a1b364630e86471d90900a91..6b1602edb9cc0d4d4711095238f8077a340ae76b 100644 --- a/tests/MyGame/Example2/Monster.cs +++ b/tests/MyGame/Example2/Monster.cs @@ -9,6 +9,7 @@ using FlatBuffers; public struct Monster : IFlatbufferObject { private Table __p; + public ByteBuffer ByteBuffer { get { return __p.bb; } } public static Monster GetRootAsMonster(ByteBuffer _bb) { return GetRootAsMonster(_bb, new Monster()); } public static Monster GetRootAsMonster(ByteBuffer _bb, Monster obj) { return (obj.__assign(_bb.GetInt(_bb.Position) + _bb.Position, _bb)); } public void __init(int _i, ByteBuffer _bb) { __p.bb_pos = _i; __p.bb = _bb; } diff --git a/tests/generate_code.sh b/tests/generate_code.sh old mode 100644 new mode 100755 diff --git a/tests/namespace_test/NamespaceA/NamespaceB/StructInNestedNS.cs b/tests/namespace_test/NamespaceA/NamespaceB/StructInNestedNS.cs index 81b57f4b8b0f69db4a85db1c26a943b77f86e395..508895f5818c175989b0db3efc8c9536f28d947b 100644 --- a/tests/namespace_test/NamespaceA/NamespaceB/StructInNestedNS.cs +++ b/tests/namespace_test/NamespaceA/NamespaceB/StructInNestedNS.cs @@ -9,6 +9,7 @@ using FlatBuffers; public struct StructInNestedNS : IFlatbufferObject { private Struct __p; + public ByteBuffer ByteBuffer { get { return __p.bb; } } public void __init(int _i, ByteBuffer _bb) { __p.bb_pos = _i; __p.bb = _bb; } public StructInNestedNS __assign(int _i, ByteBuffer _bb) { __init(_i, _bb); return this; } diff --git a/tests/namespace_test/NamespaceA/NamespaceB/TableInNestedNS.cs b/tests/namespace_test/NamespaceA/NamespaceB/TableInNestedNS.cs index f8a97a403ea6ad46f261f3ea6da16403e4ae5e01..a2a1c0be7f996c25ff82ca8f298317c07f7175a2 100644 --- a/tests/namespace_test/NamespaceA/NamespaceB/TableInNestedNS.cs +++ b/tests/namespace_test/NamespaceA/NamespaceB/TableInNestedNS.cs @@ -9,6 +9,7 @@ using FlatBuffers; public struct TableInNestedNS : IFlatbufferObject { private Table __p; + public ByteBuffer ByteBuffer { get { return __p.bb; } } public static TableInNestedNS GetRootAsTableInNestedNS(ByteBuffer _bb) { return GetRootAsTableInNestedNS(_bb, new TableInNestedNS()); } public static TableInNestedNS GetRootAsTableInNestedNS(ByteBuffer _bb, TableInNestedNS obj) { return (obj.__assign(_bb.GetInt(_bb.Position) + _bb.Position, _bb)); } public void __init(int _i, ByteBuffer _bb) { __p.bb_pos = _i; __p.bb = _bb; } diff --git a/tests/namespace_test/NamespaceA/SecondTableInA.cs b/tests/namespace_test/NamespaceA/SecondTableInA.cs index 32ed37b3bccc2f5fb964678872df462f0a7f4d33..2048828844c54d81f458c13bd65d06e11eb7ea7a 100644 --- a/tests/namespace_test/NamespaceA/SecondTableInA.cs +++ b/tests/namespace_test/NamespaceA/SecondTableInA.cs @@ -9,6 +9,7 @@ using FlatBuffers; public struct SecondTableInA : IFlatbufferObject { private Table __p; + public ByteBuffer ByteBuffer { get { return __p.bb; } } public static SecondTableInA GetRootAsSecondTableInA(ByteBuffer _bb) { return GetRootAsSecondTableInA(_bb, new SecondTableInA()); } public static SecondTableInA GetRootAsSecondTableInA(ByteBuffer _bb, SecondTableInA obj) { return (obj.__assign(_bb.GetInt(_bb.Position) + _bb.Position, _bb)); } public void __init(int _i, ByteBuffer _bb) { __p.bb_pos = _i; __p.bb = _bb; } diff --git a/tests/namespace_test/NamespaceA/TableInFirstNS.cs b/tests/namespace_test/NamespaceA/TableInFirstNS.cs index 4d068a17c8436c54100c3689ef3a6ca5701fbc7d..f1c7e96b27fa44295df7b41492ed21f20ddcd4e1 100644 --- a/tests/namespace_test/NamespaceA/TableInFirstNS.cs +++ b/tests/namespace_test/NamespaceA/TableInFirstNS.cs @@ -9,6 +9,7 @@ using FlatBuffers; public struct TableInFirstNS : IFlatbufferObject { private Table __p; + public ByteBuffer ByteBuffer { get { return __p.bb; } } public static TableInFirstNS GetRootAsTableInFirstNS(ByteBuffer _bb) { return GetRootAsTableInFirstNS(_bb, new TableInFirstNS()); } public static TableInFirstNS GetRootAsTableInFirstNS(ByteBuffer _bb, TableInFirstNS obj) { return (obj.__assign(_bb.GetInt(_bb.Position) + _bb.Position, _bb)); } public void __init(int _i, ByteBuffer _bb) { __p.bb_pos = _i; __p.bb = _bb; } diff --git a/tests/namespace_test/NamespaceC/TableInC.cs b/tests/namespace_test/NamespaceC/TableInC.cs index 2fe0fcefa022db00351a1f14e27abcc62827c54e..6dddcd4db300638ecdc07ff4218aac694876b640 100644 --- a/tests/namespace_test/NamespaceC/TableInC.cs +++ b/tests/namespace_test/NamespaceC/TableInC.cs @@ -9,6 +9,7 @@ using FlatBuffers; public struct TableInC : IFlatbufferObject { private Table __p; + public ByteBuffer ByteBuffer { get { return __p.bb; } } public static TableInC GetRootAsTableInC(ByteBuffer _bb) { return GetRootAsTableInC(_bb, new TableInC()); } public static TableInC GetRootAsTableInC(ByteBuffer _bb, TableInC obj) { return (obj.__assign(_bb.GetInt(_bb.Position) + _bb.Position, _bb)); } public void __init(int _i, ByteBuffer _bb) { __p.bb_pos = _i; __p.bb = _bb; }