Thanks for taking a second to read the docs!
What is this project?
Veritable Lasagna (VL) is a data structures and algorithms library written for C11. It provides a variety of memory management utilities, data structures, and algorithms.
The mission statement for this project is as follows:
- Veritable Lasagna aims to be an approachable open-source toolbox project that offers flexibility, accessible documentation, portability, and a concise codebase.
Let's break it down.
- Flexibility
- There are very few type-dependent algorithms.
- Due to the layered nature of the memory management and data structures, many underlying mechanisms are not obfuscated away but rather explicitly exposed.
- Accessible Documentation
- Every function and top-level structure is documented in the souce code.
- Rendered graphs are interspersed throughout the documentation, as well as interactive call/caller graphs on a per-function basis.
- Many functions are tagged with a note denoting their complexity in Big-O notation.
- Portability
- Care has been taken to offer compatibility for a wide range of system targets.
- Independent "largest" and "smallest" integer type resolution (See
vl_(i/u)large_t
and vl_(i/u)small_t
)
- Compilers with high-precision floating point types. (Intel's 128-bit floats for example, see
vl_float_highp_t
type)
- Routinely tested on MSVC/MinGW for Windows 11, and GCC for >= Ubuntu 22.04 LTS.
- Concise Codebase
- Follows the "one family of functions, one include file" paradigm.
- Strict adherence to a consistent naming convention modeled after the OpenGL API.
Structures
At the time of writing, the following memory management schemes are available:
... alongside the following conventional data structures:
... and some higher-level functionality:
How is this project structured?
CMake is used by this project to support cross-platform compilation and the accompanying test suites.