LibCYAML: Schema-based YAML parsing and serialisation
LibCYAML is a C library for reading and writing structured YAML documents. It is written in ISO C11 and licensed under the ISC licence.
The fundamental idea behind CYAML is to allow applications to construct schemas which describe both the permissible structure of the YAML documents to read/write, and the C data structure(s) in which the loaded data is arranged in memory.
- Make it easy to load YAML into client's custom C data structures.
- Good compromise between flexibility and simplicity.
- Load, Save and Free functions.
- Reads and writes arbitrary client data structures.
- Schema-driven, allowing control over permitted YAML, for example:
- Required / optional mapping fields.
- Allowed / disallowed values.
- Minimum / maximum sequence entry count.
- Enumerations and flag words.
- YAML backtraces make it simple for users to fix their YAML to conform to your schema.
- Uses standard
libyamllibrary for low-level YAML read / write.
Until a release is made the API may change. Feedback welcome.
To build the library (debug mode), run:
Another debug build variant which is built with address sanitiser (incompatible with valgrind) can be built with:
To build a release version:
To install a release version of the library, run:
make install VARIANT=release
It will install to the PREFIX
/usr/local by default, and it will use
DESTDIR and PREFIX from the environment if set.
To run the tests, run any of the following, which generate various
levels of output verbosity (optionally setting
make test make test-quiet make test-verbose make test-debug
To run the tests under
valgrind, a similar set of targets is available:
make valgrind make valgrind-quiet make valgrind-verbose make valgrind-debug
To generate a test coverage report,
gcovr is required:
To generate both public API documentation, and documentation of CYAML's
doxygen is required:
Alternatively, the read the API documentation directly from the cyaml.h header file.
There is also a tutorial.
In addition to the documentation, you can study the examples.