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) {
case BASE_TYPE_STRING: return "rcv._tab.ByteVector";
case BASE_TYPE_UNION: return "rcv._tab.Union";
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) {
}
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);
}
......
......@@ -97,7 +97,7 @@ func (rcv *Monster) InventoryBytes() []byte {
return nil
}
func (rcv *Monster) Color() int8 {
func (rcv *Monster) Color() Color {
o := flatbuffers.UOffsetT(rcv._tab.Offset(16))
if o != 0 {
return rcv._tab.GetInt8(o + rcv._tab.Pos)
......@@ -105,7 +105,7 @@ func (rcv *Monster) Color() int8 {
return 8
}
func (rcv *Monster) MutateColor(n int8) bool {
func (rcv *Monster) MutateColor(n Color) bool {
return rcv._tab.MutateInt8Slot(16, n)
}
......
......@@ -26,7 +26,7 @@ func (rcv *TestSimpleTableWithEnum) Table() flatbuffers.Table {
return rcv._tab
}
func (rcv *TestSimpleTableWithEnum) Color() int8 {
func (rcv *TestSimpleTableWithEnum) Color() Color {
o := flatbuffers.UOffsetT(rcv._tab.Offset(4))
if o != 0 {
return rcv._tab.GetInt8(o + rcv._tab.Pos)
......@@ -34,7 +34,7 @@ func (rcv *TestSimpleTableWithEnum) Color() int8 {
return 2
}
func (rcv *TestSimpleTableWithEnum) MutateColor(n int8) bool {
func (rcv *TestSimpleTableWithEnum) MutateColor(n Color) bool {
return rcv._tab.MutateInt8Slot(4, n)
}
......
......@@ -47,10 +47,10 @@ func (rcv *Vec3) MutateTest1(n float64) bool {
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))
}
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)
}
......
......@@ -156,6 +156,10 @@ func CheckReadBuffer(buf []byte, offset flatbuffers.UOffsetT, fail func(string,
fail(FailString("name", "MyMonster", got))
}
if got := monster.Color(); example.ColorBlue != got {
fail(FailString("color", example.ColorBlue, got))
}
// initialize a Vec3 from Pos()
vec := new(example.Vec3)
vec = monster.Pos(vec)
......
......@@ -39,7 +39,7 @@ func (rcv *TableInFirstNS) FooTable(obj *TableInNestedNS) *TableInNestedNS {
return nil
}
func (rcv *TableInFirstNS) FooEnum() int8 {
func (rcv *TableInFirstNS) FooEnum() EnumInNestedNS {
o := flatbuffers.UOffsetT(rcv._tab.Offset(6))
if o != 0 {
return rcv._tab.GetInt8(o + rcv._tab.Pos)
......@@ -47,7 +47,7 @@ func (rcv *TableInFirstNS) FooEnum() int8 {
return 0
}
func (rcv *TableInFirstNS) MutateFooEnum(n int8) bool {
func (rcv *TableInFirstNS) MutateFooEnum(n EnumInNestedNS) bool {
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