Commit a4c362a1 authored by kostya-sh's avatar kostya-sh Committed by Wouter van Oortmerssen

Use enum types in generated read/mutate methods for Go (#4978)

parent 7c3c0272
...@@ -675,7 +675,7 @@ static std::string GenGetter(const Type &type) { ...@@ -675,7 +675,7 @@ static std::string GenGetter(const Type &type) {
case BASE_TYPE_STRING: return "rcv._tab.ByteVector"; case BASE_TYPE_STRING: return "rcv._tab.ByteVector";
case BASE_TYPE_UNION: return "rcv._tab.Union"; case BASE_TYPE_UNION: return "rcv._tab.Union";
case BASE_TYPE_VECTOR: return GenGetter(type.VectorType()); case BASE_TYPE_VECTOR: return GenGetter(type.VectorType());
default: return "rcv._tab.Get" + MakeCamel(GenTypeGet(type)); default: return "rcv._tab.Get" + MakeCamel(GenTypeBasic(type));
} }
} }
...@@ -711,6 +711,9 @@ static std::string GenTypePointer(const Type &type) { ...@@ -711,6 +711,9 @@ static std::string GenTypePointer(const Type &type) {
} }
static std::string GenTypeGet(const Type &type) { static std::string GenTypeGet(const Type &type) {
if (type.enum_def != nullptr && !type.enum_def->is_union) {
return GetEnumTypeName(*type.enum_def);
}
return IsScalar(type.base_type) ? GenTypeBasic(type) : GenTypePointer(type); return IsScalar(type.base_type) ? GenTypeBasic(type) : GenTypePointer(type);
} }
......
...@@ -97,7 +97,7 @@ func (rcv *Monster) InventoryBytes() []byte { ...@@ -97,7 +97,7 @@ func (rcv *Monster) InventoryBytes() []byte {
return nil return nil
} }
func (rcv *Monster) Color() int8 { func (rcv *Monster) Color() Color {
o := flatbuffers.UOffsetT(rcv._tab.Offset(16)) o := flatbuffers.UOffsetT(rcv._tab.Offset(16))
if o != 0 { if o != 0 {
return rcv._tab.GetInt8(o + rcv._tab.Pos) return rcv._tab.GetInt8(o + rcv._tab.Pos)
...@@ -105,7 +105,7 @@ func (rcv *Monster) Color() int8 { ...@@ -105,7 +105,7 @@ func (rcv *Monster) Color() int8 {
return 8 return 8
} }
func (rcv *Monster) MutateColor(n int8) bool { func (rcv *Monster) MutateColor(n Color) bool {
return rcv._tab.MutateInt8Slot(16, n) return rcv._tab.MutateInt8Slot(16, n)
} }
......
...@@ -26,7 +26,7 @@ func (rcv *TestSimpleTableWithEnum) Table() flatbuffers.Table { ...@@ -26,7 +26,7 @@ func (rcv *TestSimpleTableWithEnum) Table() flatbuffers.Table {
return rcv._tab return rcv._tab
} }
func (rcv *TestSimpleTableWithEnum) Color() int8 { func (rcv *TestSimpleTableWithEnum) Color() Color {
o := flatbuffers.UOffsetT(rcv._tab.Offset(4)) o := flatbuffers.UOffsetT(rcv._tab.Offset(4))
if o != 0 { if o != 0 {
return rcv._tab.GetInt8(o + rcv._tab.Pos) return rcv._tab.GetInt8(o + rcv._tab.Pos)
...@@ -34,7 +34,7 @@ func (rcv *TestSimpleTableWithEnum) Color() int8 { ...@@ -34,7 +34,7 @@ func (rcv *TestSimpleTableWithEnum) Color() int8 {
return 2 return 2
} }
func (rcv *TestSimpleTableWithEnum) MutateColor(n int8) bool { func (rcv *TestSimpleTableWithEnum) MutateColor(n Color) bool {
return rcv._tab.MutateInt8Slot(4, n) return rcv._tab.MutateInt8Slot(4, n)
} }
......
...@@ -47,10 +47,10 @@ func (rcv *Vec3) MutateTest1(n float64) bool { ...@@ -47,10 +47,10 @@ func (rcv *Vec3) MutateTest1(n float64) bool {
return rcv._tab.MutateFloat64(rcv._tab.Pos+flatbuffers.UOffsetT(16), n) return rcv._tab.MutateFloat64(rcv._tab.Pos+flatbuffers.UOffsetT(16), n)
} }
func (rcv *Vec3) Test2() int8 { func (rcv *Vec3) Test2() Color {
return rcv._tab.GetInt8(rcv._tab.Pos + flatbuffers.UOffsetT(24)) return rcv._tab.GetInt8(rcv._tab.Pos + flatbuffers.UOffsetT(24))
} }
func (rcv *Vec3) MutateTest2(n int8) bool { func (rcv *Vec3) MutateTest2(n Color) bool {
return rcv._tab.MutateInt8(rcv._tab.Pos+flatbuffers.UOffsetT(24), n) return rcv._tab.MutateInt8(rcv._tab.Pos+flatbuffers.UOffsetT(24), n)
} }
......
...@@ -156,6 +156,10 @@ func CheckReadBuffer(buf []byte, offset flatbuffers.UOffsetT, fail func(string, ...@@ -156,6 +156,10 @@ func CheckReadBuffer(buf []byte, offset flatbuffers.UOffsetT, fail func(string,
fail(FailString("name", "MyMonster", got)) fail(FailString("name", "MyMonster", got))
} }
if got := monster.Color(); example.ColorBlue != got {
fail(FailString("color", example.ColorBlue, got))
}
// initialize a Vec3 from Pos() // initialize a Vec3 from Pos()
vec := new(example.Vec3) vec := new(example.Vec3)
vec = monster.Pos(vec) vec = monster.Pos(vec)
......
...@@ -39,7 +39,7 @@ func (rcv *TableInFirstNS) FooTable(obj *TableInNestedNS) *TableInNestedNS { ...@@ -39,7 +39,7 @@ func (rcv *TableInFirstNS) FooTable(obj *TableInNestedNS) *TableInNestedNS {
return nil return nil
} }
func (rcv *TableInFirstNS) FooEnum() int8 { func (rcv *TableInFirstNS) FooEnum() EnumInNestedNS {
o := flatbuffers.UOffsetT(rcv._tab.Offset(6)) o := flatbuffers.UOffsetT(rcv._tab.Offset(6))
if o != 0 { if o != 0 {
return rcv._tab.GetInt8(o + rcv._tab.Pos) return rcv._tab.GetInt8(o + rcv._tab.Pos)
...@@ -47,7 +47,7 @@ func (rcv *TableInFirstNS) FooEnum() int8 { ...@@ -47,7 +47,7 @@ func (rcv *TableInFirstNS) FooEnum() int8 {
return 0 return 0
} }
func (rcv *TableInFirstNS) MutateFooEnum(n int8) bool { func (rcv *TableInFirstNS) MutateFooEnum(n EnumInNestedNS) bool {
return rcv._tab.MutateInt8Slot(6, n) return rcv._tab.MutateInt8Slot(6, n)
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment