docs/source/intermediate_representation.md
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:
Objects.Enums.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.