We use reflection.fbs as our intermediate representation. flatc
parses .fbs
files, checks them for errors and stores the resulting data in this IR, outputting .bfbs
files. Since this IR is a Flatbuffer, you can load and use it at runtime for runtime reflection purposes.
There are some quirks:
Object
s.Enum
s.advanced_features
field of Schema
. These mark the presence of new, backwards incompatible, schema features. Code generators must error if generating a schema with unrecognized advanced features.--bfbs-filenames=$PROJECT_ROOT
, or it will be inferred to be the directory containing the first provided schema file.You can invoke it like so
flatc -b --schema ${your_fbs_files}
This generates .bfbs
(binary flatbuffer schema) files.
Some information is not included by default. See the --bfbs-filenames
and --bfbs-comments
flags. These may be necessary for code-generators, so they can add documentation and maybe name generated files (depending on the generator).
TODO(cneo): Flags to output bfbs as flexbuffers or json.
TODO(cneo): Tutorial for building a flatc plugin.