Commit 709e7208 authored by Wouter van Oortmerssen's avatar Wouter van Oortmerssen

Merge branch 'master' of https://github.com/google/flatbuffers

parents 3cd9181e 51d48bd9
...@@ -89,8 +89,10 @@ elseif(CMAKE_COMPILER_IS_GNUCXX) ...@@ -89,8 +89,10 @@ elseif(CMAKE_COMPILER_IS_GNUCXX)
elseif("${CMAKE_CXX_COMPILER_ID}" MATCHES "Clang") elseif("${CMAKE_CXX_COMPILER_ID}" MATCHES "Clang")
set(CMAKE_CXX_FLAGS set(CMAKE_CXX_FLAGS
"${CMAKE_CXX_FLAGS} -std=c++0x -stdlib=libc++ -Wall -pedantic -Werror -Wextra") "${CMAKE_CXX_FLAGS} -std=c++0x -stdlib=libc++ -Wall -pedantic -Werror -Wextra")
if(NOT "${CMAKE_SYSTEM_NAME}" MATCHES "FreeBSD")
set(CMAKE_EXE_LINKER_FLAGS set(CMAKE_EXE_LINKER_FLAGS
"${CMAKE_EXE_LINKER_FLAGS} -lc++abi") "${CMAKE_EXE_LINKER_FLAGS} -lc++abi")
endif()
endif() endif()
if(FLATBUFFERS_CODE_COVERAGE) if(FLATBUFFERS_CODE_COVERAGE)
......
...@@ -45,7 +45,7 @@ ...@@ -45,7 +45,7 @@
<tab type="user" url="@ref flatbuffers_internals" <tab type="user" url="@ref flatbuffers_internals"
title="FlatBuffers internals"/> title="FlatBuffers internals"/>
<tab type="user" url="@ref flatbuffers_grammar" <tab type="user" url="@ref flatbuffers_grammar"
title="Grammar of the schema langauge"/> title="Grammar of the schema language"/>
<tab type="usergroup" url="" title="API Reference"> <tab type="usergroup" url="" title="API Reference">
<tab type="modules" visible="yes" title="APIs" intro=""/> <tab type="modules" visible="yes" title="APIs" intro=""/>
<tab type="classes" visible="yes" title=""> <tab type="classes" visible="yes" title="">
......
...@@ -88,6 +88,16 @@ flatbuffers.Long = function(low, high) { ...@@ -88,6 +88,16 @@ flatbuffers.Long = function(low, high) {
this.high = high | 0; this.high = high | 0;
}; };
/**
* @param {number} high
* @param {number} low
* @returns {flatbuffers.Long}
*/
flatbuffers.Long.create = function(low, high) {
// Special-case zero to avoid GC overhead for default values
return low == 0 && high == 0 ? flatbuffers.Long.ZERO : new flatbuffers.Long(low, high);
};
/** /**
* @returns {number} * @returns {number}
*/ */
...@@ -751,6 +761,17 @@ flatbuffers.Builder.prototype.createString = function(s) { ...@@ -751,6 +761,17 @@ flatbuffers.Builder.prototype.createString = function(s) {
} }
return this.endVector(); return this.endVector();
}; };
/**
* A helper function to avoid generated code depending on this file directly.
*
* @param {number} low
* @param {number} high
* @returns {flatbuffers.Long}
*/
flatbuffers.Builder.prototype.createLong = function(low, high) {
return flatbuffers.Long.create(low, high);
};
//////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////
/// @cond FLATBUFFERS_INTERNAL /// @cond FLATBUFFERS_INTERNAL
/** /**
...@@ -1101,6 +1122,17 @@ flatbuffers.ByteBuffer.prototype.__has_identifier = function(ident) { ...@@ -1101,6 +1122,17 @@ flatbuffers.ByteBuffer.prototype.__has_identifier = function(ident) {
return true; return true;
}; };
/**
* A helper function to avoid generated code depending on this file directly.
*
* @param {number} low
* @param {number} high
* @returns {flatbuffers.Long}
*/
flatbuffers.ByteBuffer.prototype.createLong = function(low, high) {
return flatbuffers.Long.create(low, high);
};
// Exports for Node.js and RequireJS // Exports for Node.js and RequireJS
this.flatbuffers = flatbuffers; this.flatbuffers = flatbuffers;
......
...@@ -189,7 +189,7 @@ static std::string GenGetter(const Type &type, const std::string &arguments) { ...@@ -189,7 +189,7 @@ static std::string GenGetter(const Type &type, const std::string &arguments) {
} }
} }
static std::string GenDefaultValue(const Value &value) { static std::string GenDefaultValue(const Value &value, const std::string &context) {
if (value.type.enum_def) { if (value.type.enum_def) {
if (auto val = value.type.enum_def->ReverseLookup( if (auto val = value.type.enum_def->ReverseLookup(
atoi(value.constant.c_str()), false)) { atoi(value.constant.c_str()), false)) {
...@@ -205,13 +205,11 @@ static std::string GenDefaultValue(const Value &value) { ...@@ -205,13 +205,11 @@ static std::string GenDefaultValue(const Value &value) {
return "null"; return "null";
case BASE_TYPE_LONG: case BASE_TYPE_LONG:
case BASE_TYPE_ULONG: case BASE_TYPE_ULONG: {
if (value.constant != "0") {
int64_t constant = StringToInt(value.constant.c_str()); int64_t constant = StringToInt(value.constant.c_str());
return "new flatbuffers.Long(" + NumToString((int32_t)constant) + return context + ".createLong(" + NumToString((int32_t)constant) +
", " + NumToString((int32_t)(constant >> 32)) + ")"; ", " + NumToString((int32_t)(constant >> 32)) + ")";
} }
return "flatbuffers.Long.ZERO";
default: default:
return value.constant; return value.constant;
...@@ -417,7 +415,7 @@ static void GenStruct(const Parser &parser, StructDef &struct_def, ...@@ -417,7 +415,7 @@ static void GenStruct(const Parser &parser, StructDef &struct_def,
index += ", optionalEncoding"; index += ", optionalEncoding";
} }
code += offset_prefix + GenGetter(field.value.type, code += offset_prefix + GenGetter(field.value.type,
"(" + index + ")") + " : " + GenDefaultValue(field.value); "(" + index + ")") + " : " + GenDefaultValue(field.value, "this.bb");
code += ";\n"; code += ";\n";
} }
} }
...@@ -485,7 +483,7 @@ static void GenStruct(const Parser &parser, StructDef &struct_def, ...@@ -485,7 +483,7 @@ static void GenStruct(const Parser &parser, StructDef &struct_def,
code += "false"; code += "false";
} else if (field.value.type.element == BASE_TYPE_LONG || } else if (field.value.type.element == BASE_TYPE_LONG ||
field.value.type.element == BASE_TYPE_ULONG) { field.value.type.element == BASE_TYPE_ULONG) {
code += "flatbuffers.Long.ZERO"; code += "this.bb.createLong(0, 0)";
} else if (IsScalar(field.value.type.element)) { } else if (IsScalar(field.value.type.element)) {
code += "0"; code += "0";
} else { } else {
...@@ -511,12 +509,24 @@ static void GenStruct(const Parser &parser, StructDef &struct_def, ...@@ -511,12 +509,24 @@ static void GenStruct(const Parser &parser, StructDef &struct_def,
} }
code += "};\n\n"; code += "};\n\n";
// Emit a length helper // Emit vector helpers
if (field.value.type.base_type == BASE_TYPE_VECTOR) { if (field.value.type.base_type == BASE_TYPE_VECTOR) {
// Emit a length helper
GenDocComment(code_ptr, "@returns {number}"); GenDocComment(code_ptr, "@returns {number}");
code += object_name + ".prototype." + MakeCamel(field.name, false); code += object_name + ".prototype." + MakeCamel(field.name, false);
code += "Length = function() {\n" + offset_prefix; code += "Length = function() {\n" + offset_prefix;
code += "this.bb.__vector_len(this.bb_pos + offset) : 0;\n};\n\n"; code += "this.bb.__vector_len(this.bb_pos + offset) : 0;\n};\n\n";
// For scalar types, emit a typed array helper
auto vectorType = field.value.type.VectorType();
if (IsScalar(vectorType.base_type)) {
GenDocComment(code_ptr, "@returns {" + GenType(vectorType) + "Array}");
code += object_name + ".prototype." + MakeCamel(field.name, false);
code += "Array = function() {\n" + offset_prefix;
code += "new " + GenType(vectorType) + "Array(this.bb.bytes().buffer, "
"this.bb.__vector(this.bb_pos + offset), "
"this.bb.__vector_len(this.bb_pos + offset)) : null;\n};\n\n";
}
} }
} }
...@@ -570,7 +580,7 @@ static void GenStruct(const Parser &parser, StructDef &struct_def, ...@@ -570,7 +580,7 @@ static void GenStruct(const Parser &parser, StructDef &struct_def,
if (field.value.type.base_type == BASE_TYPE_BOOL) { if (field.value.type.base_type == BASE_TYPE_BOOL) {
code += "+"; code += "+";
} }
code += GenDefaultValue(field.value); code += GenDefaultValue(field.value, "builder");
} }
code += ");\n};\n\n"; code += ");\n};\n\n";
......
...@@ -1557,8 +1557,12 @@ CheckedError Parser::SkipJsonObject() { ...@@ -1557,8 +1557,12 @@ CheckedError Parser::SkipJsonObject() {
for (;;) { for (;;) {
if ((!opts.strict_json || !fieldn) && Is('}')) break; if ((!opts.strict_json || !fieldn) && Is('}')) break;
if (!Is(kTokenStringConstant)) if (!Is(kTokenStringConstant)) {
EXPECT(opts.strict_json ? kTokenStringConstant : kTokenIdentifier); EXPECT(opts.strict_json ? kTokenStringConstant : kTokenIdentifier);
}
else {
NEXT();
}
EXPECT(':'); EXPECT(':');
ECHECK(SkipAnyJsonValue()); ECHECK(SkipAnyJsonValue());
......
...@@ -67,6 +67,7 @@ function main() { ...@@ -67,6 +67,7 @@ function main() {
// Test it: // Test it:
testBuffer(fbb.dataBuffer()); testBuffer(fbb.dataBuffer());
test64bit();
testUnicode(); testUnicode();
fuzzTest1(); fuzzTest1();
...@@ -105,6 +106,13 @@ function testBuffer(bb) { ...@@ -105,6 +106,13 @@ function testBuffer(bb) {
} }
assert.strictEqual(invsum, 10); assert.strictEqual(invsum, 10);
var invsum2 = 0;
var invArr = monster.inventoryArray();
for (var i = 0; i < invArr.length; i++) {
invsum2 += invArr[i];
}
assert.strictEqual(invsum2, 10);
var test_0 = monster.test4(0); var test_0 = monster.test4(0);
var test_1 = monster.test4(1); var test_1 = monster.test4(1);
assert.strictEqual(monster.test4Length(), 2); assert.strictEqual(monster.test4Length(), 2);
...@@ -117,12 +125,58 @@ function testBuffer(bb) { ...@@ -117,12 +125,58 @@ function testBuffer(bb) {
assert.strictEqual(monster.testbool(), false); assert.strictEqual(monster.testbool(), false);
} }
function test64bit() {
var fbb = new flatbuffers.Builder();
var required = fbb.createString('required');
MyGame.Example.Stat.startStat(fbb);
var stat2 = MyGame.Example.Stat.endStat(fbb);
MyGame.Example.Monster.startMonster(fbb);
MyGame.Example.Monster.addName(fbb, required);
MyGame.Example.Monster.addTestempty(fbb, stat2);
var mon2 = MyGame.Example.Monster.endMonster(fbb);
MyGame.Example.Stat.startStat(fbb);
MyGame.Example.Stat.addVal(fbb, new flatbuffers.Long(0x12345678, 0x23456789));
var stat = MyGame.Example.Stat.endStat(fbb);
MyGame.Example.Monster.startMonster(fbb);
MyGame.Example.Monster.addName(fbb, required);
MyGame.Example.Monster.addEnemy(fbb, mon2);
MyGame.Example.Monster.addTestempty(fbb, stat);
var mon = MyGame.Example.Monster.endMonster(fbb);
MyGame.Example.Monster.finishMonsterBuffer(fbb, mon);
var bytes = fbb.asUint8Array();
////////////////////////////////////////////////////////////////
var bb = new flatbuffers.ByteBuffer(bytes);
assert.ok(MyGame.Example.Monster.bufferHasIdentifier(bb));
var mon = MyGame.Example.Monster.getRootAsMonster(bb);
var stat = mon.testempty();
assert.strictEqual(stat != null, true);
assert.strictEqual(stat.val() != null, true);
assert.strictEqual(stat.val().low, 0x12345678);
assert.strictEqual(stat.val().high, 0x23456789);
var mon2 = mon.enemy();
assert.strictEqual(mon2 != null, true);
stat = mon2.testempty();
assert.strictEqual(stat != null, true);
assert.strictEqual(stat.val() != null, true);
assert.strictEqual(stat.val().low, 0); // default value
assert.strictEqual(stat.val().high, 0);
}
function testUnicode() { function testUnicode() {
var correct = fs.readFileSync('unicode_test.mon'); var correct = fs.readFileSync('unicode_test.mon');
var json = JSON.parse(fs.readFileSync('unicode_test.json', 'utf8')); var json = JSON.parse(fs.readFileSync('unicode_test.json', 'utf8'));
// Test reading // Test reading
var bb = new flatbuffers.ByteBuffer(new Uint8Array(correct)); function testReadingUnicode(bb) {
var monster = MyGame.Example.Monster.getRootAsMonster(bb); var monster = MyGame.Example.Monster.getRootAsMonster(bb);
assert.strictEqual(monster.name(), json.name); assert.strictEqual(monster.name(), json.name);
assert.deepEqual(new Buffer(monster.name(flatbuffers.Encoding.UTF8_BYTES)), new Buffer(json.name)); assert.deepEqual(new Buffer(monster.name(flatbuffers.Encoding.UTF8_BYTES)), new Buffer(json.name));
...@@ -137,6 +191,8 @@ function testUnicode() { ...@@ -137,6 +191,8 @@ function testUnicode() {
assert.strictEqual(monster.testarrayofstring(i), string); assert.strictEqual(monster.testarrayofstring(i), string);
assert.deepEqual(new Buffer(monster.testarrayofstring(i, flatbuffers.Encoding.UTF8_BYTES)), new Buffer(string)); assert.deepEqual(new Buffer(monster.testarrayofstring(i, flatbuffers.Encoding.UTF8_BYTES)), new Buffer(string));
}); });
}
testReadingUnicode(new flatbuffers.ByteBuffer(new Uint8Array(correct)));
// Test writing // Test writing
var fbb = new flatbuffers.Builder(); var fbb = new flatbuffers.Builder();
...@@ -156,7 +212,7 @@ function testUnicode() { ...@@ -156,7 +212,7 @@ function testUnicode() {
MyGame.Example.Monster.addTestarrayoftables(fbb, testarrayoftablesOffset); MyGame.Example.Monster.addTestarrayoftables(fbb, testarrayoftablesOffset);
MyGame.Example.Monster.addName(fbb, name); MyGame.Example.Monster.addName(fbb, name);
MyGame.Example.Monster.finishMonsterBuffer(fbb, MyGame.Example.Monster.endMonster(fbb)); MyGame.Example.Monster.finishMonsterBuffer(fbb, MyGame.Example.Monster.endMonster(fbb));
assert.deepEqual(new Buffer(fbb.asUint8Array()), correct); testReadingUnicode(new flatbuffers.ByteBuffer(fbb.asUint8Array()));
} }
var __imul = Math.imul ? Math.imul : function(a, b) { var __imul = Math.imul ? Math.imul : function(a, b) {
......
...@@ -300,7 +300,7 @@ MyGame.Example.Stat.prototype.id = function(optionalEncoding) { ...@@ -300,7 +300,7 @@ MyGame.Example.Stat.prototype.id = function(optionalEncoding) {
*/ */
MyGame.Example.Stat.prototype.val = function() { MyGame.Example.Stat.prototype.val = function() {
var offset = this.bb.__offset(this.bb_pos, 6); var offset = this.bb.__offset(this.bb_pos, 6);
return offset ? this.bb.readInt64(this.bb_pos + offset) : flatbuffers.Long.ZERO; return offset ? this.bb.readInt64(this.bb_pos + offset) : this.bb.createLong(0, 0);
}; };
/** /**
...@@ -331,7 +331,7 @@ MyGame.Example.Stat.addId = function(builder, idOffset) { ...@@ -331,7 +331,7 @@ MyGame.Example.Stat.addId = function(builder, idOffset) {
* @param {flatbuffers.Long} val * @param {flatbuffers.Long} val
*/ */
MyGame.Example.Stat.addVal = function(builder, val) { MyGame.Example.Stat.addVal = function(builder, val) {
builder.addFieldInt64(1, val, flatbuffers.Long.ZERO); builder.addFieldInt64(1, val, builder.createLong(0, 0));
}; };
/** /**
...@@ -447,6 +447,14 @@ MyGame.Example.Monster.prototype.inventoryLength = function() { ...@@ -447,6 +447,14 @@ MyGame.Example.Monster.prototype.inventoryLength = function() {
return offset ? this.bb.__vector_len(this.bb_pos + offset) : 0; return offset ? this.bb.__vector_len(this.bb_pos + offset) : 0;
}; };
/**
* @returns {Uint8Array}
*/
MyGame.Example.Monster.prototype.inventoryArray = function() {
var offset = this.bb.__offset(this.bb_pos, 14);
return offset ? new Uint8Array(this.bb.bytes().buffer, this.bb.__vector(this.bb_pos + offset), this.bb.__vector_len(this.bb_pos + offset)) : null;
};
/** /**
* @returns {MyGame.Example.Color} * @returns {MyGame.Example.Color}
*/ */
...@@ -555,6 +563,14 @@ MyGame.Example.Monster.prototype.testnestedflatbufferLength = function() { ...@@ -555,6 +563,14 @@ MyGame.Example.Monster.prototype.testnestedflatbufferLength = function() {
return offset ? this.bb.__vector_len(this.bb_pos + offset) : 0; return offset ? this.bb.__vector_len(this.bb_pos + offset) : 0;
}; };
/**
* @returns {Uint8Array}
*/
MyGame.Example.Monster.prototype.testnestedflatbufferArray = function() {
var offset = this.bb.__offset(this.bb_pos, 30);
return offset ? new Uint8Array(this.bb.bytes().buffer, this.bb.__vector(this.bb_pos + offset), this.bb.__vector_len(this.bb_pos + offset)) : null;
};
/** /**
* @param {MyGame.Example.Stat=} obj * @param {MyGame.Example.Stat=} obj
* @returns {MyGame.Example.Stat} * @returns {MyGame.Example.Stat}
...@@ -593,7 +609,7 @@ MyGame.Example.Monster.prototype.testhashu32Fnv1 = function() { ...@@ -593,7 +609,7 @@ MyGame.Example.Monster.prototype.testhashu32Fnv1 = function() {
*/ */
MyGame.Example.Monster.prototype.testhashs64Fnv1 = function() { MyGame.Example.Monster.prototype.testhashs64Fnv1 = function() {
var offset = this.bb.__offset(this.bb_pos, 40); var offset = this.bb.__offset(this.bb_pos, 40);
return offset ? this.bb.readInt64(this.bb_pos + offset) : flatbuffers.Long.ZERO; return offset ? this.bb.readInt64(this.bb_pos + offset) : this.bb.createLong(0, 0);
}; };
/** /**
...@@ -601,7 +617,7 @@ MyGame.Example.Monster.prototype.testhashs64Fnv1 = function() { ...@@ -601,7 +617,7 @@ MyGame.Example.Monster.prototype.testhashs64Fnv1 = function() {
*/ */
MyGame.Example.Monster.prototype.testhashu64Fnv1 = function() { MyGame.Example.Monster.prototype.testhashu64Fnv1 = function() {
var offset = this.bb.__offset(this.bb_pos, 42); var offset = this.bb.__offset(this.bb_pos, 42);
return offset ? this.bb.readUint64(this.bb_pos + offset) : flatbuffers.Long.ZERO; return offset ? this.bb.readUint64(this.bb_pos + offset) : this.bb.createLong(0, 0);
}; };
/** /**
...@@ -625,7 +641,7 @@ MyGame.Example.Monster.prototype.testhashu32Fnv1a = function() { ...@@ -625,7 +641,7 @@ MyGame.Example.Monster.prototype.testhashu32Fnv1a = function() {
*/ */
MyGame.Example.Monster.prototype.testhashs64Fnv1a = function() { MyGame.Example.Monster.prototype.testhashs64Fnv1a = function() {
var offset = this.bb.__offset(this.bb_pos, 48); var offset = this.bb.__offset(this.bb_pos, 48);
return offset ? this.bb.readInt64(this.bb_pos + offset) : flatbuffers.Long.ZERO; return offset ? this.bb.readInt64(this.bb_pos + offset) : this.bb.createLong(0, 0);
}; };
/** /**
...@@ -633,7 +649,7 @@ MyGame.Example.Monster.prototype.testhashs64Fnv1a = function() { ...@@ -633,7 +649,7 @@ MyGame.Example.Monster.prototype.testhashs64Fnv1a = function() {
*/ */
MyGame.Example.Monster.prototype.testhashu64Fnv1a = function() { MyGame.Example.Monster.prototype.testhashu64Fnv1a = function() {
var offset = this.bb.__offset(this.bb_pos, 50); var offset = this.bb.__offset(this.bb_pos, 50);
return offset ? this.bb.readUint64(this.bb_pos + offset) : flatbuffers.Long.ZERO; return offset ? this.bb.readUint64(this.bb_pos + offset) : this.bb.createLong(0, 0);
}; };
/** /**
...@@ -653,6 +669,14 @@ MyGame.Example.Monster.prototype.testarrayofboolsLength = function() { ...@@ -653,6 +669,14 @@ MyGame.Example.Monster.prototype.testarrayofboolsLength = function() {
return offset ? this.bb.__vector_len(this.bb_pos + offset) : 0; return offset ? this.bb.__vector_len(this.bb_pos + offset) : 0;
}; };
/**
* @returns {Int8Array}
*/
MyGame.Example.Monster.prototype.testarrayofboolsArray = function() {
var offset = this.bb.__offset(this.bb_pos, 52);
return offset ? new Int8Array(this.bb.bytes().buffer, this.bb.__vector(this.bb_pos + offset), this.bb.__vector_len(this.bb_pos + offset)) : null;
};
/** /**
* @param {flatbuffers.Builder} builder * @param {flatbuffers.Builder} builder
*/ */
...@@ -893,7 +917,7 @@ MyGame.Example.Monster.addTesthashu32Fnv1 = function(builder, testhashu32Fnv1) { ...@@ -893,7 +917,7 @@ MyGame.Example.Monster.addTesthashu32Fnv1 = function(builder, testhashu32Fnv1) {
* @param {flatbuffers.Long} testhashs64Fnv1 * @param {flatbuffers.Long} testhashs64Fnv1
*/ */
MyGame.Example.Monster.addTesthashs64Fnv1 = function(builder, testhashs64Fnv1) { MyGame.Example.Monster.addTesthashs64Fnv1 = function(builder, testhashs64Fnv1) {
builder.addFieldInt64(18, testhashs64Fnv1, flatbuffers.Long.ZERO); builder.addFieldInt64(18, testhashs64Fnv1, builder.createLong(0, 0));
}; };
/** /**
...@@ -901,7 +925,7 @@ MyGame.Example.Monster.addTesthashs64Fnv1 = function(builder, testhashs64Fnv1) { ...@@ -901,7 +925,7 @@ MyGame.Example.Monster.addTesthashs64Fnv1 = function(builder, testhashs64Fnv1) {
* @param {flatbuffers.Long} testhashu64Fnv1 * @param {flatbuffers.Long} testhashu64Fnv1
*/ */
MyGame.Example.Monster.addTesthashu64Fnv1 = function(builder, testhashu64Fnv1) { MyGame.Example.Monster.addTesthashu64Fnv1 = function(builder, testhashu64Fnv1) {
builder.addFieldInt64(19, testhashu64Fnv1, flatbuffers.Long.ZERO); builder.addFieldInt64(19, testhashu64Fnv1, builder.createLong(0, 0));
}; };
/** /**
...@@ -925,7 +949,7 @@ MyGame.Example.Monster.addTesthashu32Fnv1a = function(builder, testhashu32Fnv1a) ...@@ -925,7 +949,7 @@ MyGame.Example.Monster.addTesthashu32Fnv1a = function(builder, testhashu32Fnv1a)
* @param {flatbuffers.Long} testhashs64Fnv1a * @param {flatbuffers.Long} testhashs64Fnv1a
*/ */
MyGame.Example.Monster.addTesthashs64Fnv1a = function(builder, testhashs64Fnv1a) { MyGame.Example.Monster.addTesthashs64Fnv1a = function(builder, testhashs64Fnv1a) {
builder.addFieldInt64(22, testhashs64Fnv1a, flatbuffers.Long.ZERO); builder.addFieldInt64(22, testhashs64Fnv1a, builder.createLong(0, 0));
}; };
/** /**
...@@ -933,7 +957,7 @@ MyGame.Example.Monster.addTesthashs64Fnv1a = function(builder, testhashs64Fnv1a) ...@@ -933,7 +957,7 @@ MyGame.Example.Monster.addTesthashs64Fnv1a = function(builder, testhashs64Fnv1a)
* @param {flatbuffers.Long} testhashu64Fnv1a * @param {flatbuffers.Long} testhashu64Fnv1a
*/ */
MyGame.Example.Monster.addTesthashu64Fnv1a = function(builder, testhashu64Fnv1a) { MyGame.Example.Monster.addTesthashu64Fnv1a = function(builder, testhashu64Fnv1a) {
builder.addFieldInt64(23, testhashu64Fnv1a, flatbuffers.Long.ZERO); builder.addFieldInt64(23, testhashu64Fnv1a, builder.createLong(0, 0));
}; };
/** /**
......
...@@ -836,10 +836,13 @@ void UnknownFieldsTest() { ...@@ -836,10 +836,13 @@ void UnknownFieldsTest() {
TEST_EQ(parser.Parse("table T { str:string; i:int;}" TEST_EQ(parser.Parse("table T { str:string; i:int;}"
"root_type T;" "root_type T;"
"{ str:\"test\"," "{ str:\"test\","
"unknown_string:\"test\","
"\"unknown_string\":\"test\","
"unknown_int:10," "unknown_int:10,"
"unknown_float:1.0," "unknown_float:1.0,"
"unknown_array: [ 1, 2, 3, 4]," "unknown_array: [ 1, 2, 3, 4],"
"unknown_object: { i: 10 }," "unknown_object: { i: 10 },"
"\"unknown_object\": { \"i\": 10 },"
"i:10}"), true); "i:10}"), true);
std::string jsongen; std::string jsongen;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment