Lobster: Support required fields

This commit is contained in:
Wouter van Oortmerssen
2024-03-08 21:31:55 -08:00
parent 6ff9e90e7e
commit 960cd4d635

View File

@@ -145,11 +145,17 @@ class LobsterGenerator : public BaseGenerator {
code += def + "() -> " + name + ":\n ";
code += "return " + name + "{ buf_, pos_ + " + offsets + " }\n";
} else {
code += def + "() -> " + name + "?:\n ";
code += def + "() -> " + name;
if (!field.IsRequired()) code += "?";
code += ":\n ";
code += std::string("let o = flatbuffers.field_") +
(field.value.type.struct_def->fixed ? "struct" : "table") +
"(buf_, pos_, " + offsets + ")\n return if o: " + name +
" { buf_, o } else: nil\n";
"(buf_, pos_, " + offsets + ")\n return ";
if (field.IsRequired()) {
code += name + " { buf_, assert o }\n";
} else {
code += "if o: " + name + " { buf_, o } else: nil\n";
}
}
break;
}