* feat(path): added operator= for path_components to keep component type and value synchronized
* fix(path): added missing TOML_EXPORTED_MEMBER_FUNCTION directives
* refactor(path): changed constructors to preserve type - value correlation in path_component
* fix(path): added TOML_EXPORTED_CLASS for path_component
* fix(path): corrected placement of TOML_EXPORTED_CLASS for path_component. urgh.
* fix(path): tidied up some constructors/accessors in path_component
- re-ordered most of the `.inl` implementations to match the declaration order in the class body
- fixed a few missing cases of `noexcept`
- added additional operator overloads for +=
- added `operator==` and `operator!=` to `path_component`
- changed parse method to "parse into" so it could be re-used in more places without creating a temporary vector
- changed all binary operators to be 'hidden friends'
- moved the "to string" logic to a "print_to" for streams to avoid creating a temporary string in the ostream<< operator
- made the string conversion operators `explicit`
- renamed `string()` to `str()` to be consistent with `toml::key` and `std::stringstream`
- renamed `wstring()` to `wide_str()` to be consistent with `toml::source_region`
- renamed `parent_path()` to `parent()`
- removed the `const (w)char*` operator overloads - these were already sufficiently covered by the `std::(w)string_view` ones
- removed the `operator/` overloads - since we aren't a file path the `/` doesn't have the same meaning (also `operator+` was doing the same thing)
- removed submodules in `external/`
- vendored `Catch2` and `nlohmann/json directly`
- updated conformance test generator to look outside the repo for test sources
Yeah so it turns out meson supports splitting compound boolean logic over multiple lines. Duh. Of course it does.
Also enabled ubsan for CI example builds.
When building tests, Meson will now look for system dependencies and use
them if found. Otherwise, it will check if the submodules are cloned and
create a dependency object wrapping the include path of each external
dependency (this breaks Meson's sandbox, but the previous approach did
too). This also allows passing actual dependencies to the various build
targets instead of include paths (a bit more idiomatic).
I've also made it possible to skip the tl-optional tests when the lib is
not found, so that it is still possible to run tests even from a
tarball (i.e. no git checkout)
Windows containers in GitHub Actions are simply bad. While it is
possible to use them, it is a horrible hack with terrible usability.
It was a fun experiment, but I don't want anybody to maintain this mess,
especially when you can use a normal Windows image (less cool, bloated,
but well supported).