The intent with the change to using shared_ptr in v0.27.0 was to make the caller responsible for their lifetimes, but I forgot to update the docs to reflect that, so this makes their lifetimes behave as documented.
Replace the boolean parameters for including user metadata and evaluating conditions with MergeMode and EvalMode enums.
The C++ and Python wrappers still use booleans because they're more constrained than enums in those languages, which can be given invalid values.
This makes it so that all non-public functions use camelCase and all public functions use PascalCase.
I regret choosing to use PascalCase for function names, but it's not worth breaking the whole public API to change that, and at least this approach has precedent in how Go decides if a function is public or private.
The static library has a static dependency on libloot-cpp that causes more difficulty, and resolving that isn't a priority since I don't use libloot as a static library.
- Use PROJECT_SOURCE_DIR and PROJECT_BUILD_DIR instead of CMAKE_SOURCE_DIR and CMAKE_BUILD_DIR because libloot's CMakeLists.txt may not be the top-level one.
- Specify the working directory when calling cargo
- Define an alias and export the loot target so that it's usable without installing the built artifacts first
- The string encoding and errors sections move to the reference page
- The metadata files section moves to the introduction page
- The language codes section is already detailed in a C++ header doc comment
- The caching section is already detailed in C++ header doc comments
- The performance section is outdated and isn't worth keeping once updated.