Made Lobster builder offsets strongly typed

This commit is contained in:
aardappel
2019-05-22 15:55:28 -07:00
parent 563dcd6893
commit b10b050ab9
5 changed files with 113 additions and 106 deletions

View File

@@ -67,6 +67,7 @@ class LobsterGenerator : public BaseGenerator {
std::string LobsterType(const Type &type) {
if (IsFloat(type.base_type)) return "float";
if (IsScalar(type.base_type) && type.enum_def) return NormalizedName(*type.enum_def);
if (!IsScalar(type.base_type)) return "flatbuffers_offset";
return "int";
}
@@ -191,8 +192,10 @@ class LobsterGenerator : public BaseGenerator {
MakeCamel(NormalizedName(field)) + "(b_:flatbuffers_builder, " +
NormalizedName(field) + ":" + LobsterType(field.value.type) +
"):\n b_.Prepend" + GenMethod(field.value.type) + "Slot(" +
NumToString(offset) + ", " + NormalizedName(field) + ", " +
field.value.constant + ")\n";
NumToString(offset) + ", " + NormalizedName(field);
if (IsScalar(field.value.type.base_type))
code += ", " + field.value.constant;
code += ")\n";
if (field.value.type.base_type == BASE_TYPE_VECTOR) {
code += "def " + NormalizedName(struct_def) + "Start" +
MakeCamel(NormalizedName(field)) +