mirror of
https://github.com/google/flatbuffers.git
synced 2026-07-01 04:01:37 +00:00
Merge branch 'master' of https://github.com/google/flatbuffers
This commit is contained in:
@@ -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")
|
||||||
set(CMAKE_EXE_LINKER_FLAGS
|
if(NOT "${CMAKE_SYSTEM_NAME}" MATCHES "FreeBSD")
|
||||||
"${CMAKE_EXE_LINKER_FLAGS} -lc++abi")
|
set(CMAKE_EXE_LINKER_FLAGS
|
||||||
|
"${CMAKE_EXE_LINKER_FLAGS} -lc++abi")
|
||||||
|
endif()
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
if(FLATBUFFERS_CODE_COVERAGE)
|
if(FLATBUFFERS_CODE_COVERAGE)
|
||||||
|
|||||||
@@ -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) {
|
|||||||
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) {
|
|||||||
}
|
}
|
||||||
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) {
|
|||||||
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) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
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) {
|
|||||||
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 context + ".createLong(" + NumToString((int32_t)constant) +
|
||||||
return "new flatbuffers.Long(" + 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,
|
|||||||
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,
|
|||||||
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,
|
|||||||
}
|
}
|
||||||
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,
|
|||||||
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() {
|
|||||||
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() {
|
|||||||
// Test it:
|
// Test it:
|
||||||
testBuffer(fbb.dataBuffer());
|
testBuffer(fbb.dataBuffer());
|
||||||
|
|
||||||
|
test64bit();
|
||||||
testUnicode();
|
testUnicode();
|
||||||
fuzzTest1();
|
fuzzTest1();
|
||||||
|
|
||||||
@@ -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,26 +125,74 @@ 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));
|
||||||
assert.strictEqual(monster.testarrayoftablesLength(), json.testarrayoftables.length);
|
assert.strictEqual(monster.testarrayoftablesLength(), json.testarrayoftables.length);
|
||||||
json.testarrayoftables.forEach(function(table, i) {
|
json.testarrayoftables.forEach(function(table, i) {
|
||||||
var value = monster.testarrayoftables(i);
|
var value = monster.testarrayoftables(i);
|
||||||
assert.strictEqual(value.name(), table.name);
|
assert.strictEqual(value.name(), table.name);
|
||||||
assert.deepEqual(new Buffer(value.name(flatbuffers.Encoding.UTF8_BYTES)), new Buffer(table.name));
|
assert.deepEqual(new Buffer(value.name(flatbuffers.Encoding.UTF8_BYTES)), new Buffer(table.name));
|
||||||
});
|
});
|
||||||
assert.strictEqual(monster.testarrayofstringLength(), json.testarrayofstring.length);
|
assert.strictEqual(monster.testarrayofstringLength(), json.testarrayofstring.length);
|
||||||
json.testarrayofstring.forEach(function(string, i) {
|
json.testarrayofstring.forEach(function(string, i) {
|
||||||
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() {
|
|||||||
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) {
|
|||||||
*/
|
*/
|
||||||
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) {
|
|||||||
* @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() {
|
|||||||
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() {
|
|||||||
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() {
|
|||||||
*/
|
*/
|
||||||
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() {
|
|||||||
*/
|
*/
|
||||||
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() {
|
|||||||
*/
|
*/
|
||||||
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() {
|
|||||||
*/
|
*/
|
||||||
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() {
|
|||||||
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) {
|
|||||||
* @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) {
|
|||||||
* @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)
|
|||||||
* @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)
|
|||||||
* @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() {
|
|||||||
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;
|
||||||
|
|||||||
Reference in New Issue
Block a user