# Flatbuffers Intermediate Representation {#intermediate_representation}

We use [reflection.fbs](https://github.com/google/flatbuffers/blob/master/reflection/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:
- Tables and Structs are serialized as `Object`s.
- Unions and Enums are serialized as `Enum`s.
- It is the responsibility of the code generator to check the `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.
- Filenames are relative to a "project root" denoted by "//" in the path. This
  may be specified in flatc with `--bfbs-filenames=$PROJECT_ROOT`, or it will be
  inferred to be the directory containing the first provided schema file.


## Invocation
You can invoke it like so
```{.sh}
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.
