mirror of
https://github.com/google/flatbuffers.git
synced 2026-06-19 13:43:05 +00:00
Use enum types in generated read/mutate methods for Go (#4978)
This commit is contained in:
committed by
Wouter van Oortmerssen
parent
7c3c027295
commit
a4c362a1ba
@@ -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)
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user