mirror of
https://github.com/google/flatbuffers.git
synced 2026-06-15 16:57:29 +00:00
Go optional scalars (#7104)
* [go] always write required types * support optional scalars in go * generate optional_scalars and monster_test * restore original behavior for non-optional scalars * add tests
This commit is contained in:
committed by
GitHub
parent
57e338f819
commit
06f4af11b6
@@ -356,8 +356,16 @@ class GoGenerator : public BaseGenerator {
|
||||
GenReceiver(struct_def, code_ptr);
|
||||
code += " " + MakeCamel(field.name);
|
||||
code += "() " + TypeName(field) + " ";
|
||||
code += OffsetPrefix(field) + "\t\treturn ";
|
||||
code += OffsetPrefix(field);
|
||||
if (field.IsScalarOptional()) {
|
||||
code += "\t\tv := ";
|
||||
} else {
|
||||
code += "\t\treturn ";
|
||||
}
|
||||
code += CastToEnum(field.value.type, getter + "(o + rcv._tab.Pos)");
|
||||
if (field.IsScalarOptional()) {
|
||||
code += "\n\t\treturn &v";
|
||||
}
|
||||
code += "\n\t}\n";
|
||||
code += "\treturn " + GenConstant(field) + "\n";
|
||||
code += "}\n\n";
|
||||
@@ -571,12 +579,16 @@ class GoGenerator : public BaseGenerator {
|
||||
if (!IsScalar(field.value.type.base_type) && (!struct_def.fixed)) {
|
||||
code += "flatbuffers.UOffsetT";
|
||||
} else {
|
||||
code += TypeName(field);
|
||||
code += GenTypeGet(field.value.type);
|
||||
}
|
||||
code += ") {\n\t";
|
||||
code += "builder.Prepend";
|
||||
code += GenMethod(field);
|
||||
if (field.IsScalarOptional()) {
|
||||
code += "(";
|
||||
} else {
|
||||
code += "Slot(" + NumToString(offset) + ", ";
|
||||
}
|
||||
code += ") {\n";
|
||||
code += "\tbuilder.Prepend";
|
||||
code += GenMethod(field) + "Slot(";
|
||||
code += NumToString(offset) + ", ";
|
||||
if (!IsScalar(field.value.type.base_type) && (!struct_def.fixed)) {
|
||||
code += "flatbuffers.UOffsetT";
|
||||
code += "(";
|
||||
@@ -584,8 +596,14 @@ class GoGenerator : public BaseGenerator {
|
||||
} else {
|
||||
code += CastToBaseType(field.value.type, GoIdentity(field.name));
|
||||
}
|
||||
code += ", " + GenConstant(field);
|
||||
code += ")\n}\n";
|
||||
if (field.IsScalarOptional()) {
|
||||
code += ")\n";
|
||||
code += "\tbuilder.Slot(" + NumToString(offset);
|
||||
} else {
|
||||
code += ", " + GenConstant(field);
|
||||
}
|
||||
code += ")\n";
|
||||
code += "}\n";
|
||||
}
|
||||
|
||||
// Set the value of one of the members of a table's vector.
|
||||
@@ -669,7 +687,7 @@ class GoGenerator : public BaseGenerator {
|
||||
std::string setter = "rcv._tab.Mutate" + type;
|
||||
GenReceiver(struct_def, code_ptr);
|
||||
code += " Mutate" + MakeCamel(field.name);
|
||||
code += "(n " + TypeName(field) + ") bool {\n\treturn " + setter;
|
||||
code += "(n " + GenTypeGet(field.value.type) + ") bool {\n\treturn " + setter;
|
||||
code += "(rcv._tab.Pos+flatbuffers.UOffsetT(";
|
||||
code += NumToString(field.value.offset) + "), ";
|
||||
code += CastToBaseType(field.value.type, "n") + ")\n}\n\n";
|
||||
@@ -683,7 +701,7 @@ class GoGenerator : public BaseGenerator {
|
||||
std::string setter = "rcv._tab.Mutate" + type + "Slot";
|
||||
GenReceiver(struct_def, code_ptr);
|
||||
code += " Mutate" + MakeCamel(field.name);
|
||||
code += "(n " + TypeName(field) + ") bool {\n\treturn ";
|
||||
code += "(n " + GenTypeGet(field.value.type) + ") bool {\n\treturn ";
|
||||
code += setter + "(" + NumToString(field.value.offset) + ", ";
|
||||
code += CastToBaseType(field.value.type, "n") + ")\n";
|
||||
code += "}\n\n";
|
||||
@@ -801,8 +819,11 @@ class GoGenerator : public BaseGenerator {
|
||||
field.value.type.enum_def != nullptr &&
|
||||
field.value.type.enum_def->is_union)
|
||||
continue;
|
||||
code += "\t" + MakeCamel(field.name) + " " +
|
||||
NativeType(field.value.type) + "\n";
|
||||
code += "\t" + MakeCamel(field.name) + " ";
|
||||
if (field.IsScalarOptional()) {
|
||||
code += "*";
|
||||
}
|
||||
code += NativeType(field.value.type) + "\n";
|
||||
}
|
||||
code += "}\n\n";
|
||||
|
||||
@@ -953,10 +974,18 @@ class GoGenerator : public BaseGenerator {
|
||||
|
||||
std::string offset = MakeCamel(field.name, false) + "Offset";
|
||||
if (IsScalar(field.value.type.base_type)) {
|
||||
std::string prefix;
|
||||
if (field.IsScalarOptional()) {
|
||||
code += "\tif t." + MakeCamel(field.name) + " != nil {\n\t";
|
||||
prefix = "*";
|
||||
}
|
||||
if (field.value.type.enum_def == nullptr ||
|
||||
!field.value.type.enum_def->is_union) {
|
||||
code += "\t" + struct_def.name + "Add" + MakeCamel(field.name) +
|
||||
"(builder, t." + MakeCamel(field.name) + ")\n";
|
||||
"(builder, " + prefix + "t." + MakeCamel(field.name) + ")\n";
|
||||
}
|
||||
if (field.IsScalarOptional()) {
|
||||
code += "\t}\n";
|
||||
}
|
||||
} else {
|
||||
if (field.value.type.base_type == BASE_TYPE_STRUCT &&
|
||||
@@ -1192,7 +1221,11 @@ class GoGenerator : public BaseGenerator {
|
||||
}
|
||||
|
||||
std::string TypeName(const FieldDef &field) {
|
||||
return GenTypeGet(field.value.type);
|
||||
std::string prefix;
|
||||
if (field.IsScalarOptional()) {
|
||||
prefix = "*";
|
||||
}
|
||||
return prefix + GenTypeGet(field.value.type);
|
||||
}
|
||||
|
||||
// If type is an enum, returns value with a cast to the enum type, otherwise
|
||||
@@ -1216,6 +1249,9 @@ class GoGenerator : public BaseGenerator {
|
||||
}
|
||||
|
||||
std::string GenConstant(const FieldDef &field) {
|
||||
if (field.IsScalarOptional()) {
|
||||
return "nil";
|
||||
}
|
||||
switch (field.value.type.base_type) {
|
||||
case BASE_TYPE_BOOL:
|
||||
return field.value.constant == "0" ? "false" : "true";
|
||||
|
||||
@@ -2479,7 +2479,8 @@ bool Parser::SupportsOptionalScalars(const flatbuffers::IDLOptions &opts) {
|
||||
static FLATBUFFERS_CONSTEXPR unsigned long supported_langs =
|
||||
IDLOptions::kRust | IDLOptions::kSwift | IDLOptions::kLobster |
|
||||
IDLOptions::kKotlin | IDLOptions::kCpp | IDLOptions::kJava |
|
||||
IDLOptions::kCSharp | IDLOptions::kTs | IDLOptions::kBinary;
|
||||
IDLOptions::kCSharp | IDLOptions::kTs | IDLOptions::kBinary |
|
||||
IDLOptions::kGo;
|
||||
unsigned long langs = opts.lang_to_generate;
|
||||
return (langs > 0 && langs < IDLOptions::kMAX) && !(langs & ~supported_langs);
|
||||
}
|
||||
|
||||
@@ -19,8 +19,8 @@ test_dir="$(pwd)"
|
||||
go_path=${test_dir}/go_gen
|
||||
go_src=${go_path}/src
|
||||
|
||||
# Emit Go code for the example schema in the test dir:
|
||||
../flatc -g --gen-object-api -I include_test monster_test.fbs
|
||||
# Emit Go code for the example schemas in the test dir:
|
||||
../flatc -g --gen-object-api -I include_test monster_test.fbs optional_scalars.fbs
|
||||
|
||||
# Go requires a particular layout of files in order to link multiple packages.
|
||||
# Copy flatbuffer Go files to their own package directories to compile the
|
||||
@@ -29,6 +29,7 @@ mkdir -p ${go_src}/MyGame/Example
|
||||
mkdir -p ${go_src}/MyGame/Example2
|
||||
mkdir -p ${go_src}/github.com/google/flatbuffers/go
|
||||
mkdir -p ${go_src}/flatbuffers_test
|
||||
mkdir -p ${go_src}/optional_scalars
|
||||
|
||||
cp -a MyGame/*.go ./go_gen/src/MyGame/
|
||||
cp -a MyGame/Example/*.go ./go_gen/src/MyGame/Example/
|
||||
@@ -38,6 +39,7 @@ cp -a MyGame/Example2/*.go ./go_gen/src/MyGame/Example2/
|
||||
rm ./go_gen/src/MyGame/Example/*_grpc.go
|
||||
cp -a ../go/* ./go_gen/src/github.com/google/flatbuffers/go
|
||||
cp -a ./go_test.go ./go_gen/src/flatbuffers_test/
|
||||
cp -a optional_scalars/*.go ./go_gen/src/optional_scalars
|
||||
|
||||
# Run tests with necessary flags.
|
||||
# Developers may wish to see more detail by appending the verbosity flag
|
||||
|
||||
298
tests/go_test.go
298
tests/go_test.go
@@ -17,8 +17,9 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
mygame "MyGame" // refers to generated code
|
||||
example "MyGame/Example" // refers to generated code
|
||||
mygame "MyGame" // refers to generated code
|
||||
example "MyGame/Example" // refers to generated code
|
||||
optional_scalars "optional_scalars" // refers to generated code
|
||||
|
||||
"bytes"
|
||||
"flag"
|
||||
@@ -133,6 +134,9 @@ func TestAll(t *testing.T) {
|
||||
// Check size-prefixed flatbuffers
|
||||
CheckSizePrefixedBuffer(t.Fatalf)
|
||||
|
||||
// Check that optional scalars work
|
||||
CheckOptionalScalars(t.Fatalf)
|
||||
|
||||
// If the filename of the FlatBuffers file generated by the Java test
|
||||
// is given, check that Go code can read it, and that Go code
|
||||
// generates an identical buffer when used to create the example data:
|
||||
@@ -1861,6 +1865,296 @@ func CheckMutateMethods(fail func(string, ...interface{})) {
|
||||
}
|
||||
}
|
||||
|
||||
// CheckOptionalScalars verifies against the ScalarStuff schema.
|
||||
func CheckOptionalScalars(fail func(string, ...interface{})) {
|
||||
type testCase struct {
|
||||
what string
|
||||
result, expect interface{}
|
||||
}
|
||||
|
||||
makeDefaultTestCases := func(s *optional_scalars.ScalarStuff) []testCase {
|
||||
return []testCase{
|
||||
{"justI8", s.JustI8(), int8(0)},
|
||||
{"maybeI8", s.MaybeI8(), (*int8)(nil)},
|
||||
{"defaultI8", s.DefaultI8(), int8(42)},
|
||||
{"justU8", s.JustU8(), byte(0)},
|
||||
{"maybeU8", s.MaybeU8(), (*byte)(nil)},
|
||||
{"defaultU8", s.DefaultU8(), byte(42)},
|
||||
{"justI16", s.JustI16(), int16(0)},
|
||||
{"maybeI16", s.MaybeI16(), (*int16)(nil)},
|
||||
{"defaultI16", s.DefaultI16(), int16(42)},
|
||||
{"justU16", s.JustU16(), uint16(0)},
|
||||
{"maybeU16", s.MaybeU16(), (*uint16)(nil)},
|
||||
{"defaultU16", s.DefaultU16(), uint16(42)},
|
||||
{"justI32", s.JustI32(), int32(0)},
|
||||
{"maybeI32", s.MaybeI32(), (*int32)(nil)},
|
||||
{"defaultI32", s.DefaultI32(), int32(42)},
|
||||
{"justU32", s.JustU32(), uint32(0)},
|
||||
{"maybeU32", s.MaybeU32(), (*uint32)(nil)},
|
||||
{"defaultU32", s.DefaultU32(), uint32(42)},
|
||||
{"justI64", s.JustI64(), int64(0)},
|
||||
{"maybeI64", s.MaybeI64(), (*int64)(nil)},
|
||||
{"defaultI64", s.DefaultI64(), int64(42)},
|
||||
{"justU64", s.JustU64(), uint64(0)},
|
||||
{"maybeU64", s.MaybeU64(), (*uint64)(nil)},
|
||||
{"defaultU64", s.DefaultU64(), uint64(42)},
|
||||
{"justF32", s.JustF32(), float32(0)},
|
||||
{"maybeF32", s.MaybeF32(), (*float32)(nil)},
|
||||
{"defaultF32", s.DefaultF32(), float32(42)},
|
||||
{"justF64", s.JustF64(), float64(0)},
|
||||
{"maybeF64", s.MaybeF64(), (*float64)(nil)},
|
||||
{"defaultF64", s.DefaultF64(), float64(42)},
|
||||
{"justBool", s.JustBool(), false},
|
||||
{"maybeBool", s.MaybeBool(), (*bool)(nil)},
|
||||
{"defaultBool", s.DefaultBool(), true},
|
||||
{"justEnum", s.JustEnum(), optional_scalars.OptionalByte(0)},
|
||||
{"maybeEnum", s.MaybeEnum(), (*optional_scalars.OptionalByte)(nil)},
|
||||
{"defaultEnum", s.DefaultEnum(), optional_scalars.OptionalByteOne},
|
||||
}
|
||||
}
|
||||
|
||||
makeAssignedTestCases := func(s *optional_scalars.ScalarStuff) []testCase {
|
||||
return []testCase{
|
||||
{"justI8", s.JustI8(), int8(5)},
|
||||
{"maybeI8", s.MaybeI8(), int8(5)},
|
||||
{"defaultI8", s.DefaultI8(), int8(5)},
|
||||
{"justU8", s.JustU8(), byte(6)},
|
||||
{"maybeU8", s.MaybeU8(), byte(6)},
|
||||
{"defaultU8", s.DefaultU8(), byte(6)},
|
||||
{"justI16", s.JustI16(), int16(7)},
|
||||
{"maybeI16", s.MaybeI16(), int16(7)},
|
||||
{"defaultI16", s.DefaultI16(), int16(7)},
|
||||
{"justU16", s.JustU16(), uint16(8)},
|
||||
{"maybeU16", s.MaybeU16(), uint16(8)},
|
||||
{"defaultU16", s.DefaultU16(), uint16(8)},
|
||||
{"justI32", s.JustI32(), int32(9)},
|
||||
{"maybeI32", s.MaybeI32(), int32(9)},
|
||||
{"defaultI32", s.DefaultI32(), int32(9)},
|
||||
{"justU32", s.JustU32(), uint32(10)},
|
||||
{"maybeU32", s.MaybeU32(), uint32(10)},
|
||||
{"defaultU32", s.DefaultU32(), uint32(10)},
|
||||
{"justI64", s.JustI64(), int64(11)},
|
||||
{"maybeI64", s.MaybeI64(), int64(11)},
|
||||
{"defaultI64", s.DefaultI64(), int64(11)},
|
||||
{"justU64", s.JustU64(), uint64(12)},
|
||||
{"maybeU64", s.MaybeU64(), uint64(12)},
|
||||
{"defaultU64", s.DefaultU64(), uint64(12)},
|
||||
{"justF32", s.JustF32(), float32(13)},
|
||||
{"maybeF32", s.MaybeF32(), float32(13)},
|
||||
{"defaultF32", s.DefaultF32(), float32(13)},
|
||||
{"justF64", s.JustF64(), float64(14)},
|
||||
{"maybeF64", s.MaybeF64(), float64(14)},
|
||||
{"defaultF64", s.DefaultF64(), float64(14)},
|
||||
{"justBool", s.JustBool(), true},
|
||||
{"maybeBool", s.MaybeBool(), true},
|
||||
{"defaultBool", s.DefaultBool(), false},
|
||||
{"justEnum", s.JustEnum(), optional_scalars.OptionalByteTwo},
|
||||
{"maybeEnum", s.MaybeEnum(), optional_scalars.OptionalByteTwo},
|
||||
{"defaultEnum", s.DefaultEnum(), optional_scalars.OptionalByteTwo},
|
||||
}
|
||||
}
|
||||
|
||||
resolvePointer := func(v interface{}) interface{} {
|
||||
switch v := v.(type) {
|
||||
case *int8:
|
||||
return *v
|
||||
case *byte:
|
||||
return *v
|
||||
case *int16:
|
||||
return *v
|
||||
case *uint16:
|
||||
return *v
|
||||
case *int32:
|
||||
return *v
|
||||
case *uint32:
|
||||
return *v
|
||||
case *int64:
|
||||
return *v
|
||||
case *uint64:
|
||||
return *v
|
||||
case *float32:
|
||||
return *v
|
||||
case *float64:
|
||||
return *v
|
||||
case *bool:
|
||||
return *v
|
||||
case *optional_scalars.OptionalByte:
|
||||
return *v
|
||||
default:
|
||||
return v
|
||||
}
|
||||
}
|
||||
|
||||
buildAssignedTable := func(b *flatbuffers.Builder) *optional_scalars.ScalarStuff {
|
||||
optional_scalars.ScalarStuffStart(b)
|
||||
optional_scalars.ScalarStuffAddJustI8(b, int8(5))
|
||||
optional_scalars.ScalarStuffAddMaybeI8(b, int8(5))
|
||||
optional_scalars.ScalarStuffAddDefaultI8(b, int8(5))
|
||||
optional_scalars.ScalarStuffAddJustU8(b, byte(6))
|
||||
optional_scalars.ScalarStuffAddMaybeU8(b, byte(6))
|
||||
optional_scalars.ScalarStuffAddDefaultU8(b, byte(6))
|
||||
optional_scalars.ScalarStuffAddJustI16(b, int16(7))
|
||||
optional_scalars.ScalarStuffAddMaybeI16(b, int16(7))
|
||||
optional_scalars.ScalarStuffAddDefaultI16(b, int16(7))
|
||||
optional_scalars.ScalarStuffAddJustU16(b, uint16(8))
|
||||
optional_scalars.ScalarStuffAddMaybeU16(b, uint16(8))
|
||||
optional_scalars.ScalarStuffAddDefaultU16(b, uint16(8))
|
||||
optional_scalars.ScalarStuffAddJustI32(b, int32(9))
|
||||
optional_scalars.ScalarStuffAddMaybeI32(b, int32(9))
|
||||
optional_scalars.ScalarStuffAddDefaultI32(b, int32(9))
|
||||
optional_scalars.ScalarStuffAddJustU32(b, uint32(10))
|
||||
optional_scalars.ScalarStuffAddMaybeU32(b, uint32(10))
|
||||
optional_scalars.ScalarStuffAddDefaultU32(b, uint32(10))
|
||||
optional_scalars.ScalarStuffAddJustI64(b, int64(11))
|
||||
optional_scalars.ScalarStuffAddMaybeI64(b, int64(11))
|
||||
optional_scalars.ScalarStuffAddDefaultI64(b, int64(11))
|
||||
optional_scalars.ScalarStuffAddJustU64(b, uint64(12))
|
||||
optional_scalars.ScalarStuffAddMaybeU64(b, uint64(12))
|
||||
optional_scalars.ScalarStuffAddDefaultU64(b, uint64(12))
|
||||
optional_scalars.ScalarStuffAddJustF32(b, float32(13))
|
||||
optional_scalars.ScalarStuffAddMaybeF32(b, float32(13))
|
||||
optional_scalars.ScalarStuffAddDefaultF32(b, float32(13))
|
||||
optional_scalars.ScalarStuffAddJustF64(b, float64(14))
|
||||
optional_scalars.ScalarStuffAddMaybeF64(b, float64(14))
|
||||
optional_scalars.ScalarStuffAddDefaultF64(b, float64(14))
|
||||
optional_scalars.ScalarStuffAddJustBool(b, true)
|
||||
optional_scalars.ScalarStuffAddMaybeBool(b, true)
|
||||
optional_scalars.ScalarStuffAddDefaultBool(b, false)
|
||||
optional_scalars.ScalarStuffAddJustEnum(b, optional_scalars.OptionalByteTwo)
|
||||
optional_scalars.ScalarStuffAddMaybeEnum(b, optional_scalars.OptionalByteTwo)
|
||||
optional_scalars.ScalarStuffAddDefaultEnum(b, optional_scalars.OptionalByteTwo)
|
||||
b.Finish(optional_scalars.ScalarStuffEnd(b))
|
||||
return optional_scalars.GetRootAsScalarStuff(b.FinishedBytes(), 0)
|
||||
}
|
||||
|
||||
// test default values
|
||||
|
||||
fbb := flatbuffers.NewBuilder(1)
|
||||
optional_scalars.ScalarStuffStart(fbb)
|
||||
fbb.Finish(optional_scalars.ScalarStuffEnd(fbb))
|
||||
ss := optional_scalars.GetRootAsScalarStuff(fbb.FinishedBytes(), 0)
|
||||
for _, tc := range makeDefaultTestCases(ss) {
|
||||
if tc.result != tc.expect {
|
||||
fail(FailString("Default ScalarStuff: "+tc.what, tc.expect, tc.result))
|
||||
}
|
||||
}
|
||||
|
||||
// test assigned values
|
||||
fbb.Reset()
|
||||
ss = buildAssignedTable(fbb)
|
||||
for _, tc := range makeAssignedTestCases(ss) {
|
||||
if resolvePointer(tc.result) != tc.expect {
|
||||
fail(FailString("Assigned ScalarStuff: "+tc.what, tc.expect, tc.result))
|
||||
}
|
||||
}
|
||||
|
||||
// test native object pack
|
||||
fbb.Reset()
|
||||
i8 := int8(5)
|
||||
u8 := byte(6)
|
||||
i16 := int16(7)
|
||||
u16 := uint16(8)
|
||||
i32 := int32(9)
|
||||
u32 := uint32(10)
|
||||
i64 := int64(11)
|
||||
u64 := uint64(12)
|
||||
f32 := float32(13)
|
||||
f64 := float64(14)
|
||||
b := true
|
||||
enum := optional_scalars.OptionalByteTwo
|
||||
obj := optional_scalars.ScalarStuffT{
|
||||
JustI8: 5,
|
||||
MaybeI8: &i8,
|
||||
DefaultI8: 5,
|
||||
JustU8: 6,
|
||||
MaybeU8: &u8,
|
||||
DefaultU8: 6,
|
||||
JustI16: 7,
|
||||
MaybeI16: &i16,
|
||||
DefaultI16: 7,
|
||||
JustU16: 8,
|
||||
MaybeU16: &u16,
|
||||
DefaultU16: 8,
|
||||
JustI32: 9,
|
||||
MaybeI32: &i32,
|
||||
DefaultI32: 9,
|
||||
JustU32: 10,
|
||||
MaybeU32: &u32,
|
||||
DefaultU32: 10,
|
||||
JustI64: 11,
|
||||
MaybeI64: &i64,
|
||||
DefaultI64: 11,
|
||||
JustU64: 12,
|
||||
MaybeU64: &u64,
|
||||
DefaultU64: 12,
|
||||
JustF32: 13,
|
||||
MaybeF32: &f32,
|
||||
DefaultF32: 13,
|
||||
JustF64: 14,
|
||||
MaybeF64: &f64,
|
||||
DefaultF64: 14,
|
||||
JustBool: true,
|
||||
MaybeBool: &b,
|
||||
DefaultBool: false,
|
||||
JustEnum: optional_scalars.OptionalByteTwo,
|
||||
MaybeEnum: &enum,
|
||||
DefaultEnum: optional_scalars.OptionalByteTwo,
|
||||
}
|
||||
fbb.Finish(obj.Pack(fbb))
|
||||
ss = optional_scalars.GetRootAsScalarStuff(fbb.FinishedBytes(), 0)
|
||||
for _, tc := range makeAssignedTestCases(ss) {
|
||||
if resolvePointer(tc.result) != tc.expect {
|
||||
fail(FailString("Native Object ScalarStuff: "+tc.what, tc.expect, tc.result))
|
||||
}
|
||||
}
|
||||
|
||||
// test native object unpack
|
||||
fbb.Reset()
|
||||
ss = buildAssignedTable(fbb)
|
||||
ss.UnPackTo(&obj)
|
||||
expectEq := func(what string, a, b interface{}) {
|
||||
if resolvePointer(a) != b {
|
||||
fail(FailString("Native Object Unpack ScalarStuff: "+what, b, a))
|
||||
}
|
||||
}
|
||||
expectEq("justI8", obj.JustI8, int8(5))
|
||||
expectEq("maybeI8", obj.MaybeI8, int8(5))
|
||||
expectEq("defaultI8", obj.DefaultI8, int8(5))
|
||||
expectEq("justU8", obj.JustU8, byte(6))
|
||||
expectEq("maybeU8", obj.MaybeU8, byte(6))
|
||||
expectEq("defaultU8", obj.DefaultU8, byte(6))
|
||||
expectEq("justI16", obj.JustI16, int16(7))
|
||||
expectEq("maybeI16", obj.MaybeI16, int16(7))
|
||||
expectEq("defaultI16", obj.DefaultI16, int16(7))
|
||||
expectEq("justU16", obj.JustU16, uint16(8))
|
||||
expectEq("maybeU16", obj.MaybeU16, uint16(8))
|
||||
expectEq("defaultU16", obj.DefaultU16, uint16(8))
|
||||
expectEq("justI32", obj.JustI32, int32(9))
|
||||
expectEq("maybeI32", obj.MaybeI32, int32(9))
|
||||
expectEq("defaultI32", obj.DefaultI32, int32(9))
|
||||
expectEq("justU32", obj.JustU32, uint32(10))
|
||||
expectEq("maybeU32", obj.MaybeU32, uint32(10))
|
||||
expectEq("defaultU32", obj.DefaultU32, uint32(10))
|
||||
expectEq("justI64", obj.JustI64, int64(11))
|
||||
expectEq("maybeI64", obj.MaybeI64, int64(11))
|
||||
expectEq("defaultI64", obj.DefaultI64, int64(11))
|
||||
expectEq("justU64", obj.JustU64, uint64(12))
|
||||
expectEq("maybeU64", obj.MaybeU64, uint64(12))
|
||||
expectEq("defaultU64", obj.DefaultU64, uint64(12))
|
||||
expectEq("justF32", obj.JustF32, float32(13))
|
||||
expectEq("maybeF32", obj.MaybeF32, float32(13))
|
||||
expectEq("defaultF32", obj.DefaultF32, float32(13))
|
||||
expectEq("justF64", obj.JustF64, float64(14))
|
||||
expectEq("maybeF64", obj.MaybeF64, float64(14))
|
||||
expectEq("defaultF64", obj.DefaultF64, float64(14))
|
||||
expectEq("justBool", obj.JustBool, true)
|
||||
expectEq("maybeBool", obj.MaybeBool, true)
|
||||
expectEq("defaultBool", obj.DefaultBool, false)
|
||||
expectEq("justEnum", obj.JustEnum, optional_scalars.OptionalByteTwo)
|
||||
expectEq("maybeEnum", obj.MaybeEnum, optional_scalars.OptionalByteTwo)
|
||||
expectEq("defaultEnum", obj.DefaultEnum, optional_scalars.OptionalByteTwo)
|
||||
}
|
||||
|
||||
// BenchmarkVtableDeduplication measures the speed of vtable deduplication
|
||||
// by creating prePop vtables, then populating b.N objects with a
|
||||
// different single vtable.
|
||||
|
||||
32
tests/optional_scalars/OptionalByte.go
Normal file
32
tests/optional_scalars/OptionalByte.go
Normal file
@@ -0,0 +1,32 @@
|
||||
// Code generated by the FlatBuffers compiler. DO NOT EDIT.
|
||||
|
||||
package optional_scalars
|
||||
|
||||
import "strconv"
|
||||
|
||||
type OptionalByte int8
|
||||
|
||||
const (
|
||||
OptionalByteNone OptionalByte = 0
|
||||
OptionalByteOne OptionalByte = 1
|
||||
OptionalByteTwo OptionalByte = 2
|
||||
)
|
||||
|
||||
var EnumNamesOptionalByte = map[OptionalByte]string{
|
||||
OptionalByteNone: "None",
|
||||
OptionalByteOne: "One",
|
||||
OptionalByteTwo: "Two",
|
||||
}
|
||||
|
||||
var EnumValuesOptionalByte = map[string]OptionalByte{
|
||||
"None": OptionalByteNone,
|
||||
"One": OptionalByteOne,
|
||||
"Two": OptionalByteTwo,
|
||||
}
|
||||
|
||||
func (v OptionalByte) String() string {
|
||||
if s, ok := EnumNamesOptionalByte[v]; ok {
|
||||
return s
|
||||
}
|
||||
return "OptionalByte(" + strconv.FormatInt(int64(v), 10) + ")"
|
||||
}
|
||||
756
tests/optional_scalars/ScalarStuff.go
Normal file
756
tests/optional_scalars/ScalarStuff.go
Normal file
@@ -0,0 +1,756 @@
|
||||
// Code generated by the FlatBuffers compiler. DO NOT EDIT.
|
||||
|
||||
package optional_scalars
|
||||
|
||||
import (
|
||||
flatbuffers "github.com/google/flatbuffers/go"
|
||||
)
|
||||
|
||||
type ScalarStuffT struct {
|
||||
JustI8 int8
|
||||
MaybeI8 *int8
|
||||
DefaultI8 int8
|
||||
JustU8 byte
|
||||
MaybeU8 *byte
|
||||
DefaultU8 byte
|
||||
JustI16 int16
|
||||
MaybeI16 *int16
|
||||
DefaultI16 int16
|
||||
JustU16 uint16
|
||||
MaybeU16 *uint16
|
||||
DefaultU16 uint16
|
||||
JustI32 int32
|
||||
MaybeI32 *int32
|
||||
DefaultI32 int32
|
||||
JustU32 uint32
|
||||
MaybeU32 *uint32
|
||||
DefaultU32 uint32
|
||||
JustI64 int64
|
||||
MaybeI64 *int64
|
||||
DefaultI64 int64
|
||||
JustU64 uint64
|
||||
MaybeU64 *uint64
|
||||
DefaultU64 uint64
|
||||
JustF32 float32
|
||||
MaybeF32 *float32
|
||||
DefaultF32 float32
|
||||
JustF64 float64
|
||||
MaybeF64 *float64
|
||||
DefaultF64 float64
|
||||
JustBool bool
|
||||
MaybeBool *bool
|
||||
DefaultBool bool
|
||||
JustEnum OptionalByte
|
||||
MaybeEnum *OptionalByte
|
||||
DefaultEnum OptionalByte
|
||||
}
|
||||
|
||||
func (t *ScalarStuffT) Pack(builder *flatbuffers.Builder) flatbuffers.UOffsetT {
|
||||
if t == nil { return 0 }
|
||||
ScalarStuffStart(builder)
|
||||
ScalarStuffAddJustI8(builder, t.JustI8)
|
||||
if t.MaybeI8 != nil {
|
||||
ScalarStuffAddMaybeI8(builder, *t.MaybeI8)
|
||||
}
|
||||
ScalarStuffAddDefaultI8(builder, t.DefaultI8)
|
||||
ScalarStuffAddJustU8(builder, t.JustU8)
|
||||
if t.MaybeU8 != nil {
|
||||
ScalarStuffAddMaybeU8(builder, *t.MaybeU8)
|
||||
}
|
||||
ScalarStuffAddDefaultU8(builder, t.DefaultU8)
|
||||
ScalarStuffAddJustI16(builder, t.JustI16)
|
||||
if t.MaybeI16 != nil {
|
||||
ScalarStuffAddMaybeI16(builder, *t.MaybeI16)
|
||||
}
|
||||
ScalarStuffAddDefaultI16(builder, t.DefaultI16)
|
||||
ScalarStuffAddJustU16(builder, t.JustU16)
|
||||
if t.MaybeU16 != nil {
|
||||
ScalarStuffAddMaybeU16(builder, *t.MaybeU16)
|
||||
}
|
||||
ScalarStuffAddDefaultU16(builder, t.DefaultU16)
|
||||
ScalarStuffAddJustI32(builder, t.JustI32)
|
||||
if t.MaybeI32 != nil {
|
||||
ScalarStuffAddMaybeI32(builder, *t.MaybeI32)
|
||||
}
|
||||
ScalarStuffAddDefaultI32(builder, t.DefaultI32)
|
||||
ScalarStuffAddJustU32(builder, t.JustU32)
|
||||
if t.MaybeU32 != nil {
|
||||
ScalarStuffAddMaybeU32(builder, *t.MaybeU32)
|
||||
}
|
||||
ScalarStuffAddDefaultU32(builder, t.DefaultU32)
|
||||
ScalarStuffAddJustI64(builder, t.JustI64)
|
||||
if t.MaybeI64 != nil {
|
||||
ScalarStuffAddMaybeI64(builder, *t.MaybeI64)
|
||||
}
|
||||
ScalarStuffAddDefaultI64(builder, t.DefaultI64)
|
||||
ScalarStuffAddJustU64(builder, t.JustU64)
|
||||
if t.MaybeU64 != nil {
|
||||
ScalarStuffAddMaybeU64(builder, *t.MaybeU64)
|
||||
}
|
||||
ScalarStuffAddDefaultU64(builder, t.DefaultU64)
|
||||
ScalarStuffAddJustF32(builder, t.JustF32)
|
||||
if t.MaybeF32 != nil {
|
||||
ScalarStuffAddMaybeF32(builder, *t.MaybeF32)
|
||||
}
|
||||
ScalarStuffAddDefaultF32(builder, t.DefaultF32)
|
||||
ScalarStuffAddJustF64(builder, t.JustF64)
|
||||
if t.MaybeF64 != nil {
|
||||
ScalarStuffAddMaybeF64(builder, *t.MaybeF64)
|
||||
}
|
||||
ScalarStuffAddDefaultF64(builder, t.DefaultF64)
|
||||
ScalarStuffAddJustBool(builder, t.JustBool)
|
||||
if t.MaybeBool != nil {
|
||||
ScalarStuffAddMaybeBool(builder, *t.MaybeBool)
|
||||
}
|
||||
ScalarStuffAddDefaultBool(builder, t.DefaultBool)
|
||||
ScalarStuffAddJustEnum(builder, t.JustEnum)
|
||||
if t.MaybeEnum != nil {
|
||||
ScalarStuffAddMaybeEnum(builder, *t.MaybeEnum)
|
||||
}
|
||||
ScalarStuffAddDefaultEnum(builder, t.DefaultEnum)
|
||||
return ScalarStuffEnd(builder)
|
||||
}
|
||||
|
||||
func (rcv *ScalarStuff) UnPackTo(t *ScalarStuffT) {
|
||||
t.JustI8 = rcv.JustI8()
|
||||
t.MaybeI8 = rcv.MaybeI8()
|
||||
t.DefaultI8 = rcv.DefaultI8()
|
||||
t.JustU8 = rcv.JustU8()
|
||||
t.MaybeU8 = rcv.MaybeU8()
|
||||
t.DefaultU8 = rcv.DefaultU8()
|
||||
t.JustI16 = rcv.JustI16()
|
||||
t.MaybeI16 = rcv.MaybeI16()
|
||||
t.DefaultI16 = rcv.DefaultI16()
|
||||
t.JustU16 = rcv.JustU16()
|
||||
t.MaybeU16 = rcv.MaybeU16()
|
||||
t.DefaultU16 = rcv.DefaultU16()
|
||||
t.JustI32 = rcv.JustI32()
|
||||
t.MaybeI32 = rcv.MaybeI32()
|
||||
t.DefaultI32 = rcv.DefaultI32()
|
||||
t.JustU32 = rcv.JustU32()
|
||||
t.MaybeU32 = rcv.MaybeU32()
|
||||
t.DefaultU32 = rcv.DefaultU32()
|
||||
t.JustI64 = rcv.JustI64()
|
||||
t.MaybeI64 = rcv.MaybeI64()
|
||||
t.DefaultI64 = rcv.DefaultI64()
|
||||
t.JustU64 = rcv.JustU64()
|
||||
t.MaybeU64 = rcv.MaybeU64()
|
||||
t.DefaultU64 = rcv.DefaultU64()
|
||||
t.JustF32 = rcv.JustF32()
|
||||
t.MaybeF32 = rcv.MaybeF32()
|
||||
t.DefaultF32 = rcv.DefaultF32()
|
||||
t.JustF64 = rcv.JustF64()
|
||||
t.MaybeF64 = rcv.MaybeF64()
|
||||
t.DefaultF64 = rcv.DefaultF64()
|
||||
t.JustBool = rcv.JustBool()
|
||||
t.MaybeBool = rcv.MaybeBool()
|
||||
t.DefaultBool = rcv.DefaultBool()
|
||||
t.JustEnum = rcv.JustEnum()
|
||||
t.MaybeEnum = rcv.MaybeEnum()
|
||||
t.DefaultEnum = rcv.DefaultEnum()
|
||||
}
|
||||
|
||||
func (rcv *ScalarStuff) UnPack() *ScalarStuffT {
|
||||
if rcv == nil { return nil }
|
||||
t := &ScalarStuffT{}
|
||||
rcv.UnPackTo(t)
|
||||
return t
|
||||
}
|
||||
|
||||
type ScalarStuff struct {
|
||||
_tab flatbuffers.Table
|
||||
}
|
||||
|
||||
func GetRootAsScalarStuff(buf []byte, offset flatbuffers.UOffsetT) *ScalarStuff {
|
||||
n := flatbuffers.GetUOffsetT(buf[offset:])
|
||||
x := &ScalarStuff{}
|
||||
x.Init(buf, n+offset)
|
||||
return x
|
||||
}
|
||||
|
||||
func GetSizePrefixedRootAsScalarStuff(buf []byte, offset flatbuffers.UOffsetT) *ScalarStuff {
|
||||
n := flatbuffers.GetUOffsetT(buf[offset+flatbuffers.SizeUint32:])
|
||||
x := &ScalarStuff{}
|
||||
x.Init(buf, n+offset+flatbuffers.SizeUint32)
|
||||
return x
|
||||
}
|
||||
|
||||
func (rcv *ScalarStuff) Init(buf []byte, i flatbuffers.UOffsetT) {
|
||||
rcv._tab.Bytes = buf
|
||||
rcv._tab.Pos = i
|
||||
}
|
||||
|
||||
func (rcv *ScalarStuff) Table() flatbuffers.Table {
|
||||
return rcv._tab
|
||||
}
|
||||
|
||||
func (rcv *ScalarStuff) JustI8() int8 {
|
||||
o := flatbuffers.UOffsetT(rcv._tab.Offset(4))
|
||||
if o != 0 {
|
||||
return rcv._tab.GetInt8(o + rcv._tab.Pos)
|
||||
}
|
||||
return 0
|
||||
}
|
||||
|
||||
func (rcv *ScalarStuff) MutateJustI8(n int8) bool {
|
||||
return rcv._tab.MutateInt8Slot(4, n)
|
||||
}
|
||||
|
||||
func (rcv *ScalarStuff) MaybeI8() *int8 {
|
||||
o := flatbuffers.UOffsetT(rcv._tab.Offset(6))
|
||||
if o != 0 {
|
||||
v := rcv._tab.GetInt8(o + rcv._tab.Pos)
|
||||
return &v
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func (rcv *ScalarStuff) MutateMaybeI8(n int8) bool {
|
||||
return rcv._tab.MutateInt8Slot(6, n)
|
||||
}
|
||||
|
||||
func (rcv *ScalarStuff) DefaultI8() int8 {
|
||||
o := flatbuffers.UOffsetT(rcv._tab.Offset(8))
|
||||
if o != 0 {
|
||||
return rcv._tab.GetInt8(o + rcv._tab.Pos)
|
||||
}
|
||||
return 42
|
||||
}
|
||||
|
||||
func (rcv *ScalarStuff) MutateDefaultI8(n int8) bool {
|
||||
return rcv._tab.MutateInt8Slot(8, n)
|
||||
}
|
||||
|
||||
func (rcv *ScalarStuff) JustU8() byte {
|
||||
o := flatbuffers.UOffsetT(rcv._tab.Offset(10))
|
||||
if o != 0 {
|
||||
return rcv._tab.GetByte(o + rcv._tab.Pos)
|
||||
}
|
||||
return 0
|
||||
}
|
||||
|
||||
func (rcv *ScalarStuff) MutateJustU8(n byte) bool {
|
||||
return rcv._tab.MutateByteSlot(10, n)
|
||||
}
|
||||
|
||||
func (rcv *ScalarStuff) MaybeU8() *byte {
|
||||
o := flatbuffers.UOffsetT(rcv._tab.Offset(12))
|
||||
if o != 0 {
|
||||
v := rcv._tab.GetByte(o + rcv._tab.Pos)
|
||||
return &v
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func (rcv *ScalarStuff) MutateMaybeU8(n byte) bool {
|
||||
return rcv._tab.MutateByteSlot(12, n)
|
||||
}
|
||||
|
||||
func (rcv *ScalarStuff) DefaultU8() byte {
|
||||
o := flatbuffers.UOffsetT(rcv._tab.Offset(14))
|
||||
if o != 0 {
|
||||
return rcv._tab.GetByte(o + rcv._tab.Pos)
|
||||
}
|
||||
return 42
|
||||
}
|
||||
|
||||
func (rcv *ScalarStuff) MutateDefaultU8(n byte) bool {
|
||||
return rcv._tab.MutateByteSlot(14, n)
|
||||
}
|
||||
|
||||
func (rcv *ScalarStuff) JustI16() int16 {
|
||||
o := flatbuffers.UOffsetT(rcv._tab.Offset(16))
|
||||
if o != 0 {
|
||||
return rcv._tab.GetInt16(o + rcv._tab.Pos)
|
||||
}
|
||||
return 0
|
||||
}
|
||||
|
||||
func (rcv *ScalarStuff) MutateJustI16(n int16) bool {
|
||||
return rcv._tab.MutateInt16Slot(16, n)
|
||||
}
|
||||
|
||||
func (rcv *ScalarStuff) MaybeI16() *int16 {
|
||||
o := flatbuffers.UOffsetT(rcv._tab.Offset(18))
|
||||
if o != 0 {
|
||||
v := rcv._tab.GetInt16(o + rcv._tab.Pos)
|
||||
return &v
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func (rcv *ScalarStuff) MutateMaybeI16(n int16) bool {
|
||||
return rcv._tab.MutateInt16Slot(18, n)
|
||||
}
|
||||
|
||||
func (rcv *ScalarStuff) DefaultI16() int16 {
|
||||
o := flatbuffers.UOffsetT(rcv._tab.Offset(20))
|
||||
if o != 0 {
|
||||
return rcv._tab.GetInt16(o + rcv._tab.Pos)
|
||||
}
|
||||
return 42
|
||||
}
|
||||
|
||||
func (rcv *ScalarStuff) MutateDefaultI16(n int16) bool {
|
||||
return rcv._tab.MutateInt16Slot(20, n)
|
||||
}
|
||||
|
||||
func (rcv *ScalarStuff) JustU16() uint16 {
|
||||
o := flatbuffers.UOffsetT(rcv._tab.Offset(22))
|
||||
if o != 0 {
|
||||
return rcv._tab.GetUint16(o + rcv._tab.Pos)
|
||||
}
|
||||
return 0
|
||||
}
|
||||
|
||||
func (rcv *ScalarStuff) MutateJustU16(n uint16) bool {
|
||||
return rcv._tab.MutateUint16Slot(22, n)
|
||||
}
|
||||
|
||||
func (rcv *ScalarStuff) MaybeU16() *uint16 {
|
||||
o := flatbuffers.UOffsetT(rcv._tab.Offset(24))
|
||||
if o != 0 {
|
||||
v := rcv._tab.GetUint16(o + rcv._tab.Pos)
|
||||
return &v
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func (rcv *ScalarStuff) MutateMaybeU16(n uint16) bool {
|
||||
return rcv._tab.MutateUint16Slot(24, n)
|
||||
}
|
||||
|
||||
func (rcv *ScalarStuff) DefaultU16() uint16 {
|
||||
o := flatbuffers.UOffsetT(rcv._tab.Offset(26))
|
||||
if o != 0 {
|
||||
return rcv._tab.GetUint16(o + rcv._tab.Pos)
|
||||
}
|
||||
return 42
|
||||
}
|
||||
|
||||
func (rcv *ScalarStuff) MutateDefaultU16(n uint16) bool {
|
||||
return rcv._tab.MutateUint16Slot(26, n)
|
||||
}
|
||||
|
||||
func (rcv *ScalarStuff) JustI32() int32 {
|
||||
o := flatbuffers.UOffsetT(rcv._tab.Offset(28))
|
||||
if o != 0 {
|
||||
return rcv._tab.GetInt32(o + rcv._tab.Pos)
|
||||
}
|
||||
return 0
|
||||
}
|
||||
|
||||
func (rcv *ScalarStuff) MutateJustI32(n int32) bool {
|
||||
return rcv._tab.MutateInt32Slot(28, n)
|
||||
}
|
||||
|
||||
func (rcv *ScalarStuff) MaybeI32() *int32 {
|
||||
o := flatbuffers.UOffsetT(rcv._tab.Offset(30))
|
||||
if o != 0 {
|
||||
v := rcv._tab.GetInt32(o + rcv._tab.Pos)
|
||||
return &v
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func (rcv *ScalarStuff) MutateMaybeI32(n int32) bool {
|
||||
return rcv._tab.MutateInt32Slot(30, n)
|
||||
}
|
||||
|
||||
func (rcv *ScalarStuff) DefaultI32() int32 {
|
||||
o := flatbuffers.UOffsetT(rcv._tab.Offset(32))
|
||||
if o != 0 {
|
||||
return rcv._tab.GetInt32(o + rcv._tab.Pos)
|
||||
}
|
||||
return 42
|
||||
}
|
||||
|
||||
func (rcv *ScalarStuff) MutateDefaultI32(n int32) bool {
|
||||
return rcv._tab.MutateInt32Slot(32, n)
|
||||
}
|
||||
|
||||
func (rcv *ScalarStuff) JustU32() uint32 {
|
||||
o := flatbuffers.UOffsetT(rcv._tab.Offset(34))
|
||||
if o != 0 {
|
||||
return rcv._tab.GetUint32(o + rcv._tab.Pos)
|
||||
}
|
||||
return 0
|
||||
}
|
||||
|
||||
func (rcv *ScalarStuff) MutateJustU32(n uint32) bool {
|
||||
return rcv._tab.MutateUint32Slot(34, n)
|
||||
}
|
||||
|
||||
func (rcv *ScalarStuff) MaybeU32() *uint32 {
|
||||
o := flatbuffers.UOffsetT(rcv._tab.Offset(36))
|
||||
if o != 0 {
|
||||
v := rcv._tab.GetUint32(o + rcv._tab.Pos)
|
||||
return &v
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func (rcv *ScalarStuff) MutateMaybeU32(n uint32) bool {
|
||||
return rcv._tab.MutateUint32Slot(36, n)
|
||||
}
|
||||
|
||||
func (rcv *ScalarStuff) DefaultU32() uint32 {
|
||||
o := flatbuffers.UOffsetT(rcv._tab.Offset(38))
|
||||
if o != 0 {
|
||||
return rcv._tab.GetUint32(o + rcv._tab.Pos)
|
||||
}
|
||||
return 42
|
||||
}
|
||||
|
||||
func (rcv *ScalarStuff) MutateDefaultU32(n uint32) bool {
|
||||
return rcv._tab.MutateUint32Slot(38, n)
|
||||
}
|
||||
|
||||
func (rcv *ScalarStuff) JustI64() int64 {
|
||||
o := flatbuffers.UOffsetT(rcv._tab.Offset(40))
|
||||
if o != 0 {
|
||||
return rcv._tab.GetInt64(o + rcv._tab.Pos)
|
||||
}
|
||||
return 0
|
||||
}
|
||||
|
||||
func (rcv *ScalarStuff) MutateJustI64(n int64) bool {
|
||||
return rcv._tab.MutateInt64Slot(40, n)
|
||||
}
|
||||
|
||||
func (rcv *ScalarStuff) MaybeI64() *int64 {
|
||||
o := flatbuffers.UOffsetT(rcv._tab.Offset(42))
|
||||
if o != 0 {
|
||||
v := rcv._tab.GetInt64(o + rcv._tab.Pos)
|
||||
return &v
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func (rcv *ScalarStuff) MutateMaybeI64(n int64) bool {
|
||||
return rcv._tab.MutateInt64Slot(42, n)
|
||||
}
|
||||
|
||||
func (rcv *ScalarStuff) DefaultI64() int64 {
|
||||
o := flatbuffers.UOffsetT(rcv._tab.Offset(44))
|
||||
if o != 0 {
|
||||
return rcv._tab.GetInt64(o + rcv._tab.Pos)
|
||||
}
|
||||
return 42
|
||||
}
|
||||
|
||||
func (rcv *ScalarStuff) MutateDefaultI64(n int64) bool {
|
||||
return rcv._tab.MutateInt64Slot(44, n)
|
||||
}
|
||||
|
||||
func (rcv *ScalarStuff) JustU64() uint64 {
|
||||
o := flatbuffers.UOffsetT(rcv._tab.Offset(46))
|
||||
if o != 0 {
|
||||
return rcv._tab.GetUint64(o + rcv._tab.Pos)
|
||||
}
|
||||
return 0
|
||||
}
|
||||
|
||||
func (rcv *ScalarStuff) MutateJustU64(n uint64) bool {
|
||||
return rcv._tab.MutateUint64Slot(46, n)
|
||||
}
|
||||
|
||||
func (rcv *ScalarStuff) MaybeU64() *uint64 {
|
||||
o := flatbuffers.UOffsetT(rcv._tab.Offset(48))
|
||||
if o != 0 {
|
||||
v := rcv._tab.GetUint64(o + rcv._tab.Pos)
|
||||
return &v
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func (rcv *ScalarStuff) MutateMaybeU64(n uint64) bool {
|
||||
return rcv._tab.MutateUint64Slot(48, n)
|
||||
}
|
||||
|
||||
func (rcv *ScalarStuff) DefaultU64() uint64 {
|
||||
o := flatbuffers.UOffsetT(rcv._tab.Offset(50))
|
||||
if o != 0 {
|
||||
return rcv._tab.GetUint64(o + rcv._tab.Pos)
|
||||
}
|
||||
return 42
|
||||
}
|
||||
|
||||
func (rcv *ScalarStuff) MutateDefaultU64(n uint64) bool {
|
||||
return rcv._tab.MutateUint64Slot(50, n)
|
||||
}
|
||||
|
||||
func (rcv *ScalarStuff) JustF32() float32 {
|
||||
o := flatbuffers.UOffsetT(rcv._tab.Offset(52))
|
||||
if o != 0 {
|
||||
return rcv._tab.GetFloat32(o + rcv._tab.Pos)
|
||||
}
|
||||
return 0.0
|
||||
}
|
||||
|
||||
func (rcv *ScalarStuff) MutateJustF32(n float32) bool {
|
||||
return rcv._tab.MutateFloat32Slot(52, n)
|
||||
}
|
||||
|
||||
func (rcv *ScalarStuff) MaybeF32() *float32 {
|
||||
o := flatbuffers.UOffsetT(rcv._tab.Offset(54))
|
||||
if o != 0 {
|
||||
v := rcv._tab.GetFloat32(o + rcv._tab.Pos)
|
||||
return &v
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func (rcv *ScalarStuff) MutateMaybeF32(n float32) bool {
|
||||
return rcv._tab.MutateFloat32Slot(54, n)
|
||||
}
|
||||
|
||||
func (rcv *ScalarStuff) DefaultF32() float32 {
|
||||
o := flatbuffers.UOffsetT(rcv._tab.Offset(56))
|
||||
if o != 0 {
|
||||
return rcv._tab.GetFloat32(o + rcv._tab.Pos)
|
||||
}
|
||||
return 42.0
|
||||
}
|
||||
|
||||
func (rcv *ScalarStuff) MutateDefaultF32(n float32) bool {
|
||||
return rcv._tab.MutateFloat32Slot(56, n)
|
||||
}
|
||||
|
||||
func (rcv *ScalarStuff) JustF64() float64 {
|
||||
o := flatbuffers.UOffsetT(rcv._tab.Offset(58))
|
||||
if o != 0 {
|
||||
return rcv._tab.GetFloat64(o + rcv._tab.Pos)
|
||||
}
|
||||
return 0.0
|
||||
}
|
||||
|
||||
func (rcv *ScalarStuff) MutateJustF64(n float64) bool {
|
||||
return rcv._tab.MutateFloat64Slot(58, n)
|
||||
}
|
||||
|
||||
func (rcv *ScalarStuff) MaybeF64() *float64 {
|
||||
o := flatbuffers.UOffsetT(rcv._tab.Offset(60))
|
||||
if o != 0 {
|
||||
v := rcv._tab.GetFloat64(o + rcv._tab.Pos)
|
||||
return &v
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func (rcv *ScalarStuff) MutateMaybeF64(n float64) bool {
|
||||
return rcv._tab.MutateFloat64Slot(60, n)
|
||||
}
|
||||
|
||||
func (rcv *ScalarStuff) DefaultF64() float64 {
|
||||
o := flatbuffers.UOffsetT(rcv._tab.Offset(62))
|
||||
if o != 0 {
|
||||
return rcv._tab.GetFloat64(o + rcv._tab.Pos)
|
||||
}
|
||||
return 42.0
|
||||
}
|
||||
|
||||
func (rcv *ScalarStuff) MutateDefaultF64(n float64) bool {
|
||||
return rcv._tab.MutateFloat64Slot(62, n)
|
||||
}
|
||||
|
||||
func (rcv *ScalarStuff) JustBool() bool {
|
||||
o := flatbuffers.UOffsetT(rcv._tab.Offset(64))
|
||||
if o != 0 {
|
||||
return rcv._tab.GetBool(o + rcv._tab.Pos)
|
||||
}
|
||||
return false
|
||||
}
|
||||
|
||||
func (rcv *ScalarStuff) MutateJustBool(n bool) bool {
|
||||
return rcv._tab.MutateBoolSlot(64, n)
|
||||
}
|
||||
|
||||
func (rcv *ScalarStuff) MaybeBool() *bool {
|
||||
o := flatbuffers.UOffsetT(rcv._tab.Offset(66))
|
||||
if o != 0 {
|
||||
v := rcv._tab.GetBool(o + rcv._tab.Pos)
|
||||
return &v
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func (rcv *ScalarStuff) MutateMaybeBool(n bool) bool {
|
||||
return rcv._tab.MutateBoolSlot(66, n)
|
||||
}
|
||||
|
||||
func (rcv *ScalarStuff) DefaultBool() bool {
|
||||
o := flatbuffers.UOffsetT(rcv._tab.Offset(68))
|
||||
if o != 0 {
|
||||
return rcv._tab.GetBool(o + rcv._tab.Pos)
|
||||
}
|
||||
return true
|
||||
}
|
||||
|
||||
func (rcv *ScalarStuff) MutateDefaultBool(n bool) bool {
|
||||
return rcv._tab.MutateBoolSlot(68, n)
|
||||
}
|
||||
|
||||
func (rcv *ScalarStuff) JustEnum() OptionalByte {
|
||||
o := flatbuffers.UOffsetT(rcv._tab.Offset(70))
|
||||
if o != 0 {
|
||||
return OptionalByte(rcv._tab.GetInt8(o + rcv._tab.Pos))
|
||||
}
|
||||
return 0
|
||||
}
|
||||
|
||||
func (rcv *ScalarStuff) MutateJustEnum(n OptionalByte) bool {
|
||||
return rcv._tab.MutateInt8Slot(70, int8(n))
|
||||
}
|
||||
|
||||
func (rcv *ScalarStuff) MaybeEnum() *OptionalByte {
|
||||
o := flatbuffers.UOffsetT(rcv._tab.Offset(72))
|
||||
if o != 0 {
|
||||
v := OptionalByte(rcv._tab.GetInt8(o + rcv._tab.Pos))
|
||||
return &v
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func (rcv *ScalarStuff) MutateMaybeEnum(n OptionalByte) bool {
|
||||
return rcv._tab.MutateInt8Slot(72, int8(n))
|
||||
}
|
||||
|
||||
func (rcv *ScalarStuff) DefaultEnum() OptionalByte {
|
||||
o := flatbuffers.UOffsetT(rcv._tab.Offset(74))
|
||||
if o != 0 {
|
||||
return OptionalByte(rcv._tab.GetInt8(o + rcv._tab.Pos))
|
||||
}
|
||||
return 1
|
||||
}
|
||||
|
||||
func (rcv *ScalarStuff) MutateDefaultEnum(n OptionalByte) bool {
|
||||
return rcv._tab.MutateInt8Slot(74, int8(n))
|
||||
}
|
||||
|
||||
func ScalarStuffStart(builder *flatbuffers.Builder) {
|
||||
builder.StartObject(36)
|
||||
}
|
||||
func ScalarStuffAddJustI8(builder *flatbuffers.Builder, justI8 int8) {
|
||||
builder.PrependInt8Slot(0, justI8, 0)
|
||||
}
|
||||
func ScalarStuffAddMaybeI8(builder *flatbuffers.Builder, maybeI8 int8) {
|
||||
builder.PrependInt8(maybeI8)
|
||||
builder.Slot(1)
|
||||
}
|
||||
func ScalarStuffAddDefaultI8(builder *flatbuffers.Builder, defaultI8 int8) {
|
||||
builder.PrependInt8Slot(2, defaultI8, 42)
|
||||
}
|
||||
func ScalarStuffAddJustU8(builder *flatbuffers.Builder, justU8 byte) {
|
||||
builder.PrependByteSlot(3, justU8, 0)
|
||||
}
|
||||
func ScalarStuffAddMaybeU8(builder *flatbuffers.Builder, maybeU8 byte) {
|
||||
builder.PrependByte(maybeU8)
|
||||
builder.Slot(4)
|
||||
}
|
||||
func ScalarStuffAddDefaultU8(builder *flatbuffers.Builder, defaultU8 byte) {
|
||||
builder.PrependByteSlot(5, defaultU8, 42)
|
||||
}
|
||||
func ScalarStuffAddJustI16(builder *flatbuffers.Builder, justI16 int16) {
|
||||
builder.PrependInt16Slot(6, justI16, 0)
|
||||
}
|
||||
func ScalarStuffAddMaybeI16(builder *flatbuffers.Builder, maybeI16 int16) {
|
||||
builder.PrependInt16(maybeI16)
|
||||
builder.Slot(7)
|
||||
}
|
||||
func ScalarStuffAddDefaultI16(builder *flatbuffers.Builder, defaultI16 int16) {
|
||||
builder.PrependInt16Slot(8, defaultI16, 42)
|
||||
}
|
||||
func ScalarStuffAddJustU16(builder *flatbuffers.Builder, justU16 uint16) {
|
||||
builder.PrependUint16Slot(9, justU16, 0)
|
||||
}
|
||||
func ScalarStuffAddMaybeU16(builder *flatbuffers.Builder, maybeU16 uint16) {
|
||||
builder.PrependUint16(maybeU16)
|
||||
builder.Slot(10)
|
||||
}
|
||||
func ScalarStuffAddDefaultU16(builder *flatbuffers.Builder, defaultU16 uint16) {
|
||||
builder.PrependUint16Slot(11, defaultU16, 42)
|
||||
}
|
||||
func ScalarStuffAddJustI32(builder *flatbuffers.Builder, justI32 int32) {
|
||||
builder.PrependInt32Slot(12, justI32, 0)
|
||||
}
|
||||
func ScalarStuffAddMaybeI32(builder *flatbuffers.Builder, maybeI32 int32) {
|
||||
builder.PrependInt32(maybeI32)
|
||||
builder.Slot(13)
|
||||
}
|
||||
func ScalarStuffAddDefaultI32(builder *flatbuffers.Builder, defaultI32 int32) {
|
||||
builder.PrependInt32Slot(14, defaultI32, 42)
|
||||
}
|
||||
func ScalarStuffAddJustU32(builder *flatbuffers.Builder, justU32 uint32) {
|
||||
builder.PrependUint32Slot(15, justU32, 0)
|
||||
}
|
||||
func ScalarStuffAddMaybeU32(builder *flatbuffers.Builder, maybeU32 uint32) {
|
||||
builder.PrependUint32(maybeU32)
|
||||
builder.Slot(16)
|
||||
}
|
||||
func ScalarStuffAddDefaultU32(builder *flatbuffers.Builder, defaultU32 uint32) {
|
||||
builder.PrependUint32Slot(17, defaultU32, 42)
|
||||
}
|
||||
func ScalarStuffAddJustI64(builder *flatbuffers.Builder, justI64 int64) {
|
||||
builder.PrependInt64Slot(18, justI64, 0)
|
||||
}
|
||||
func ScalarStuffAddMaybeI64(builder *flatbuffers.Builder, maybeI64 int64) {
|
||||
builder.PrependInt64(maybeI64)
|
||||
builder.Slot(19)
|
||||
}
|
||||
func ScalarStuffAddDefaultI64(builder *flatbuffers.Builder, defaultI64 int64) {
|
||||
builder.PrependInt64Slot(20, defaultI64, 42)
|
||||
}
|
||||
func ScalarStuffAddJustU64(builder *flatbuffers.Builder, justU64 uint64) {
|
||||
builder.PrependUint64Slot(21, justU64, 0)
|
||||
}
|
||||
func ScalarStuffAddMaybeU64(builder *flatbuffers.Builder, maybeU64 uint64) {
|
||||
builder.PrependUint64(maybeU64)
|
||||
builder.Slot(22)
|
||||
}
|
||||
func ScalarStuffAddDefaultU64(builder *flatbuffers.Builder, defaultU64 uint64) {
|
||||
builder.PrependUint64Slot(23, defaultU64, 42)
|
||||
}
|
||||
func ScalarStuffAddJustF32(builder *flatbuffers.Builder, justF32 float32) {
|
||||
builder.PrependFloat32Slot(24, justF32, 0.0)
|
||||
}
|
||||
func ScalarStuffAddMaybeF32(builder *flatbuffers.Builder, maybeF32 float32) {
|
||||
builder.PrependFloat32(maybeF32)
|
||||
builder.Slot(25)
|
||||
}
|
||||
func ScalarStuffAddDefaultF32(builder *flatbuffers.Builder, defaultF32 float32) {
|
||||
builder.PrependFloat32Slot(26, defaultF32, 42.0)
|
||||
}
|
||||
func ScalarStuffAddJustF64(builder *flatbuffers.Builder, justF64 float64) {
|
||||
builder.PrependFloat64Slot(27, justF64, 0.0)
|
||||
}
|
||||
func ScalarStuffAddMaybeF64(builder *flatbuffers.Builder, maybeF64 float64) {
|
||||
builder.PrependFloat64(maybeF64)
|
||||
builder.Slot(28)
|
||||
}
|
||||
func ScalarStuffAddDefaultF64(builder *flatbuffers.Builder, defaultF64 float64) {
|
||||
builder.PrependFloat64Slot(29, defaultF64, 42.0)
|
||||
}
|
||||
func ScalarStuffAddJustBool(builder *flatbuffers.Builder, justBool bool) {
|
||||
builder.PrependBoolSlot(30, justBool, false)
|
||||
}
|
||||
func ScalarStuffAddMaybeBool(builder *flatbuffers.Builder, maybeBool bool) {
|
||||
builder.PrependBool(maybeBool)
|
||||
builder.Slot(31)
|
||||
}
|
||||
func ScalarStuffAddDefaultBool(builder *flatbuffers.Builder, defaultBool bool) {
|
||||
builder.PrependBoolSlot(32, defaultBool, true)
|
||||
}
|
||||
func ScalarStuffAddJustEnum(builder *flatbuffers.Builder, justEnum OptionalByte) {
|
||||
builder.PrependInt8Slot(33, int8(justEnum), 0)
|
||||
}
|
||||
func ScalarStuffAddMaybeEnum(builder *flatbuffers.Builder, maybeEnum OptionalByte) {
|
||||
builder.PrependInt8(int8(maybeEnum))
|
||||
builder.Slot(34)
|
||||
}
|
||||
func ScalarStuffAddDefaultEnum(builder *flatbuffers.Builder, defaultEnum OptionalByte) {
|
||||
builder.PrependInt8Slot(35, int8(defaultEnum), 1)
|
||||
}
|
||||
func ScalarStuffEnd(builder *flatbuffers.Builder) flatbuffers.UOffsetT {
|
||||
return builder.EndObject()
|
||||
}
|
||||
Reference in New Issue
Block a user