mirror of
https://github.com/google/flatbuffers.git
synced 2026-06-11 23:40:57 +00:00
[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
This commit is contained in:
committed by
Wouter van Oortmerssen
parent
521e255ad9
commit
32254b7acd
@@ -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
|
||||
|
||||
|
||||
Reference in New Issue
Block a user