From fd542c71e35774f640073cb6fb3fa939d2f19f87 Mon Sep 17 00:00:00 2001 From: Wouter van Oortmerssen Date: Wed, 20 Apr 2016 12:05:21 -0700 Subject: [PATCH] Fixed float suffix not being added on implicit float defaults. Change-Id: I8dcbb5e93836356511d411ef86452babd3dd3c0b Tested: on Linux. --- src/idl_parser.cpp | 8 ++++---- tests/MyGame/Example/Monster.cs | 5 ++++- tests/MyGame/Example/Monster.go | 11 ++++++++++- tests/MyGame/Example/Monster.java | 5 ++++- tests/MyGame/Example/Monster.php | 26 +++++++++++++++++++++++--- tests/MyGame/Example/Monster.py | 10 +++++++++- tests/monster_test.bfbs | Bin 2968 -> 3008 bytes tests/monster_test.fbs | 1 + tests/monster_test_generated.h | 13 ++++++++++--- tests/monster_test_generated.js | 18 +++++++++++++++++- tests/monsterdata_test.mon | Bin 384 -> 384 bytes 11 files changed, 82 insertions(+), 15 deletions(-) diff --git a/src/idl_parser.cpp b/src/idl_parser.cpp index 28fd6a377..4c7820933 100644 --- a/src/idl_parser.cpp +++ b/src/idl_parser.cpp @@ -543,10 +543,10 @@ CheckedError Parser::ParseField(StructDef &struct_def) { if (!IsScalar(type.base_type)) return Error("default values currently only supported for scalars"); ECHECK(ParseSingleValue(field->value)); - if (IsFloat(field->value.type.base_type)) { - if (!strpbrk(field->value.constant.c_str(), ".eE")) - field->value.constant += ".0"; - } + } + if (IsFloat(field->value.type.base_type)) { + if (!strpbrk(field->value.constant.c_str(), ".eE")) + field->value.constant += ".0"; } if (type.enum_def && diff --git a/tests/MyGame/Example/Monster.cs b/tests/MyGame/Example/Monster.cs index cd39d9515..abe95ec84 100644 --- a/tests/MyGame/Example/Monster.cs +++ b/tests/MyGame/Example/Monster.cs @@ -76,8 +76,10 @@ public sealed class Monster : Table { public bool MutateTestf(float testf) { int o = __offset(54); if (o != 0) { bb.PutFloat(o + bb_pos, testf); return true; } else { return false; } } public float Testf2 { get { int o = __offset(56); return o != 0 ? bb.GetFloat(o + bb_pos) : (float)3.0f; } } public bool MutateTestf2(float testf2) { int o = __offset(56); if (o != 0) { bb.PutFloat(o + bb_pos, testf2); return true; } else { return false; } } + public float Testf3 { get { int o = __offset(58); return o != 0 ? bb.GetFloat(o + bb_pos) : (float)0.0f; } } + public bool MutateTestf3(float testf3) { int o = __offset(58); if (o != 0) { bb.PutFloat(o + bb_pos, testf3); return true; } else { return false; } } - public static void StartMonster(FlatBufferBuilder builder) { builder.StartObject(27); } + public static void StartMonster(FlatBufferBuilder builder) { builder.StartObject(28); } public static void AddPos(FlatBufferBuilder builder, Offset posOffset) { builder.AddStruct(0, posOffset.Value, 0); } public static void AddMana(FlatBufferBuilder builder, short mana) { builder.AddShort(1, mana, 150); } public static void AddHp(FlatBufferBuilder builder, short hp) { builder.AddShort(2, hp, 100); } @@ -115,6 +117,7 @@ public sealed class Monster : Table { public static void StartTestarrayofboolsVector(FlatBufferBuilder builder, int numElems) { builder.StartVector(1, numElems, 1); } public static void AddTestf(FlatBufferBuilder builder, float testf) { builder.AddFloat(25, testf, 3.14159f); } public static void AddTestf2(FlatBufferBuilder builder, float testf2) { builder.AddFloat(26, testf2, 3.0f); } + public static void AddTestf3(FlatBufferBuilder builder, float testf3) { builder.AddFloat(27, testf3, 0.0f); } public static Offset EndMonster(FlatBufferBuilder builder) { int o = builder.EndObject(); builder.Required(o, 10); // name diff --git a/tests/MyGame/Example/Monster.go b/tests/MyGame/Example/Monster.go index 4de8fdc48..5aa4a73e9 100644 --- a/tests/MyGame/Example/Monster.go +++ b/tests/MyGame/Example/Monster.go @@ -329,7 +329,15 @@ func (rcv *Monster) Testf2() float32 { return 3.0 } -func MonsterStart(builder *flatbuffers.Builder) { builder.StartObject(27) } +func (rcv *Monster) Testf3() float32 { + o := flatbuffers.UOffsetT(rcv._tab.Offset(58)) + if o != 0 { + return rcv._tab.GetFloat32(o + rcv._tab.Pos) + } + return 0.0 +} + +func MonsterStart(builder *flatbuffers.Builder) { builder.StartObject(28) } func MonsterAddPos(builder *flatbuffers.Builder, pos flatbuffers.UOffsetT) { builder.PrependStructSlot(0, flatbuffers.UOffsetT(pos), 0) } func MonsterAddMana(builder *flatbuffers.Builder, mana int16) { builder.PrependInt16Slot(1, mana, 150) } func MonsterAddHp(builder *flatbuffers.Builder, hp int16) { builder.PrependInt16Slot(2, hp, 100) } @@ -368,4 +376,5 @@ func MonsterStartTestarrayofboolsVector(builder *flatbuffers.Builder, numElems i } func MonsterAddTestf(builder *flatbuffers.Builder, testf float32) { builder.PrependFloat32Slot(25, testf, 3.14159) } func MonsterAddTestf2(builder *flatbuffers.Builder, testf2 float32) { builder.PrependFloat32Slot(26, testf2, 3.0) } +func MonsterAddTestf3(builder *flatbuffers.Builder, testf3 float32) { builder.PrependFloat32Slot(27, testf3, 0.0) } func MonsterEnd(builder *flatbuffers.Builder) flatbuffers.UOffsetT { return builder.EndObject() } diff --git a/tests/MyGame/Example/Monster.java b/tests/MyGame/Example/Monster.java index 487eba6eb..69c975436 100644 --- a/tests/MyGame/Example/Monster.java +++ b/tests/MyGame/Example/Monster.java @@ -82,8 +82,10 @@ public final class Monster extends Table { public boolean mutateTestf(float testf) { int o = __offset(54); if (o != 0) { bb.putFloat(o + bb_pos, testf); return true; } else { return false; } } public float testf2() { int o = __offset(56); return o != 0 ? bb.getFloat(o + bb_pos) : 3.0f; } public boolean mutateTestf2(float testf2) { int o = __offset(56); if (o != 0) { bb.putFloat(o + bb_pos, testf2); return true; } else { return false; } } + public float testf3() { int o = __offset(58); return o != 0 ? bb.getFloat(o + bb_pos) : 0.0f; } + public boolean mutateTestf3(float testf3) { int o = __offset(58); if (o != 0) { bb.putFloat(o + bb_pos, testf3); return true; } else { return false; } } - public static void startMonster(FlatBufferBuilder builder) { builder.startObject(27); } + public static void startMonster(FlatBufferBuilder builder) { builder.startObject(28); } public static void addPos(FlatBufferBuilder builder, int posOffset) { builder.addStruct(0, posOffset, 0); } public static void addMana(FlatBufferBuilder builder, short mana) { builder.addShort(1, mana, 150); } public static void addHp(FlatBufferBuilder builder, short hp) { builder.addShort(2, hp, 100); } @@ -121,6 +123,7 @@ public final class Monster extends Table { public static void startTestarrayofboolsVector(FlatBufferBuilder builder, int numElems) { builder.startVector(1, numElems, 1); } public static void addTestf(FlatBufferBuilder builder, float testf) { builder.addFloat(25, testf, 3.14159f); } public static void addTestf2(FlatBufferBuilder builder, float testf2) { builder.addFloat(26, testf2, 3.0f); } + public static void addTestf3(FlatBufferBuilder builder, float testf3) { builder.addFloat(27, testf3, 0.0f); } public static int endMonster(FlatBufferBuilder builder) { int o = builder.endObject(); builder.required(o, 10); // name diff --git a/tests/MyGame/Example/Monster.php b/tests/MyGame/Example/Monster.php index e02413879..879b76247 100644 --- a/tests/MyGame/Example/Monster.php +++ b/tests/MyGame/Example/Monster.php @@ -351,22 +351,31 @@ class Monster extends Table return $o != 0 ? $this->bb->getFloat($o + $this->bb_pos) : 3.0; } + /** + * @return float + */ + public function getTestf3() + { + $o = $this->__offset(58); + return $o != 0 ? $this->bb->getFloat($o + $this->bb_pos) : 0.0; + } + /** * @param FlatBufferBuilder $builder * @return void */ public static function startMonster(FlatBufferBuilder $builder) { - $builder->StartObject(27); + $builder->StartObject(28); } /** * @param FlatBufferBuilder $builder * @return Monster */ - public static function createMonster(FlatBufferBuilder $builder, $pos, $mana, $hp, $name, $inventory, $color, $test_type, $test, $test4, $testarrayofstring, $testarrayoftables, $enemy, $testnestedflatbuffer, $testempty, $testbool, $testhashs32_fnv1, $testhashu32_fnv1, $testhashs64_fnv1, $testhashu64_fnv1, $testhashs32_fnv1a, $testhashu32_fnv1a, $testhashs64_fnv1a, $testhashu64_fnv1a, $testarrayofbools, $testf, $testf2) + public static function createMonster(FlatBufferBuilder $builder, $pos, $mana, $hp, $name, $inventory, $color, $test_type, $test, $test4, $testarrayofstring, $testarrayoftables, $enemy, $testnestedflatbuffer, $testempty, $testbool, $testhashs32_fnv1, $testhashu32_fnv1, $testhashs64_fnv1, $testhashu64_fnv1, $testhashs32_fnv1a, $testhashu32_fnv1a, $testhashs64_fnv1a, $testhashu64_fnv1a, $testarrayofbools, $testf, $testf2, $testf3) { - $builder->startObject(27); + $builder->startObject(28); self::addPos($builder, $pos); self::addMana($builder, $mana); self::addHp($builder, $hp); @@ -393,6 +402,7 @@ class Monster extends Table self::addTestarrayofbools($builder, $testarrayofbools); self::addTestf($builder, $testf); self::addTestf2($builder, $testf2); + self::addTestf3($builder, $testf3); $o = $builder->endObject(); $builder->required($o, 10); // name return $o; @@ -797,6 +807,16 @@ class Monster extends Table $builder->addFloatX(26, $testf2, 3.0); } + /** + * @param FlatBufferBuilder $builder + * @param float + * @return void + */ + public static function addTestf3(FlatBufferBuilder $builder, $testf3) + { + $builder->addFloatX(27, $testf3, 0.0); + } + /** * @param FlatBufferBuilder $builder * @return int table offset diff --git a/tests/MyGame/Example/Monster.py b/tests/MyGame/Example/Monster.py index 2e7c000ed..42b79939b 100644 --- a/tests/MyGame/Example/Monster.py +++ b/tests/MyGame/Example/Monster.py @@ -276,7 +276,14 @@ class Monster(object): return self._tab.Get(flatbuffers.number_types.Float32Flags, o + self._tab.Pos) return 3.0 -def MonsterStart(builder): builder.StartObject(27) + # Monster + def Testf3(self): + o = flatbuffers.number_types.UOffsetTFlags.py_type(self._tab.Offset(58)) + if o != 0: + return self._tab.Get(flatbuffers.number_types.Float32Flags, o + self._tab.Pos) + return 0.0 + +def MonsterStart(builder): builder.StartObject(28) def MonsterAddPos(builder, pos): builder.PrependStructSlot(0, flatbuffers.number_types.UOffsetTFlags.py_type(pos), 0) def MonsterAddMana(builder, mana): builder.PrependInt16Slot(1, mana, 150) def MonsterAddHp(builder, hp): builder.PrependInt16Slot(2, hp, 100) @@ -309,4 +316,5 @@ def MonsterAddTestarrayofbools(builder, testarrayofbools): builder.PrependUOffse def MonsterStartTestarrayofboolsVector(builder, numElems): return builder.StartVector(1, numElems, 1) def MonsterAddTestf(builder, testf): builder.PrependFloat32Slot(25, testf, 3.14159) def MonsterAddTestf2(builder, testf2): builder.PrependFloat32Slot(26, testf2, 3.0) +def MonsterAddTestf3(builder, testf3): builder.PrependFloat32Slot(27, testf3, 0.0) def MonsterEnd(builder): return builder.EndObject() diff --git a/tests/monster_test.bfbs b/tests/monster_test.bfbs index 16a5bff54486d2a74df2898b54792caf71a1676a..e16b2bd13ce4dce50406e3a089d132f4ebf28688 100644 GIT binary patch delta 203 zcmWm8uMYun9LDkIdw%RjVY}^S=MT^cHxpFBCS33jkZlCPun|PJ3ob||2-g%*5EM-i zHANSB3$H!j=lPUx?4I4VUkq$1$w>~ndFdUt7G@RRHf9&~%*)tO+wx{*NkLj_rlc!5 z&q!nPMAq>9gK0|zhg`f@x149cJ1H&6m1_lFe28JUOJ)0R5CZ3(ncxrMg<8wxX$-Yd|_0kLs z3_2_f3=+%?3=4pC1SKNIe6?W`5?4900$~A9Mf! diff --git a/tests/monster_test.fbs b/tests/monster_test.fbs index 014f8fc72..f302ce444 100755 --- a/tests/monster_test.fbs +++ b/tests/monster_test.fbs @@ -61,6 +61,7 @@ table Monster { testhashu64_fnv1a:ulong (id:23, hash:"fnv1a_64"); testf:float = 3.14159 (id:25); testf2:float = 3 (id:26); + testf3:float (id:27); } rpc_service MonsterStorage { diff --git a/tests/monster_test_generated.h b/tests/monster_test_generated.h index 9fe72f0cd..594c6f7c8 100644 --- a/tests/monster_test_generated.h +++ b/tests/monster_test_generated.h @@ -205,7 +205,8 @@ struct Monster FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table { VT_TESTHASHU64_FNV1A = 50, VT_TESTARRAYOFBOOLS = 52, VT_TESTF = 54, - VT_TESTF2 = 56 + VT_TESTF2 = 56, + VT_TESTF3 = 58 }; const Vec3 *pos() const { return GetStruct(VT_POS); } Vec3 *mutable_pos() { return GetStruct(VT_POS); } @@ -264,6 +265,8 @@ struct Monster FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table { bool mutate_testf(float _testf) { return SetField(VT_TESTF, _testf); } float testf2() const { return GetField(VT_TESTF2, 3.0f); } bool mutate_testf2(float _testf2) { return SetField(VT_TESTF2, _testf2); } + float testf3() const { return GetField(VT_TESTF3, 0.0f); } + bool mutate_testf3(float _testf3) { return SetField(VT_TESTF3, _testf3); } bool Verify(flatbuffers::Verifier &verifier) const { return VerifyTableStart(verifier) && VerifyField(verifier, VT_POS) && @@ -304,6 +307,7 @@ struct Monster FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table { verifier.Verify(testarrayofbools()) && VerifyField(verifier, VT_TESTF) && VerifyField(verifier, VT_TESTF2) && + VerifyField(verifier, VT_TESTF3) && verifier.EndTable(); } }; @@ -337,10 +341,11 @@ struct MonsterBuilder { void add_testarrayofbools(flatbuffers::Offset> testarrayofbools) { fbb_.AddOffset(Monster::VT_TESTARRAYOFBOOLS, testarrayofbools); } void add_testf(float testf) { fbb_.AddElement(Monster::VT_TESTF, testf, 3.14159f); } void add_testf2(float testf2) { fbb_.AddElement(Monster::VT_TESTF2, testf2, 3.0f); } + void add_testf3(float testf3) { fbb_.AddElement(Monster::VT_TESTF3, testf3, 0.0f); } MonsterBuilder(flatbuffers::FlatBufferBuilder &_fbb) : fbb_(_fbb) { start_ = fbb_.StartTable(); } MonsterBuilder &operator=(const MonsterBuilder &); flatbuffers::Offset Finish() { - auto o = flatbuffers::Offset(fbb_.EndTable(start_, 27)); + auto o = flatbuffers::Offset(fbb_.EndTable(start_, 28)); fbb_.Required(o, Monster::VT_NAME); // name return o; } @@ -372,12 +377,14 @@ inline flatbuffers::Offset CreateMonster(flatbuffers::FlatBufferBuilder uint64_t testhashu64_fnv1a = 0, flatbuffers::Offset> testarrayofbools = 0, float testf = 3.14159f, - float testf2 = 3.0f) { + float testf2 = 3.0f, + float testf3 = 0.0f) { MonsterBuilder builder_(_fbb); builder_.add_testhashu64_fnv1a(testhashu64_fnv1a); builder_.add_testhashs64_fnv1a(testhashs64_fnv1a); builder_.add_testhashu64_fnv1(testhashu64_fnv1); builder_.add_testhashs64_fnv1(testhashs64_fnv1); + builder_.add_testf3(testf3); builder_.add_testf2(testf2); builder_.add_testf(testf); builder_.add_testarrayofbools(testarrayofbools); diff --git a/tests/monster_test_generated.js b/tests/monster_test_generated.js index eed24b5ea..8316fbc69 100644 --- a/tests/monster_test_generated.js +++ b/tests/monster_test_generated.js @@ -693,11 +693,19 @@ MyGame.Example.Monster.prototype.testf2 = function() { return offset ? this.bb.readFloat32(this.bb_pos + offset) : 3.0; }; +/** + * @returns {number} + */ +MyGame.Example.Monster.prototype.testf3 = function() { + var offset = this.bb.__offset(this.bb_pos, 58); + return offset ? this.bb.readFloat32(this.bb_pos + offset) : 0.0; +}; + /** * @param {flatbuffers.Builder} builder */ MyGame.Example.Monster.startMonster = function(builder) { - builder.startObject(27); + builder.startObject(28); }; /** @@ -1021,6 +1029,14 @@ MyGame.Example.Monster.addTestf2 = function(builder, testf2) { builder.addFieldFloat32(26, testf2, 3.0); }; +/** + * @param {flatbuffers.Builder} builder + * @param {number} testf3 + */ +MyGame.Example.Monster.addTestf3 = function(builder, testf3) { + builder.addFieldFloat32(27, testf3, 0.0); +}; + /** * @param {flatbuffers.Builder} builder * @returns {flatbuffers.Offset} diff --git a/tests/monsterdata_test.mon b/tests/monsterdata_test.mon index 4c032bcfeae89ef809a3cd19c47d8fd381b1481d..7a7fbf707f84e8b7ef957001da0ce8b3d9a89324 100644 GIT binary patch delta 47 wcmZo*ZeZs1U|?YI_4f+~QVcc|`7N12lxI8Ro{1No8EqzuGlE4X2Qumd0Oi&SBme*a delta 57 zcmZo*ZeZs3U|?YI_4f+~Qb1rek=K&ZYNBU5**{2A0W+jQWgLlLHy` E0WpCJE&u=k