- 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)
also:
- added `formatter_flags::quote_infinities_and_nans`
- made constructors for dates/times accept any integral types
- lots of internal work on formatter base (laying groundwork for more customization)
Use the / operator instead of join_paths
Use the / operator instead of using "/" in string paths
Use the includedir opt instead of hardcoding "include" in install_subdir
Remove discouraged layout=flat option (mesonbuild/meson#9243)
Remove unneeded Wextra, Wpedantic flags, already added by warning_level
Remove manual -Oz flag when using Clang (mesonbuild/meson#9286)
Make use of : in kwargs consistent
- renamed options to `snake_case`
- tests, examples and cmake config now explicitly disabled when used as a subproject
- removed small_binaries (it's now implicit when building as release)
- added minimum meson version 0.53
also:
- fixed a bunch of doxygen parsing issues
- added `#define` leak detection to the single-header script
- renamed `TOML_ALL_INLINE` to `TOML_HEADER_ONLY` (the old one still works too)
- simplified abi namespace definitions
also:
- added ability to construct values from wide strings and u8 strings
- added non-template version of array::is_homogeneous()
- added explicit instantiations for more template types when `!TOML_ALL_INLINE`
- cleaned up abi namespaces
- simplified build and test machinery on windows
- removed TOML_CHAR_8_STRINGS since it no longer makes sense
also:
- fixed infinity and NaN-related code breaking when using -ffast-math and friends
- added much more detail to many static_assert error messages
- added more test permutations of various compiler flags
- added many more static checks to test code
also added support for wide strings on Windows (closes#42):
- added wide-string path arg overloads of `parse()` and `parse_file()`
- added wide-string support to all relevant `table` and `array` ops
- added `std::wstring` support to `node::value()` and `node::value_or()`
- added `std::wstring` support to `node_view::value()` and `node_view::value_or()`
- added wide-string overloads of `table::operator[]`
- added wide-string overloads of `node_view::operator[]`
- added `source_region::wide_path()`
- added `TOML_WINDOWS_COMPAT` switch for explicitly enabling/disabling this stuff
also:
- fixed internal macro `assert_or_assume` leaking out of `toml_parser.hpp`
- deprecated `node_view::get()` in favour of `node_view::node()`
- minor documentation fixes
- minor cleanup
- added doxygen page for the configuration options
- added SPDX-License-Identifiers around the place
- changed TOML_UNRELEASED_FEATURES default to 0
- simplified ABI namespace machinery
- fixed a number of doxygen bugs
also:
- fixed some parsing and printing ops being locale-dependent (fixes#19)
- fixed pkgconfig subdir being wrong (fixes#23)
- fixed some parsing errors at EOF when `TOML_EXCEPTIONS = 0`
- fixed some unreferenced variable warnings on older compilers
- fixed some 'maybe-uninitialized' false-positives on GCC9
- added debug/release awareness to CI tests
- added locale awareness to catch test runner
see https://github.com/toml-lang/toml/issues/698 for info about TOML v1.0.0
also:
- fixed some parser error-paths not returning early enough when exceptions were disabled
- added more specific error messages for parsing errors relating to prohibited codepoints
- added compilation speed improvements (particularly for platforms lacking floating-point `std::to_chars`)
- added many minor documentation improvements
- added additional tests
also:
- decoupled `TOML_EXCEPTION` from ex. mode (closes#13)
- added `TOML_OPTIONAL_TYPE` customization point
- added tests for a custom optional type
- ci refactoring
also:
- fixed column numbers being wrong when a value ended at EOF
- fixed some `print_to_stream` overloads for `char8_t`
- fixed a minor preprocessor snafu on MSVC
- fixed '\' not being escaped when printing string values
- added an initializer list constructor for tables
- added `array::flatten`
- added `table::find`
- added `table::is_inline` setter
- added `TOML_SMALL_INT_TYPE`
- added `parse_file`
- added stream operator for source_region
- added proper license notice for the utf8 decoder
- added lots more documentation and tests
also:
- added `toml_version.h`
- added version number to toml.hpp
- added `node::visit()`
- added `table::empty()`
- added `array::empty()`
- added version number to `toml.hpp`
- added ostream operator overload for `source_position`
- added tests for string escape sequences
- added tests for + in bare keys (toml/issues/687)
- added tests for hexfloat literals (toml/issues/562)
- added c++20 char8_t detection to meson
- moved third party submodules to `/extern`
- refactored noexcept version of `parse_result` to be more useful
- refactored all code to 'mostly' stick to a 120 column limit
- fixed some minor stuff picked up by gcc9
new file: .editorconfig
new file: .gitattributes
new file: .gitignore
new file: .gitmodules
new file: LICENSE
new file: README.md
new file: examples/example.cpp
new file: examples/example.toml
new file: examples/meson.build
new file: include/toml++/toml.h
new file: include/toml++/toml_array.h
new file: include/toml++/toml_common.h
new file: include/toml++/toml_formatter.h
new file: include/toml++/toml_node.h
new file: include/toml++/toml_node_view.h
new file: include/toml++/toml_parser.h
new file: include/toml++/toml_table.h
new file: include/toml++/toml_utf8.h
new file: include/toml++/toml_utf8_generated.h
new file: include/toml++/toml_value.h
new file: meson.build
new file: python/ci_single_header_check.py
new file: python/generate_single_header.py
new file: python/generate_unicode_functions.py
new file: tests/catch2
new file: tests/catch2.h
new file: tests/lifetimes.cpp
new file: tests/main.cpp
new file: tests/meson.build
new file: tests/parsing_arrays.cpp
new file: tests/parsing_booleans.cpp
new file: tests/parsing_comments.cpp
new file: tests/parsing_dates_and_times.cpp
new file: tests/parsing_floats.cpp
new file: tests/parsing_integers.cpp
new file: tests/parsing_key_value_pairs.cpp
new file: tests/parsing_spec_example.cpp
new file: tests/parsing_strings.cpp
new file: tests/parsing_tables.cpp
new file: tests/tests.cpp
new file: tests/tests.h
new file: toml.hpp
new file: vs/.runsettings
new file: vs/example.vcxproj
new file: vs/test_char.vcxproj
new file: vs/test_char8.vcxproj
new file: vs/test_char8_noexcept.vcxproj
new file: vs/test_char_noexcept.vcxproj
new file: vs/test_strict_char.vcxproj
new file: vs/test_strict_char8.vcxproj
new file: vs/test_strict_char8_noexcept.vcxproj
new file: vs/test_strict_char_noexcept.vcxproj
new file: vs/toml++.natvis
new file: vs/toml++.props
new file: vs/toml++.sln
new file: vs/toml++.vcxproj
new file: vs/toml++.vcxproj.filters