it != struct_def.fields.vec.end(); ++it) {
auto &field = **it;
if (field.deprecated) continue;
- auto argname = MakeCamel(field.name, false);
- if (!IsScalar(field.value.type.base_type)) { argname += "Offset"; }
+ const auto argname = GetArgName(field);
// Generate the field insertion method
GenDocComment(
argname, false));
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 += "(builder:flatbuffers.Builder, " + argname + ":" + argType +
+ code += "(builder:flatbuffers.Builder, " + argname + ":" + GetArgType(field) +
") {\n";
} else {
code += object_name + ".add" + MakeCamel(field.name);
code += ");\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) {
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
return offset;
};
+static createInParentNamespace(builder:flatbuffers.Builder):flatbuffers.Offset {
+ InParentNamespace.startInParentNamespace(builder);
+ return InParentNamespace.endInParentNamespace(builder);
+}
}
}
/**
return offset;
};
+static createMonster(builder:flatbuffers.Builder):flatbuffers.Offset {
+ Monster.startMonster(builder);
+ return Monster.endMonster(builder);
+}
}
}
/**
return offset;
};
+static createTestSimpleTableWithEnum(builder:flatbuffers.Builder, color:MyGame.Example.Color):flatbuffers.Offset {
+ TestSimpleTableWithEnum.startTestSimpleTableWithEnum(builder);
+ TestSimpleTableWithEnum.addColor(builder, color);
+ return TestSimpleTableWithEnum.endTestSimpleTableWithEnum(builder);
+}
}
}
/**
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);
+}
}
}
/**
return offset;
};
+static createReferrable(builder:flatbuffers.Builder, id:flatbuffers.Long):flatbuffers.Offset {
+ Referrable.startReferrable(builder);
+ Referrable.addId(builder, id);
+ return Referrable.endReferrable(builder);
+}
}
}
/**
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);
+}
}
}
/**
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);
+}
}
}