mirror of
https://github.com/google/flatbuffers.git
synced 2026-06-22 05:08:27 +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 AnyUniqueAliasesT struct {
|
||||
Type AnyUniqueAliases
|
||||
Value interface{}
|
||||
}
|
||||
|
||||
func AnyUniqueAliasesPack(builder *flatbuffers.Builder, t *AnyUniqueAliasesT) flatbuffers.UOffsetT {
|
||||
if t == nil {
|
||||
return 0
|
||||
}
|
||||
switch t.Type {
|
||||
case AnyUniqueAliasesM:
|
||||
return MonsterPack(builder, t.Value.(*MonsterT))
|
||||
case AnyUniqueAliasesTS:
|
||||
return TestSimpleTableWithEnumPack(builder, t.Value.(*TestSimpleTableWithEnumT))
|
||||
case AnyUniqueAliasesM2:
|
||||
return MyGame__Example2.MonsterPack(builder, t.Value.(*MyGame__Example2.MonsterT))
|
||||
}
|
||||
return 0
|
||||
}
|
||||
|
||||
func AnyUniqueAliasesUnPack(t AnyUniqueAliases, table flatbuffers.Table) *AnyUniqueAliasesT {
|
||||
switch t {
|
||||
case AnyUniqueAliasesM:
|
||||
x := Monster{_tab: table}
|
||||
return &AnyUniqueAliasesT{ Type: AnyUniqueAliasesM, Value: x.UnPack() }
|
||||
case AnyUniqueAliasesTS:
|
||||
x := TestSimpleTableWithEnum{_tab: table}
|
||||
return &AnyUniqueAliasesT{ Type: AnyUniqueAliasesTS, Value: x.UnPack() }
|
||||
case AnyUniqueAliasesM2:
|
||||
x := Monster{_tab: table}
|
||||
return &AnyUniqueAliasesT{ Type: AnyUniqueAliasesM2, Value: x.UnPack() }
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
type AnyUniqueAliases byte
|
||||
|
||||
|
||||
Reference in New Issue
Block a user