Commit 30bae01e authored by Kamil Rojewski's avatar Kamil Rojewski Committed by Wouter van Oortmerssen

Convenient createX methods for TS (#5044)

parent 9068b0ee
...@@ -2,7 +2,10 @@ ...@@ -2,7 +2,10 @@
"name": "flatbuffers", "name": "flatbuffers",
"version": "1.10.2", "version": "1.10.2",
"description": "Memory Efficient Serialization Library", "description": "Memory Efficient Serialization Library",
"files": ["js/flatbuffers.js", "js/flatbuffers.mjs"], "files": [
"js/flatbuffers.js",
"js/flatbuffers.mjs"
],
"main": "js/flatbuffers", "main": "js/flatbuffers",
"module": "js/flatbuffers.mjs", "module": "js/flatbuffers.mjs",
"directories": { "directories": {
...@@ -26,5 +29,6 @@ ...@@ -26,5 +29,6 @@
"bugs": { "bugs": {
"url": "https://github.com/google/flatbuffers/issues" "url": "https://github.com/google/flatbuffers/issues"
}, },
"homepage": "https://google.github.io/flatbuffers/" "homepage": "https://google.github.io/flatbuffers/",
"dependencies": {}
} }
...@@ -1118,8 +1118,7 @@ class JsGenerator : public BaseGenerator { ...@@ -1118,8 +1118,7 @@ class JsGenerator : public BaseGenerator {
it != struct_def.fields.vec.end(); ++it) { it != struct_def.fields.vec.end(); ++it) {
auto &field = **it; auto &field = **it;
if (field.deprecated) continue; if (field.deprecated) continue;
auto argname = MakeCamel(field.name, false); const auto argname = GetArgName(field);
if (!IsScalar(field.value.type.base_type)) { argname += "Offset"; }
// Generate the field insertion method // Generate the field insertion method
GenDocComment( GenDocComment(
...@@ -1129,16 +1128,8 @@ class JsGenerator : public BaseGenerator { ...@@ -1129,16 +1128,8 @@ class JsGenerator : public BaseGenerator {
argname, false)); argname, false));
if (lang_.language == IDLOptions::kTs) { if (lang_.language == IDLOptions::kTs) {
std::string argType;
if (field.value.type.enum_def) {
argType = GenPrefixedTypeName(GenTypeName(field.value.type, true),
field.value.type.enum_def->file);
} else {
argType = GenTypeName(field.value.type, true);
}
code += "static add" + MakeCamel(field.name); code += "static add" + MakeCamel(field.name);
code += "(builder:flatbuffers.Builder, " + argname + ":" + argType + code += "(builder:flatbuffers.Builder, " + argname + ":" + GetArgType(field) +
") {\n"; ") {\n";
} else { } else {
code += object_name + ".add" + MakeCamel(field.name); code += object_name + ".add" + MakeCamel(field.name);
...@@ -1268,6 +1259,35 @@ class JsGenerator : public BaseGenerator { ...@@ -1268,6 +1259,35 @@ class JsGenerator : public BaseGenerator {
code += ");\n"; code += ");\n";
code += "};\n\n"; code += "};\n\n";
} }
if (lang_.language == IDLOptions::kTs) {
// Generate a convenient CreateX function
code += "static create" + struct_def.name + "(builder:flatbuffers.Builder";
for (auto it = struct_def.fields.vec.begin();
it != struct_def.fields.vec.end(); ++it) {
const auto &field = **it;
if (field.deprecated)
continue;
code += ", " + GetArgName(field) + ":" + GetArgType(field);
}
code += "):flatbuffers.Offset {\n";
code += " " + struct_def.name + ".start" + struct_def.name + "(builder);\n";
for (auto it = struct_def.fields.vec.begin();
it != struct_def.fields.vec.end(); ++it) {
const auto &field = **it;
if (field.deprecated)
continue;
code += " " + struct_def.name + ".add" + MakeCamel(field.name) +"(";
code += "builder, " + GetArgName(field) + ");\n";
}
code += " return " + struct_def.name + ".end" + struct_def.name + "(builder);\n";
code += "}\n";
}
} }
if (lang_.language == IDLOptions::kTs) { if (lang_.language == IDLOptions::kTs) {
...@@ -1275,6 +1295,20 @@ class JsGenerator : public BaseGenerator { ...@@ -1275,6 +1295,20 @@ class JsGenerator : public BaseGenerator {
code += "}\n"; code += "}\n";
} }
} }
std::string GetArgType(const FieldDef &field) {
if (field.value.type.enum_def)
return GenPrefixedTypeName(GenTypeName(field.value.type, true),
field.value.type.enum_def->file);
return GenTypeName(field.value.type, true);
}
static std::string GetArgName(const FieldDef &field) {
auto argname = MakeCamel(field.name, false);
if (!IsScalar(field.value.type.base_type)) { argname += "Offset"; }
return argname;
}
}; };
} // namespace js } // namespace js
......
...@@ -87,6 +87,10 @@ static endInParentNamespace(builder:flatbuffers.Builder):flatbuffers.Offset { ...@@ -87,6 +87,10 @@ static endInParentNamespace(builder:flatbuffers.Builder):flatbuffers.Offset {
return offset; return offset;
}; };
static createInParentNamespace(builder:flatbuffers.Builder):flatbuffers.Offset {
InParentNamespace.startInParentNamespace(builder);
return InParentNamespace.endInParentNamespace(builder);
}
} }
} }
/** /**
...@@ -133,6 +137,10 @@ static endMonster(builder:flatbuffers.Builder):flatbuffers.Offset { ...@@ -133,6 +137,10 @@ static endMonster(builder:flatbuffers.Builder):flatbuffers.Offset {
return offset; return offset;
}; };
static createMonster(builder:flatbuffers.Builder):flatbuffers.Offset {
Monster.startMonster(builder);
return Monster.endMonster(builder);
}
} }
} }
/** /**
...@@ -289,6 +297,11 @@ static endTestSimpleTableWithEnum(builder:flatbuffers.Builder):flatbuffers.Offse ...@@ -289,6 +297,11 @@ static endTestSimpleTableWithEnum(builder:flatbuffers.Builder):flatbuffers.Offse
return offset; return offset;
}; };
static createTestSimpleTableWithEnum(builder:flatbuffers.Builder, color:MyGame.Example.Color):flatbuffers.Offset {
TestSimpleTableWithEnum.startTestSimpleTableWithEnum(builder);
TestSimpleTableWithEnum.addColor(builder, color);
return TestSimpleTableWithEnum.endTestSimpleTableWithEnum(builder);
}
} }
} }
/** /**
...@@ -661,6 +674,13 @@ static endStat(builder:flatbuffers.Builder):flatbuffers.Offset { ...@@ -661,6 +674,13 @@ static endStat(builder:flatbuffers.Builder):flatbuffers.Offset {
return offset; return offset;
}; };
static createStat(builder:flatbuffers.Builder, idOffset:flatbuffers.Offset, val:flatbuffers.Long, count:number):flatbuffers.Offset {
Stat.startStat(builder);
Stat.addId(builder, idOffset);
Stat.addVal(builder, val);
Stat.addCount(builder, count);
return Stat.endStat(builder);
}
} }
} }
/** /**
...@@ -738,6 +758,11 @@ static endReferrable(builder:flatbuffers.Builder):flatbuffers.Offset { ...@@ -738,6 +758,11 @@ static endReferrable(builder:flatbuffers.Builder):flatbuffers.Offset {
return offset; return offset;
}; };
static createReferrable(builder:flatbuffers.Builder, id:flatbuffers.Long):flatbuffers.Offset {
Referrable.startReferrable(builder);
Referrable.addId(builder, id);
return Referrable.endReferrable(builder);
}
} }
} }
/** /**
...@@ -2444,6 +2469,57 @@ static finishMonsterBuffer(builder:flatbuffers.Builder, offset:flatbuffers.Offse ...@@ -2444,6 +2469,57 @@ static finishMonsterBuffer(builder:flatbuffers.Builder, offset:flatbuffers.Offse
builder.finish(offset, 'MONS'); builder.finish(offset, 'MONS');
}; };
static createMonster(builder:flatbuffers.Builder, posOffset:flatbuffers.Offset, mana:number, hp:number, nameOffset:flatbuffers.Offset, inventoryOffset:flatbuffers.Offset, color:MyGame.Example.Color, testType:MyGame.Example.Any, testOffset:flatbuffers.Offset, test4Offset:flatbuffers.Offset, testarrayofstringOffset:flatbuffers.Offset, testarrayoftablesOffset:flatbuffers.Offset, enemyOffset:flatbuffers.Offset, testnestedflatbufferOffset:flatbuffers.Offset, testemptyOffset:flatbuffers.Offset, testbool:boolean, testhashs32Fnv1:number, testhashu32Fnv1:number, testhashs64Fnv1:flatbuffers.Long, testhashu64Fnv1:flatbuffers.Long, testhashs32Fnv1a:number, testhashu32Fnv1a:number, testhashs64Fnv1a:flatbuffers.Long, testhashu64Fnv1a:flatbuffers.Long, testarrayofboolsOffset:flatbuffers.Offset, testf:number, testf2:number, testf3:number, testarrayofstring2Offset:flatbuffers.Offset, testarrayofsortedstructOffset:flatbuffers.Offset, flexOffset:flatbuffers.Offset, test5Offset:flatbuffers.Offset, vectorOfLongsOffset:flatbuffers.Offset, vectorOfDoublesOffset:flatbuffers.Offset, parentNamespaceTestOffset:flatbuffers.Offset, vectorOfReferrablesOffset:flatbuffers.Offset, singleWeakReference:flatbuffers.Long, vectorOfWeakReferencesOffset:flatbuffers.Offset, vectorOfStrongReferrablesOffset:flatbuffers.Offset, coOwningReference:flatbuffers.Long, vectorOfCoOwningReferencesOffset:flatbuffers.Offset, nonOwningReference:flatbuffers.Long, vectorOfNonOwningReferencesOffset:flatbuffers.Offset, anyUniqueType:MyGame.Example.AnyUniqueAliases, anyUniqueOffset:flatbuffers.Offset, anyAmbiguousType:MyGame.Example.AnyAmbiguousAliases, anyAmbiguousOffset:flatbuffers.Offset, vectorOfEnumsOffset:flatbuffers.Offset):flatbuffers.Offset {
Monster.startMonster(builder);
Monster.addPos(builder, posOffset);
Monster.addMana(builder, mana);
Monster.addHp(builder, hp);
Monster.addName(builder, nameOffset);
Monster.addInventory(builder, inventoryOffset);
Monster.addColor(builder, color);
Monster.addTestType(builder, testType);
Monster.addTest(builder, testOffset);
Monster.addTest4(builder, test4Offset);
Monster.addTestarrayofstring(builder, testarrayofstringOffset);
Monster.addTestarrayoftables(builder, testarrayoftablesOffset);
Monster.addEnemy(builder, enemyOffset);
Monster.addTestnestedflatbuffer(builder, testnestedflatbufferOffset);
Monster.addTestempty(builder, testemptyOffset);
Monster.addTestbool(builder, testbool);
Monster.addTesthashs32Fnv1(builder, testhashs32Fnv1);
Monster.addTesthashu32Fnv1(builder, testhashu32Fnv1);
Monster.addTesthashs64Fnv1(builder, testhashs64Fnv1);
Monster.addTesthashu64Fnv1(builder, testhashu64Fnv1);
Monster.addTesthashs32Fnv1a(builder, testhashs32Fnv1a);
Monster.addTesthashu32Fnv1a(builder, testhashu32Fnv1a);
Monster.addTesthashs64Fnv1a(builder, testhashs64Fnv1a);
Monster.addTesthashu64Fnv1a(builder, testhashu64Fnv1a);
Monster.addTestarrayofbools(builder, testarrayofboolsOffset);
Monster.addTestf(builder, testf);
Monster.addTestf2(builder, testf2);
Monster.addTestf3(builder, testf3);
Monster.addTestarrayofstring2(builder, testarrayofstring2Offset);
Monster.addTestarrayofsortedstruct(builder, testarrayofsortedstructOffset);
Monster.addFlex(builder, flexOffset);
Monster.addTest5(builder, test5Offset);
Monster.addVectorOfLongs(builder, vectorOfLongsOffset);
Monster.addVectorOfDoubles(builder, vectorOfDoublesOffset);
Monster.addParentNamespaceTest(builder, parentNamespaceTestOffset);
Monster.addVectorOfReferrables(builder, vectorOfReferrablesOffset);
Monster.addSingleWeakReference(builder, singleWeakReference);
Monster.addVectorOfWeakReferences(builder, vectorOfWeakReferencesOffset);
Monster.addVectorOfStrongReferrables(builder, vectorOfStrongReferrablesOffset);
Monster.addCoOwningReference(builder, coOwningReference);
Monster.addVectorOfCoOwningReferences(builder, vectorOfCoOwningReferencesOffset);
Monster.addNonOwningReference(builder, nonOwningReference);
Monster.addVectorOfNonOwningReferences(builder, vectorOfNonOwningReferencesOffset);
Monster.addAnyUniqueType(builder, anyUniqueType);
Monster.addAnyUnique(builder, anyUniqueOffset);
Monster.addAnyAmbiguousType(builder, anyAmbiguousType);
Monster.addAnyAmbiguous(builder, anyAmbiguousOffset);
Monster.addVectorOfEnums(builder, vectorOfEnumsOffset);
return Monster.endMonster(builder);
}
} }
} }
/** /**
...@@ -2908,5 +2984,21 @@ static endTypeAliases(builder:flatbuffers.Builder):flatbuffers.Offset { ...@@ -2908,5 +2984,21 @@ static endTypeAliases(builder:flatbuffers.Builder):flatbuffers.Offset {
return offset; return offset;
}; };
static createTypeAliases(builder:flatbuffers.Builder, i8:number, u8:number, i16:number, u16:number, i32:number, u32:number, i64:flatbuffers.Long, u64:flatbuffers.Long, f32:number, f64:number, v8Offset:flatbuffers.Offset, vf64Offset:flatbuffers.Offset):flatbuffers.Offset {
TypeAliases.startTypeAliases(builder);
TypeAliases.addI8(builder, i8);
TypeAliases.addU8(builder, u8);
TypeAliases.addI16(builder, i16);
TypeAliases.addU16(builder, u16);
TypeAliases.addI32(builder, i32);
TypeAliases.addU32(builder, u32);
TypeAliases.addI64(builder, i64);
TypeAliases.addU64(builder, u64);
TypeAliases.addF32(builder, f32);
TypeAliases.addF64(builder, f64);
TypeAliases.addV8(builder, v8Offset);
TypeAliases.addVf64(builder, vf64Offset);
return TypeAliases.endTypeAliases(builder);
}
} }
} }
...@@ -85,6 +85,11 @@ static endTableInNestedNS(builder:flatbuffers.Builder):flatbuffers.Offset { ...@@ -85,6 +85,11 @@ static endTableInNestedNS(builder:flatbuffers.Builder):flatbuffers.Offset {
return offset; return offset;
}; };
static createTableInNestedNS(builder:flatbuffers.Builder, foo:number):flatbuffers.Offset {
TableInNestedNS.startTableInNestedNS(builder);
TableInNestedNS.addFoo(builder, foo);
return TableInNestedNS.endTableInNestedNS(builder);
}
} }
} }
/** /**
......
...@@ -110,6 +110,13 @@ static endTableInFirstNS(builder:flatbuffers.Builder):flatbuffers.Offset { ...@@ -110,6 +110,13 @@ static endTableInFirstNS(builder:flatbuffers.Builder):flatbuffers.Offset {
return offset; return offset;
}; };
static createTableInFirstNS(builder:flatbuffers.Builder, fooTableOffset:flatbuffers.Offset, fooEnum:NS8755221360535654258.NamespaceA.NamespaceB.EnumInNestedNS, fooStructOffset:flatbuffers.Offset):flatbuffers.Offset {
TableInFirstNS.startTableInFirstNS(builder);
TableInFirstNS.addFooTable(builder, fooTableOffset);
TableInFirstNS.addFooEnum(builder, fooEnum);
TableInFirstNS.addFooStruct(builder, fooStructOffset);
return TableInFirstNS.endTableInFirstNS(builder);
}
} }
} }
/** /**
...@@ -190,6 +197,12 @@ static endTableInC(builder:flatbuffers.Builder):flatbuffers.Offset { ...@@ -190,6 +197,12 @@ static endTableInC(builder:flatbuffers.Builder):flatbuffers.Offset {
return offset; return offset;
}; };
static createTableInC(builder:flatbuffers.Builder, referToA1Offset:flatbuffers.Offset, referToA2Offset:flatbuffers.Offset):flatbuffers.Offset {
TableInC.startTableInC(builder);
TableInC.addReferToA1(builder, referToA1Offset);
TableInC.addReferToA2(builder, referToA2Offset);
return TableInC.endTableInC(builder);
}
} }
} }
/** /**
...@@ -253,5 +266,10 @@ static endSecondTableInA(builder:flatbuffers.Builder):flatbuffers.Offset { ...@@ -253,5 +266,10 @@ static endSecondTableInA(builder:flatbuffers.Builder):flatbuffers.Offset {
return offset; return offset;
}; };
static createSecondTableInA(builder:flatbuffers.Builder, referToCOffset:flatbuffers.Offset):flatbuffers.Offset {
SecondTableInA.startSecondTableInA(builder);
SecondTableInA.addReferToC(builder, referToCOffset);
return SecondTableInA.endSecondTableInA(builder);
}
} }
} }
...@@ -87,6 +87,11 @@ static endAttacker(builder:flatbuffers.Builder):flatbuffers.Offset { ...@@ -87,6 +87,11 @@ static endAttacker(builder:flatbuffers.Builder):flatbuffers.Offset {
return offset; return offset;
}; };
static createAttacker(builder:flatbuffers.Builder, swordAttackDamage:number):flatbuffers.Offset {
Attacker.startAttacker(builder);
Attacker.addSwordAttackDamage(builder, swordAttackDamage);
return Attacker.endAttacker(builder);
}
} }
/** /**
* @constructor * @constructor
...@@ -400,4 +405,12 @@ static finishMovieBuffer(builder:flatbuffers.Builder, offset:flatbuffers.Offset) ...@@ -400,4 +405,12 @@ static finishMovieBuffer(builder:flatbuffers.Builder, offset:flatbuffers.Offset)
builder.finish(offset, 'MOVI'); builder.finish(offset, 'MOVI');
}; };
static createMovie(builder:flatbuffers.Builder, mainCharacterType:Character, mainCharacterOffset:flatbuffers.Offset, charactersTypeOffset:flatbuffers.Offset, charactersOffset:flatbuffers.Offset):flatbuffers.Offset {
Movie.startMovie(builder);
Movie.addMainCharacterType(builder, mainCharacterType);
Movie.addMainCharacter(builder, mainCharacterOffset);
Movie.addCharactersType(builder, charactersTypeOffset);
Movie.addCharacters(builder, charactersOffset);
return Movie.endMovie(builder);
}
} }
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