diff options
author | iceboy <me@iceboy.org> | 2019-10-31 11:13:45 -0700 |
---|---|---|
committer | Wouter van Oortmerssen <aardappel@gmail.com> | 2019-10-31 11:13:45 -0700 |
commit | 32254b7acdad8a0bd07f4f8348953b855e9b65c6 (patch) | |
tree | 2a8f1aeb1549a2a69deb5c7e9cbb28c9aa6fd7c4 /tests/MyGame/Example/Any.go | |
parent | 521e255ad9656a213971b30ba1beeec395b2e27e (diff) | |
download | flatbuffers-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.go | 43 |
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 |