libcyaml with meson and patches for zrythm
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

113 lines
3.3 KiB

3 years ago
LibCYAML: Schema-based YAML parsing and serialisation
[![Build Status](]( [![Code Coverage](]( [![Code Quality](](
3 years ago
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.
### Goals
* Make it easy to load YAML into client's custom C data structures.
* Good compromise between flexibility and simplicity.
### Features
* 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.
- etc...
* Enumerations and flag words.
* YAML backtraces make it simple for users to fix their YAML to
conform to your schema.
* Uses standard [`libyaml`]( library for
low-level YAML read / write.
* Support for YAML aliases and anchors.
To build the library, run:
You can control the optimisation and building of asserts by setting
the build variant:
make VARIANT=debug
make VARIANT=release
Another debug build variant which is built with address sanitiser (incompatible
with valgrind) can be built with:
make VARIANT=san
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 `VARIANT=release`, or
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 run a single test or a subset of tests, use the `TESTLIST` variable, which
expects a space and/or comma separated list of test names:
make test-debug TESTLIST=test_load_mapping_without_any_fields
make valgrind-debug TESTLIST="test_load_no_log test_util_state_invalid"
3 years ago
To generate a test coverage report, `gcovr` is required:
make coverage
To generate both public API documentation, and documentation of CYAML's
internals, `doxygen` is required:
make docs
Alternatively, the read the API documentation directly from the
3 years ago
header file.
There is also a [tutorial](docs/
In addition to the documentation, you can study the [examples](examples/).