Support multiple fbs files & no root types in static flatbuffers
In order to improve parity with the existing flatbuffer bazel rules, add
support for:
* Multiple srcs files.
* Generating code for files where no root_type has been specified.
Change-Id: I77d909978fd0bf5125b9e789162c7b629d0fe00d
Signed-off-by: James Kuszmaul <james.kuszmaul@bluerivertech.com>
diff --git a/aos/flatbuffers/static_flatbuffers.cc b/aos/flatbuffers/static_flatbuffers.cc
index 7b42ef6..019afda 100644
--- a/aos/flatbuffers/static_flatbuffers.cc
+++ b/aos/flatbuffers/static_flatbuffers.cc
@@ -807,12 +807,16 @@
}
} // namespace
-std::string GenerateCodeForRootTableFile(const reflection::Schema *schema) {
- const reflection::Object *root_object = CHECK_NOTNULL(GetObject(schema, -1));
+std::string GenerateCodeForRootTableFile(const reflection::Schema *schema,
+ std::string_view file_hint) {
+ const reflection::Object *root_object = GetObject(schema, -1);
const std::string_view root_file =
- root_object->declaration_file()->string_view();
- std::vector<GeneratedObject> objects = {
- GenerateCodeForObject(schema, root_object)};
+ (root_object == nullptr) ? file_hint
+ : root_object->declaration_file()->string_view();
+ std::vector<GeneratedObject> objects;
+ if (root_object != nullptr) {
+ objects.push_back(GenerateCodeForObject(schema, root_object));
+ }
for (const reflection::Object *object : *schema->objects()) {
if (object->is_struct()) {
continue;