Welcome to Emboss, the Embedded Systems Binary Structure Tool.

If you are new to Emboss, a good place to start would be the [User
Guide](guide.md).

The [C++ User Guide](cpp-guide.md) has an (incomplete) explanation of the
generated C++ code.

Details of the Emboss language can be found in the [Emboss Language
Reference](language-reference.md).

A reference to the C++ code that Emboss generates can be found in the [Emboss
C++ Generated Code Reference](cpp-reference.md).

Details of the textual representation Emboss uses for structures can be found in
the [Emboss Text Format Reference](text-format.md).

There is a tentative [roadmap of future development](roadmap.md).

If you are interested in contributing to Emboss, please read [Contributing to
Emboss](contributing.md), and you may wish to read [How to Design Features for
Emboss](how-to-design.md) and [How to Implement Changes to
Emboss](how-to-implement.md).
