Commit 964365ba authored by Lawrence Chan's avatar Lawrence Chan Committed by Wouter van Oortmerssen

[Go] Add UnPackTo functions (#5598)

parent 32254b7a
...@@ -983,10 +983,8 @@ class GoGenerator : public BaseGenerator { ...@@ -983,10 +983,8 @@ class GoGenerator : public BaseGenerator {
const StructDef &struct_def, std::string *code_ptr) { const StructDef &struct_def, std::string *code_ptr) {
std::string &code = *code_ptr; std::string &code = *code_ptr;
code += "func (rcv *" + struct_def.name + ") UnPack() *" + code += "func (rcv *" + struct_def.name + ") UnPackTo(t *" +
NativeName(struct_def) + " {\n"; NativeName(struct_def) + ") {\n";
code += "\tif rcv == nil { return nil }\n";
code += "\tt := &" + NativeName(struct_def) + "{}\n";
for (auto it = struct_def.fields.vec.begin(); for (auto it = struct_def.fields.vec.begin();
it != struct_def.fields.vec.end(); ++it) { it != struct_def.fields.vec.end(); ++it) {
const FieldDef &field = **it; const FieldDef &field = **it;
...@@ -1046,6 +1044,13 @@ class GoGenerator : public BaseGenerator { ...@@ -1046,6 +1044,13 @@ class GoGenerator : public BaseGenerator {
FLATBUFFERS_ASSERT(0); FLATBUFFERS_ASSERT(0);
} }
} }
code += "}\n\n";
code += "func (rcv *" + struct_def.name + ") UnPack() *" +
NativeName(struct_def) + " {\n";
code += "\tif rcv == nil { return nil }\n";
code += "\tt := &" + NativeName(struct_def) + "{}\n";
code += "\trcv.UnPackTo(t)\n";
code += "\treturn t\n"; code += "\treturn t\n";
code += "}\n\n"; code += "}\n\n";
} }
...@@ -1083,10 +1088,8 @@ class GoGenerator : public BaseGenerator { ...@@ -1083,10 +1088,8 @@ class GoGenerator : public BaseGenerator {
const StructDef &struct_def, std::string *code_ptr) { const StructDef &struct_def, std::string *code_ptr) {
std::string &code = *code_ptr; std::string &code = *code_ptr;
code += "func (rcv *" + struct_def.name + ") UnPack() *" + code += "func (rcv *" + struct_def.name + ") UnPackTo(t *" +
NativeName(struct_def) + " {\n"; NativeName(struct_def) + ") {\n";
code += "\tif rcv == nil { return nil }\n";
code += "\tt := &" + NativeName(struct_def) + "{}\n";
for (auto it = struct_def.fields.vec.begin(); for (auto it = struct_def.fields.vec.begin();
it != struct_def.fields.vec.end(); ++it) { it != struct_def.fields.vec.end(); ++it) {
const FieldDef &field = **it; const FieldDef &field = **it;
...@@ -1098,6 +1101,13 @@ class GoGenerator : public BaseGenerator { ...@@ -1098,6 +1101,13 @@ class GoGenerator : public BaseGenerator {
MakeCamel(field.name) + "()\n"; MakeCamel(field.name) + "()\n";
} }
} }
code += "}\n\n";
code += "func (rcv *" + struct_def.name + ") UnPack() *" +
NativeName(struct_def) + " {\n";
code += "\tif rcv == nil { return nil }\n";
code += "\tt := &" + NativeName(struct_def) + "{}\n";
code += "\trcv.UnPackTo(t)\n";
code += "\treturn t\n"; code += "\treturn t\n";
code += "}\n\n"; code += "}\n\n";
} }
......
...@@ -15,11 +15,15 @@ func AbilityPack(builder *flatbuffers.Builder, t *AbilityT) flatbuffers.UOffsetT ...@@ -15,11 +15,15 @@ func AbilityPack(builder *flatbuffers.Builder, t *AbilityT) flatbuffers.UOffsetT
if t == nil { return 0 } if t == nil { return 0 }
return CreateAbility(builder, t.Id, t.Distance) return CreateAbility(builder, t.Id, t.Distance)
} }
func (rcv *Ability) UnPackTo(t *AbilityT) {
t.Id = rcv.Id()
t.Distance = rcv.Distance()
}
func (rcv *Ability) UnPack() *AbilityT { func (rcv *Ability) UnPack() *AbilityT {
if rcv == nil { return nil } if rcv == nil { return nil }
t := &AbilityT{} t := &AbilityT{}
t.Id = rcv.Id() rcv.UnPackTo(t)
t.Distance = rcv.Distance()
return t return t
} }
......
...@@ -295,9 +295,7 @@ func MonsterPack(builder *flatbuffers.Builder, t *MonsterT) flatbuffers.UOffsetT ...@@ -295,9 +295,7 @@ func MonsterPack(builder *flatbuffers.Builder, t *MonsterT) flatbuffers.UOffsetT
return MonsterEnd(builder) return MonsterEnd(builder)
} }
func (rcv *Monster) UnPack() *MonsterT { func (rcv *Monster) UnPackTo(t *MonsterT) {
if rcv == nil { return nil }
t := &MonsterT{}
t.Pos = rcv.Pos(nil).UnPack() t.Pos = rcv.Pos(nil).UnPack()
t.Mana = rcv.Mana() t.Mana = rcv.Mana()
t.Hp = rcv.Hp() t.Hp = rcv.Hp()
...@@ -424,6 +422,12 @@ func (rcv *Monster) UnPack() *MonsterT { ...@@ -424,6 +422,12 @@ func (rcv *Monster) UnPack() *MonsterT {
t.VectorOfEnums[j] = rcv.VectorOfEnums(j) t.VectorOfEnums[j] = rcv.VectorOfEnums(j)
} }
t.SignedEnum = rcv.SignedEnum() t.SignedEnum = rcv.SignedEnum()
}
func (rcv *Monster) UnPack() *MonsterT {
if rcv == nil { return nil }
t := &MonsterT{}
rcv.UnPackTo(t)
return t return t
} }
......
...@@ -17,10 +17,14 @@ func ReferrablePack(builder *flatbuffers.Builder, t *ReferrableT) flatbuffers.UO ...@@ -17,10 +17,14 @@ func ReferrablePack(builder *flatbuffers.Builder, t *ReferrableT) flatbuffers.UO
return ReferrableEnd(builder) return ReferrableEnd(builder)
} }
func (rcv *Referrable) UnPackTo(t *ReferrableT) {
t.Id = rcv.Id()
}
func (rcv *Referrable) UnPack() *ReferrableT { func (rcv *Referrable) UnPack() *ReferrableT {
if rcv == nil { return nil } if rcv == nil { return nil }
t := &ReferrableT{} t := &ReferrableT{}
t.Id = rcv.Id() rcv.UnPackTo(t)
return t return t
} }
......
...@@ -22,12 +22,16 @@ func StatPack(builder *flatbuffers.Builder, t *StatT) flatbuffers.UOffsetT { ...@@ -22,12 +22,16 @@ func StatPack(builder *flatbuffers.Builder, t *StatT) flatbuffers.UOffsetT {
return StatEnd(builder) return StatEnd(builder)
} }
func (rcv *Stat) UnPack() *StatT { func (rcv *Stat) UnPackTo(t *StatT) {
if rcv == nil { return nil }
t := &StatT{}
t.Id = string(rcv.Id()) t.Id = string(rcv.Id())
t.Val = rcv.Val() t.Val = rcv.Val()
t.Count = rcv.Count() t.Count = rcv.Count()
}
func (rcv *Stat) UnPack() *StatT {
if rcv == nil { return nil }
t := &StatT{}
rcv.UnPackTo(t)
return t return t
} }
......
...@@ -15,11 +15,15 @@ func TestPack(builder *flatbuffers.Builder, t *TestT) flatbuffers.UOffsetT { ...@@ -15,11 +15,15 @@ func TestPack(builder *flatbuffers.Builder, t *TestT) flatbuffers.UOffsetT {
if t == nil { return 0 } if t == nil { return 0 }
return CreateTest(builder, t.A, t.B) return CreateTest(builder, t.A, t.B)
} }
func (rcv *Test) UnPackTo(t *TestT) {
t.A = rcv.A()
t.B = rcv.B()
}
func (rcv *Test) UnPack() *TestT { func (rcv *Test) UnPack() *TestT {
if rcv == nil { return nil } if rcv == nil { return nil }
t := &TestT{} t := &TestT{}
t.A = rcv.A() rcv.UnPackTo(t)
t.B = rcv.B()
return t return t
} }
......
...@@ -17,10 +17,14 @@ func TestSimpleTableWithEnumPack(builder *flatbuffers.Builder, t *TestSimpleTabl ...@@ -17,10 +17,14 @@ func TestSimpleTableWithEnumPack(builder *flatbuffers.Builder, t *TestSimpleTabl
return TestSimpleTableWithEnumEnd(builder) return TestSimpleTableWithEnumEnd(builder)
} }
func (rcv *TestSimpleTableWithEnum) UnPackTo(t *TestSimpleTableWithEnumT) {
t.Color = rcv.Color()
}
func (rcv *TestSimpleTableWithEnum) UnPack() *TestSimpleTableWithEnumT { func (rcv *TestSimpleTableWithEnum) UnPack() *TestSimpleTableWithEnumT {
if rcv == nil { return nil } if rcv == nil { return nil }
t := &TestSimpleTableWithEnumT{} t := &TestSimpleTableWithEnumT{}
t.Color = rcv.Color() rcv.UnPackTo(t)
return t return t
} }
......
...@@ -57,9 +57,7 @@ func TypeAliasesPack(builder *flatbuffers.Builder, t *TypeAliasesT) flatbuffers. ...@@ -57,9 +57,7 @@ func TypeAliasesPack(builder *flatbuffers.Builder, t *TypeAliasesT) flatbuffers.
return TypeAliasesEnd(builder) return TypeAliasesEnd(builder)
} }
func (rcv *TypeAliases) UnPack() *TypeAliasesT { func (rcv *TypeAliases) UnPackTo(t *TypeAliasesT) {
if rcv == nil { return nil }
t := &TypeAliasesT{}
t.I8 = rcv.I8() t.I8 = rcv.I8()
t.U8 = rcv.U8() t.U8 = rcv.U8()
t.I16 = rcv.I16() t.I16 = rcv.I16()
...@@ -80,6 +78,12 @@ func (rcv *TypeAliases) UnPack() *TypeAliasesT { ...@@ -80,6 +78,12 @@ func (rcv *TypeAliases) UnPack() *TypeAliasesT {
for j := 0; j < vf64Length; j++ { for j := 0; j < vf64Length; j++ {
t.Vf64[j] = rcv.Vf64(j) t.Vf64[j] = rcv.Vf64(j)
} }
}
func (rcv *TypeAliases) UnPack() *TypeAliasesT {
if rcv == nil { return nil }
t := &TypeAliasesT{}
rcv.UnPackTo(t)
return t return t
} }
......
...@@ -19,15 +19,19 @@ func Vec3Pack(builder *flatbuffers.Builder, t *Vec3T) flatbuffers.UOffsetT { ...@@ -19,15 +19,19 @@ func Vec3Pack(builder *flatbuffers.Builder, t *Vec3T) flatbuffers.UOffsetT {
if t == nil { return 0 } if t == nil { return 0 }
return CreateVec3(builder, t.X, t.Y, t.Z, t.Test1, t.Test2, t.Test3.A, t.Test3.B) return CreateVec3(builder, t.X, t.Y, t.Z, t.Test1, t.Test2, t.Test3.A, t.Test3.B)
} }
func (rcv *Vec3) UnPack() *Vec3T { func (rcv *Vec3) UnPackTo(t *Vec3T) {
if rcv == nil { return nil }
t := &Vec3T{}
t.X = rcv.X() t.X = rcv.X()
t.Y = rcv.Y() t.Y = rcv.Y()
t.Z = rcv.Z() t.Z = rcv.Z()
t.Test1 = rcv.Test1() t.Test1 = rcv.Test1()
t.Test2 = rcv.Test2() t.Test2 = rcv.Test2()
t.Test3 = rcv.Test3(nil).UnPack() t.Test3 = rcv.Test3(nil).UnPack()
}
func (rcv *Vec3) UnPack() *Vec3T {
if rcv == nil { return nil }
t := &Vec3T{}
rcv.UnPackTo(t)
return t return t
} }
......
...@@ -15,9 +15,13 @@ func MonsterPack(builder *flatbuffers.Builder, t *MonsterT) flatbuffers.UOffsetT ...@@ -15,9 +15,13 @@ func MonsterPack(builder *flatbuffers.Builder, t *MonsterT) flatbuffers.UOffsetT
return MonsterEnd(builder) return MonsterEnd(builder)
} }
func (rcv *Monster) UnPackTo(t *MonsterT) {
}
func (rcv *Monster) UnPack() *MonsterT { func (rcv *Monster) UnPack() *MonsterT {
if rcv == nil { return nil } if rcv == nil { return nil }
t := &MonsterT{} t := &MonsterT{}
rcv.UnPackTo(t)
return t return t
} }
......
...@@ -15,9 +15,13 @@ func InParentNamespacePack(builder *flatbuffers.Builder, t *InParentNamespaceT) ...@@ -15,9 +15,13 @@ func InParentNamespacePack(builder *flatbuffers.Builder, t *InParentNamespaceT)
return InParentNamespaceEnd(builder) return InParentNamespaceEnd(builder)
} }
func (rcv *InParentNamespace) UnPackTo(t *InParentNamespaceT) {
}
func (rcv *InParentNamespace) UnPack() *InParentNamespaceT { func (rcv *InParentNamespace) UnPack() *InParentNamespaceT {
if rcv == nil { return nil } if rcv == nil { return nil }
t := &InParentNamespaceT{} t := &InParentNamespaceT{}
rcv.UnPackTo(t)
return t return t
} }
......
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