summaryrefslogtreecommitdiff
path: root/tests/MyGame/Example/Any.go
diff options
context:
space:
mode:
authoriceboy <me@iceboy.org>2019-10-31 11:13:45 -0700
committerWouter van Oortmerssen <aardappel@gmail.com>2019-10-31 11:13:45 -0700
commit32254b7acdad8a0bd07f4f8348953b855e9b65c6 (patch)
tree2a8f1aeb1549a2a69deb5c7e9cbb28c9aa6fd7c4 /tests/MyGame/Example/Any.go
parent521e255ad9656a213971b30ba1beeec395b2e27e (diff)
downloadflatbuffers-32254b7acdad8a0bd07f4f8348953b855e9b65c6.tar.gz
flatbuffers-32254b7acdad8a0bd07f4f8348953b855e9b65c6.tar.bz2
flatbuffers-32254b7acdad8a0bd07f4f8348953b855e9b65c6.zip
[Go] Object API support (#5339)
* start * works for current usages! * unpack: vector of struct * optimize byte slice * support nested struct * support null table * support struct * support union * update generated code * grumble * fix compiler warning * update generated code * wrap type in namespace * bug * wrap in namespace * enum byte arrays * generate struct for unions * basic testing * remove branching * fix assert * pack vector of fixed structs correctly * omit null vectors * Refactor Union Pack and UnPack methods Remove append usage to increase code efficiency when dealing with large vectors * generate goldens
Diffstat (limited to 'tests/MyGame/Example/Any.go')
-rw-r--r--tests/MyGame/Example/Any.go43
1 files changed, 42 insertions, 1 deletions
diff --git a/tests/MyGame/Example/Any.go b/tests/MyGame/Example/Any.go
index 8d9067e1..7b9ffb91 100644
--- a/tests/MyGame/Example/Any.go
+++ b/tests/MyGame/Example/Any.go
@@ -2,7 +2,48 @@
package Example
-import "strconv"
+import (
+ "strconv"
+
+ flatbuffers "github.com/google/flatbuffers/go"
+
+ MyGame__Example2 "MyGame/Example2"
+)
+
+type AnyT struct {
+ Type Any
+ Value interface{}
+}
+
+func AnyPack(builder *flatbuffers.Builder, t *AnyT) flatbuffers.UOffsetT {
+ if t == nil {
+ return 0
+ }
+ switch t.Type {
+ case AnyMonster:
+ return MonsterPack(builder, t.Value.(*MonsterT))
+ case AnyTestSimpleTableWithEnum:
+ return TestSimpleTableWithEnumPack(builder, t.Value.(*TestSimpleTableWithEnumT))
+ case AnyMyGame_Example2_Monster:
+ return MyGame__Example2.MonsterPack(builder, t.Value.(*MyGame__Example2.MonsterT))
+ }
+ return 0
+}
+
+func AnyUnPack(t Any, table flatbuffers.Table) *AnyT {
+ switch t {
+ case AnyMonster:
+ x := Monster{_tab: table}
+ return &AnyT{ Type: AnyMonster, Value: x.UnPack() }
+ case AnyTestSimpleTableWithEnum:
+ x := TestSimpleTableWithEnum{_tab: table}
+ return &AnyT{ Type: AnyTestSimpleTableWithEnum, Value: x.UnPack() }
+ case AnyMyGame_Example2_Monster:
+ x := Monster{_tab: table}
+ return &AnyT{ Type: AnyMyGame_Example2_Monster, Value: x.UnPack() }
+ }
+ return nil
+}
type Any byte