diff options
author | Mormegil <mormegil@centrum.cz> | 2015-08-11 18:01:43 +0200 |
---|---|---|
committer | Mormegil <mormegil@centrum.cz> | 2015-08-11 18:07:38 +0200 |
commit | 25c99273d3f874622df1b1e798c10a7ac0ecc2af (patch) | |
tree | 004269b4d46cbf657e4f8a654f5bf2f30e68fa81 /tests/MyGame | |
parent | e1511605606347e8f024ffda94619a77dc5ff87b (diff) | |
download | flatbuffers-25c99273d3f874622df1b1e798c10a7ac0ecc2af.tar.gz flatbuffers-25c99273d3f874622df1b1e798c10a7ac0ecc2af.tar.bz2 flatbuffers-25c99273d3f874622df1b1e798c10a7ac0ecc2af.zip |
[Issue 252] Add type cast for default enum values in C#
When creating a CreateXxx(...) method for a simple table type,
enum-type fields with a non-zero default must have an explicit
cast for the respective argument default value, because in C#,
there is an implicit cast from int to an enum only for 0.
Also, added an example of such type into the example monster_test
type, so that we test this feature.
Diffstat (limited to 'tests/MyGame')
-rw-r--r-- | tests/MyGame/Example/Any.cs | 1 | ||||
-rw-r--r-- | tests/MyGame/Example/Any.go | 1 | ||||
-rw-r--r-- | tests/MyGame/Example/Any.java | 3 | ||||
-rw-r--r-- | tests/MyGame/Example/TestSimpleTableWithEnum.cs | 31 | ||||
-rw-r--r-- | tests/MyGame/Example/TestSimpleTableWithEnum.go | 27 | ||||
-rw-r--r-- | tests/MyGame/Example/TestSimpleTableWithEnum.java | 31 |
6 files changed, 93 insertions, 1 deletions
diff --git a/tests/MyGame/Example/Any.cs b/tests/MyGame/Example/Any.cs index b7a5b361..a05a9185 100644 --- a/tests/MyGame/Example/Any.cs +++ b/tests/MyGame/Example/Any.cs @@ -7,6 +7,7 @@ public enum Any : byte { NONE = 0, Monster = 1, + TestSimpleTableWithEnum = 2, }; diff --git a/tests/MyGame/Example/Any.go b/tests/MyGame/Example/Any.go index 0039bb8c..a23de4cb 100644 --- a/tests/MyGame/Example/Any.go +++ b/tests/MyGame/Example/Any.go @@ -5,4 +5,5 @@ package Example const ( AnyNONE = 0 AnyMonster = 1 + AnyTestSimpleTableWithEnum = 2 ) diff --git a/tests/MyGame/Example/Any.java b/tests/MyGame/Example/Any.java index f811f973..cdc3ec56 100644 --- a/tests/MyGame/Example/Any.java +++ b/tests/MyGame/Example/Any.java @@ -6,8 +6,9 @@ public final class Any { private Any() { } public static final byte NONE = 0; public static final byte Monster = 1; + public static final byte TestSimpleTableWithEnum = 2; - private static final String[] names = { "NONE", "Monster", }; + private static final String[] names = { "NONE", "Monster", "TestSimpleTableWithEnum", }; public static String name(int e) { return names[e]; } }; diff --git a/tests/MyGame/Example/TestSimpleTableWithEnum.cs b/tests/MyGame/Example/TestSimpleTableWithEnum.cs new file mode 100644 index 00000000..d2e75b52 --- /dev/null +++ b/tests/MyGame/Example/TestSimpleTableWithEnum.cs @@ -0,0 +1,31 @@ +// automatically generated, do not modify + +namespace MyGame.Example +{ + +using FlatBuffers; + +public sealed class TestSimpleTableWithEnum : Table { + public static TestSimpleTableWithEnum GetRootAsTestSimpleTableWithEnum(ByteBuffer _bb) { return GetRootAsTestSimpleTableWithEnum(_bb, new TestSimpleTableWithEnum()); } + public static TestSimpleTableWithEnum GetRootAsTestSimpleTableWithEnum(ByteBuffer _bb, TestSimpleTableWithEnum obj) { return (obj.__init(_bb.GetInt(_bb.Position) + _bb.Position, _bb)); } + public TestSimpleTableWithEnum __init(int _i, ByteBuffer _bb) { bb_pos = _i; bb = _bb; return this; } + + public Color Color { get { int o = __offset(4); return o != 0 ? (Color)bb.GetSbyte(o + bb_pos) : (Color)2; } } + + public static Offset<TestSimpleTableWithEnum> CreateTestSimpleTableWithEnum(FlatBufferBuilder builder, + Color color = (Color)2) { + builder.StartObject(1); + TestSimpleTableWithEnum.AddColor(builder, color); + return TestSimpleTableWithEnum.EndTestSimpleTableWithEnum(builder); + } + + public static void StartTestSimpleTableWithEnum(FlatBufferBuilder builder) { builder.StartObject(1); } + public static void AddColor(FlatBufferBuilder builder, Color color) { builder.AddSbyte(0, (sbyte)(color), 2); } + public static Offset<TestSimpleTableWithEnum> EndTestSimpleTableWithEnum(FlatBufferBuilder builder) { + int o = builder.EndObject(); + return new Offset<TestSimpleTableWithEnum>(o); + } +}; + + +} diff --git a/tests/MyGame/Example/TestSimpleTableWithEnum.go b/tests/MyGame/Example/TestSimpleTableWithEnum.go new file mode 100644 index 00000000..a26a53e4 --- /dev/null +++ b/tests/MyGame/Example/TestSimpleTableWithEnum.go @@ -0,0 +1,27 @@ +// automatically generated, do not modify + +package Example + +import ( + flatbuffers "github.com/google/flatbuffers/go" +) +type TestSimpleTableWithEnum struct { + _tab flatbuffers.Table +} + +func (rcv *TestSimpleTableWithEnum) Init(buf []byte, i flatbuffers.UOffsetT) { + rcv._tab.Bytes = buf + rcv._tab.Pos = i +} + +func (rcv *TestSimpleTableWithEnum) Color() int8 { + o := flatbuffers.UOffsetT(rcv._tab.Offset(4)) + if o != 0 { + return rcv._tab.GetInt8(o + rcv._tab.Pos) + } + return 2 +} + +func TestSimpleTableWithEnumStart(builder *flatbuffers.Builder) { builder.StartObject(1) } +func TestSimpleTableWithEnumAddColor(builder *flatbuffers.Builder, color int8) { builder.PrependInt8Slot(0, color, 2) } +func TestSimpleTableWithEnumEnd(builder *flatbuffers.Builder) flatbuffers.UOffsetT { return builder.EndObject() } diff --git a/tests/MyGame/Example/TestSimpleTableWithEnum.java b/tests/MyGame/Example/TestSimpleTableWithEnum.java new file mode 100644 index 00000000..af9d7dbf --- /dev/null +++ b/tests/MyGame/Example/TestSimpleTableWithEnum.java @@ -0,0 +1,31 @@ +// automatically generated, do not modify + +package MyGame.Example; + +import java.nio.*; +import java.lang.*; +import java.util.*; +import com.google.flatbuffers.*; + +public final class TestSimpleTableWithEnum extends Table { + public static TestSimpleTableWithEnum getRootAsTestSimpleTableWithEnum(ByteBuffer _bb) { return getRootAsTestSimpleTableWithEnum(_bb, new TestSimpleTableWithEnum()); } + public static TestSimpleTableWithEnum getRootAsTestSimpleTableWithEnum(ByteBuffer _bb, TestSimpleTableWithEnum obj) { _bb.order(ByteOrder.LITTLE_ENDIAN); return (obj.__init(_bb.getInt(_bb.position()) + _bb.position(), _bb)); } + public TestSimpleTableWithEnum __init(int _i, ByteBuffer _bb) { bb_pos = _i; bb = _bb; return this; } + + public byte color() { int o = __offset(4); return o != 0 ? bb.get(o + bb_pos) : 2; } + + public static int createTestSimpleTableWithEnum(FlatBufferBuilder builder, + byte color) { + builder.startObject(1); + TestSimpleTableWithEnum.addColor(builder, color); + return TestSimpleTableWithEnum.endTestSimpleTableWithEnum(builder); + } + + public static void startTestSimpleTableWithEnum(FlatBufferBuilder builder) { builder.startObject(1); } + public static void addColor(FlatBufferBuilder builder, byte color) { builder.addByte(0, color, 2); } + public static int endTestSimpleTableWithEnum(FlatBufferBuilder builder) { + int o = builder.endObject(); + return o; + } +}; + |