34 lines
1.7 KiB
Plaintext
34 lines
1.7 KiB
Plaintext
Rapid YAML, or ryml for short. ryml is a C++ library to parse and emit
|
|
YAML, and do it fast, on everything from x64 to bare-metal chips
|
|
without operating system. (If you are looking to use your programs
|
|
with a YAML tree as a configuration tree with override facilities,
|
|
take a look at c4conf).
|
|
|
|
ryml parses both read-only and in-situ source buffers; the resulting
|
|
data nodes hold only views to sub-ranges of the source buffer. No
|
|
string copies or duplications are done, and no virtual functions are
|
|
used. The data tree is a flat index-based structure stored in a single
|
|
array. Serialization happens only at your direct request, after
|
|
parsing / before emitting. Internally, the data tree representation
|
|
stores only string views and has no knowledge of types, but of course,
|
|
every node can have a YAML type tag. ryml makes it easy and fast to
|
|
read and modify the data tree.
|
|
|
|
ryml is available as a single header file, or it can be used as a
|
|
simple library with cmake -- both separately (ie build->install->
|
|
find_package()) or together with your project (ie with
|
|
add_subdirectory()).
|
|
|
|
ryml can use custom global and per-tree memory allocators and error
|
|
handler callbacks, and is exception-agnostic. ryml provides a default
|
|
implementation for the allocator (using std::malloc()) and error
|
|
handlers (using using std::abort() is provided, but you can opt out
|
|
and provide your own memory allocation and eg, exception-throwing
|
|
callbacks.
|
|
|
|
ryml does not depend on the STL, ie, it does not use any std
|
|
container as part of its data structures), but it can serialize and
|
|
deserialize these containers into the data tree, with the use of
|
|
optional headers. ryml ships with c4core a small C++ utilities
|
|
multiplatform library.
|