-
Notifications
You must be signed in to change notification settings - Fork 863
New issue
Have a question about this project? # for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “#”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? # to your account
Add shorthand for escape character #790
Conversation
This adds a shorthand for the escape character `\e` (0x1B). This is useful especially when talking about things like terminal escape sequences, which use this character regularly. Fixes toml-lang#715.
I'm aware that the inclusion of this shorthand is not agreed upon yet. But I thought I might as well just send a PR right away so it doesn't just sit around as an issue nobody cares about. Feel free to just close this if the decision has been made against supporting it. But I think it would be a nice addition. |
If it does pass muster (and I personally support its inclusion), it probably won't come in before v1.0.0 is released. |
1.0 has been released, so an evaluation of this feature (and the related issue) might be relevant now? |
Thanks for filing a complete PR for this @chrisduerr! :) |
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 added `json_formatter` 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 added iterators for tables and arrays also: - fixed parsing table headers allowing invalid characters - fixed implicit fallthrough warnings - fixed some issues parsing dates and times - added `table::erase` - added `array::operator[]` - added `value::operator*` - added stream operators for date, time and date_time - added `impl::print_to_stream` - added more parsing diagnostics - added many tests moved date and time stuff to separate header also: - merged all the separate integer parsing functions - renamed the member functions of parse_error for clarity - added the beginnings of a doxygen pipeline broke ci :( removing m.css re-adding m.css updated scripts with new m.css path add missing packages for ci added printing for arrays also - added many member functions to `array` - added more documentation - added format_flags - added some additional cleaning steps to `generate_single_header.py` - made formatters work for any node type, not just tables - fixed documentation header obscuring content during jumps added proper non-exhaustive visitor support to node::visit also: - fixed preprocessor snafu - fixed bool `print_to_stream` overload not being selected - added `TOML_SMALL_FLOAT_TYPE` - added is_XXXXX node type metafunctions - added additional API documentation added relops for values, arrays and tables also: - fixed stream operator for node_type - implemented node::visit() noexcept propagation - removed some unnecessary overloads of string-based accessors added insertion operations for tables and arrays 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 added array::get also: - moved node_of to impl namespace - added a lot more documentation - fixed some bugs in the documentation generator - fixed the license ID breaking github's license recognition added value assignment operators also: - added value::value_type - removed format_flags::always_print_as_inline - significantly improved documentation release 0.1.0 - added `toml::is_number<>` - added `toml::node_type::none` - added initializer_list and vector relops to `toml::array` - added constructors for `time_offset` and `date_time` - added much to `node_view` - added tests for `node_view` value relops - added lots more documentation - removed `time_offset::from_hh_mm` - removed the handling of `\s` literals (looks like it's not going be accepted as-is) fixed potential ODR issues relating to exception mode handling (fixes #6) also: - fixed truncation of floating-point values when using ostreams - fixed some minor documentation issues (fixes #8) - fixed missing value deduction guides for dates and times - added serialization round-trip tests (closes #9) - added node::is_number() - added node_view::is_number() - added node_view::value_or() (closes #7) - added hexfloat parsing support for all implementations, not just <charconv> ones renamed value::value_arg_t to value_arg for consistency also: - added major version number to the hidden inline namespace - documentation fixes Added code of conduct [skip ci] Update issue templates [skip ci] Added CONTRIBUTING.md [skip ci] Update README [skip ci] Changed the contrib section to refer to CONTRIBUTING.md added missing operator<< for `parse_error` also: - fixed printing bug in operator << for source_position - improved quality of error messages for boolean and inf/nan parsing - documentation fixes Update README [skip ci] fixed source of UB when using char8 strings also: - documentation improvements - minor test restructuring documentation improvements removed `<cmath>` dependency also: - fixed some pedantic clang warnings - added preliminary support for ICC - documentation fixes added `node::value()` and `node::value_or()` also: - added `node_view::value` - added relops for the date/time classes - added `TOML_ALL_INLINE` and `TOML_IMPLEMENTATION` options - fixed documentation header overflowing on narrow devices Update README [skip ci] added support for compiling into DLLs on windows (`TOML_API`) minor refactoring to better enable explicit instantiations fixed parse_file for string literals (closes #12) also: - decoupled `TOML_EXCEPTION` from ex. mode (closes #13) - added `TOML_OPTIONAL_TYPE` customization point - added tests for a custom optional type - ci refactoring Define tomlplusplus_dep for when included in subproject. Added option BUILD_TESTS, default false. Changed BUILD_TESTS to be a feature option: auto = only if not a subproject added `node::ref()` and `node_view::ref()` (resolves #10) also: - simplified `const` handling in `node_view` minor parsing performance improvements also improved codegen for the utf8_generated functions added error when `TOML_EXCEPTIONS` is 1 but compiler exceptions were disabled fixed ICE in VS2019 when using `/std:c++17` instead of `/std:c++latest` fix some attribute warnings in GCC added support for \xHH escape sequences (unreleased) also: - fixed EOF bug in string parsing when exceptions are disabled - fixed exception mode detection sometimes being incorrect on MSVC - added short-form license preamble to all source files - simplified license files added support for Unicode 13.0 Fix build with GCC 8.2.0 (#15) Fix build with GCC 8.2.0 Co-authored-by: Gábor Kozár <kozar@davinciderivatives.com> fixed compilation on older implementations without std::launder also: - fixed `json_formatter` type deduction on older compilers - added build configuration option for compiling examples minor preprocessor cleanup TOML_GCC_ATTR => TOML_GNU_ATTR added trivial abi attribute to date, time, time_offset also: - included <cassert> directly in 'debug' builds when TOML_ASSERT isn't defined - minor preprocessor cleanup - minor documentation fixes documentation fixes minor documentation fixes narrowed scope of abi namespacing also - simplified `noexcept` specifiers (removed `TOML_MAY_THROW_UNLESS`) - minor documentation fixes minor compilation speed and binary size improvements also: - minor documentation fixes support for upcoming TOML v1.0.0 release see toml-lang/toml#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 meson: Permit installation of toml++ (#16) added operator[], begin(), end() to parse_result in noexcept-mode also: - added note about `#include <fstream>` requirements README - added tests for parse_result - added array and table iterators to the toml namespace Added project homepage note to README [skip ci] minor doxygen tweaks added support for implementations without `<charconv>` (fixes #21) 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 add CI install step for 'locales' fix for CI pipeline failing when compiling runs out of memory ugh honestly make meson pkgconfig module use the correct project name [skip ci] Add the Cmake configuration files support (#22) [skip ci] added build option `GENERATE_CMAKE_CONFIG` [skip ci] also: - minor cleanup minor refactoring in the parser to reduce binary sizes also: - fixed pedantic vtable warnings on clang with -Weverything - renamed `_impl.h` headers to `.hpp` - build system and CI config tweaks fixed printing of inf and nan also: - fixed parser not handling floats with leading '.' characters - added `TOML_PARSER` configuration option - added `TOML_LIB_SINGLE_HEADER` indicator - moved parse_error and the utf8 stream machinery to separate headers - updated catch2 moved preprocessor machinery to a separate header - 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 refactored parser Mainly to simplify a the error handling code (it had gotten a bit verbose), but also to reduce compiled binary sizes. also: - moved windows terminal code page stuff in examples to a separate file fixed some multi-line string parsing issues also: - fixed pedantic warnings on gcc 10 and clang 11 added toml_generator example fix examples breaking CI =/ minor improvements to the wording of some error messages also: - added 'error_printer' example fixed `is_unicode_XXXXXX` functions being wrong in some cases also: - added tests for unicode functions - changed `TOML_LIKELY` semantics to work with gcc-style intrinsics - greatly improved unicode-related codegen - parser refactoring minor improvements to codegen of unicode functions minor code cleanup fixing typo (#26) updated submodules also fixed inline warning spam in gcc10 fixed formatter::print_inline causing compilation failures in windows DLL builds renamed table proxy pair members to `first` and `second` to match STL (closes #30) also: - implemented `table_iterator::operator -> ()` (closes #29) - added `array::resize()` and `array::truncate()` (closes #33) - refactored BOM handling to make static analyzer happy (closes #34) - added `array::capacity()`, `array::shrink_to_fit()`, `array::max_size()` - implemented non-const -> const conversion for table and array iterators fixed weird overflow with BOMs in char8 mode updating toml.hpp v1.3.0 fixed parse failure when parsing an empty file Blank files are in fact totally valid TOML and should not cause a parse failure (fixes #35). fixed multi-line strings being allowed in keys also: - significantly improved the performance of toml::parse_file - improved the performance of printing to streams for deepy-nested TOML data - simplified some of the examples - added more tests - cleaned up some of the test code Adding details for using Conan package manager (#38) [skip ci] Readme updates [skip ci] fixed single-digit negative integer parsing bug (closes #39) also: - fixed overflow for very long binary integer literals - added optimization for parsing string views containing trailing null characters - added more tests fixed std::numeric_limits::max() getting broken by macros in some environments deleted some duplicated preprocessor handling also: - updated test and dox submodules - updated README CI: update node docker image Update README [skip ci] minor preprocessor/doxygen cleanup documentation improvements - updated TOML links to new toml.io website - refactored the main page more preprocessor cleanup - fixing 'unknown pragma' warnings in GCC - cleaning up test structure fixed BOM check causing EOF on very short iostream inputs also fixed a number of small parsing conformance issues updating submodules fixed ML strings not allowing whitespace after line-ending backslashes also: - fixed value comparison with special floats - added all the remaining conformance tests from BurntSushi/toml-test and iarna/toml-spec-tests - added toml::inserter - added license boilerplate to test files added rvalue overload of array::flatten also: - made array::flatten return a reference to the array - minor documentation fixes fixed streamsize conversion warning on ARM simplified test code to reduce bloat and improve compile times refactoring parser to reduce binary sizes Basically boils down to eliminating excessive template instantiations. documentation improvements - moved the main page to a separate dox file - added integration section to homepage - improved some of the examples - formatting fixes - added note about python wrapper (closes #36) documentation improvements and minor cleanup - split conformance tests into multiple TU's - added "Try this code on Compiler Explorer" links to the main page - minor preprocessor cleanup string value serialization now emits literals where possible (closes #43) 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 expanded allowable conversion semantics of value and value_or 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 fixed narrowing conversion warnings when constructing int values from unsigned 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 Add more VS debug visualizers (#46) - Added natvis entries for toml::table, toml::array, parse_result, and parse_error renamed date_time::time_offset to just 'offset' also: - fixed natvis for date, time, time_offset, date_time deprecated parse_result::get() in favour of parse_result::table() also: - fixed static assert messages being badly formatted on clang - minor documentation fixes - updated version numbers fixed leading/trailing newlines with printing to ostreams (fixes #48) also: - change internal nan constant to match qNaN bits on x86/ARM fixed Wcast-align warning spam on ARM improved support for __fp16, _Float16 and __float128 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 fix include guard regression in toml.hpp generator fixed array::insert not working correctly in some cases also: - improved the documentation for table and array - fixed documentation font on mobile added copy construction/assignment for arrays. tables and values In service of satisfying #49. added insert, emplace, push_back etc. compatibility with node_views In service of satisfying #49. fix godbolt links in documentation fix node::value_or() to act like node::value() (#50) auto table = toml::table{{{"value", 10}}}; const toml::node *value = table.get("value"); if(value && value->is_number()) { double number = value->value_or<double>(0); cout << number << endl; } The original output was 0. This change will output 10.0. The old way would see that it was an integer (a native type), then use the integer conversion, but since the type being requested was a double, it would return the default value. fixed source information being copied when copying nodes also: - many minor documentation fixes - added pull request template moved the unicode function generator stuff to another repo also: - updated github templates added tests for copying and insertion (closes #49) also: - added tests to catch any regressions of pull/50 - moved UTF-8 decoder copyright notice - cleaned up static assert messages moved is_homogenous to toml::node also: - added is_homogenous overload for identifying failure-causing element (to assist with implementing #45) - added table::is_homogenous - added value::is_homogenous (just for generic code's sake) fix some issues handling infinities and NaNs fixes #51 regenerated unicode functions minor cleanup mostly for testing on ICC. Add implicit conversion operator from node to node_view (#52) - Creates a node_view pointing to that node. This is similar to how std::string has a conversion operator creating a string_view of the string. - Also, enabled the move assignment operator for node_view, but made both copy and move assignment operators lvalue-only to avoid the "misleading assignment" issue (see marzer/tomlplusplus#49 (comment)) updated TOML version to v1.0.0-rc.2 also: - simplified warning handling macros - minor version bump cleaned up some compiler warning management spam also: - removed `std::endl` from example code in documentation - trimmed some fat from the toml.hpp generator Update README [skip ci] added additional node_view constructors also made node conversion operators explicit Added more explicit control over budget in toml_generator example added set information to CONTRIBUTING also updated windows test targets to use /MP fixes for VS2017 (closes #55) fixed _Float16 erroneously supported on g++ (closes #57) Updated github templates [skip ci] meson refactoring - 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 added value_flags Allows controlling the output format of integers, and round-trips their format when serializing after parsing. minor cleanup and code review meson: Install CMake and pkg-config files into architecture-independe… (#60) toml++ is header-only so these should be installed into architecture-independent directories to allow them to be found for crosscompiling regardless of the architecture they were installed on. Fixes #59. Rename Windows.h to windows.h for mingw-w64 (#63) Co-authored-by: Reza Housseini <reza.housseini@mecos.com> fixed parser memory leak (fixes #64) also: - build/infra improvements - updated submodules - updated conformance tests - misc code review/refactors - library version bump - TOML version bump correct version numbers in dox fixed issue handling malformed utf-8 at EOF (closes #65) fixed issue handling malformed utf-8 fixed parser not handling overlong float literals correctly also a few other edge cases (see #65) fixed array iterator conversion error (closes #67) also removed superfluous newline when print ing a table (closes #68) fixed toml::literals namespace ambiguity (closes #69) update issue templates [skip ci] updated CI and doxygen scripts CI tuning disable <charconv> on emscripten (fixes #71) disable global compiler flag when used as subproject (fixes #72) fix formatter not correctly line wrapping in some circumstances fixed useless cast warning on GCC10 also: - removed 'evil macros' test file - updated github templates Make iterators real iterators (#77) They were missing the iterator_category and thus could not be used with some standard algorithms. fixed compile failure on apple clang also: - updated conformance tests - updated submodules - updated windows test targets updated .editorconfig [skip ci] release 2.3.0 update copyright year [skip ci] fix `node::value()` not retrieving `inf` and `nan` correctly fixed missing blank lines between consecutive empty tables/A-o-T also: - added additional value() testsfor inf/nan - added additional formatting tests fixed missing internal macro default minor refactoring to make ICC happy Update TOML version for v1.0.0 release 🎉 fixed dotted kvps being unable to add subtables (fixes #61) also: - fixed extremely weird linker error on linux ICC (fixes #83) - added some missing GNU attributes - added additional tests add cmake files to build and install header only library (#85) * add cmake build and install support export cmake config package too * enable bootstap build without cmake config package cleanup cmake list file restructuring and minor refactoring There's no new functionality here. It's purely tooling + CI stuff: - moved `python` => `tools` - moved documentation images to subfolder - moved `vs/tests` to tests/vs projects - moved `vs` solution etc to root - added semicolons to macros - added cpp.hint to help VS intellisense - migrated documentation generation to external lib add missing badge images [skip ci] CI updates fixed `TOML_CONSTEVAL` breaking on VS 16.10.0pre2 (closes #93) https://developercommunity.visualstudio.com/t/Erroneous-C7595-error-with-consteval-in/1404234 fix spurious warnings with MSVC /Wall (fixes #94) fixed segfault JSON-formatting a failed parse_result (closes #96) also: - fixed config error in example `.vcxproj` files - fixed spurious newline after JSON formatting a table - fixed VS intellisense not detecting TOML_COMPILER_EXCEPTIONS correctly - moved `parse_result` to a separate header - made more internal macros require semicolons - removed some old deprecations - minor documentation fixes documentation fixes documentation fixes, redux Bypass including Windows.h (MultiByteToWideChar/WideCharToMultiByte) (#98) building warning-clean on VS 16.10.0 pre3 also: - made tests build with /Wall on MSVC - fixed minor documentation error fix conflict with Windows.h (closes #99) fix crash with pathologically-nested inputs (closes #100) also: - fixed parse_result natvis - added parse_result default constructor - added nested value limit example to error printer Added CMake FetchContent information removed `<fstream>` requirement for `parse_file` also: - fixed false-positive char_8 support detection on older compilers - removed extraneous `TOML_API` declarations minor config fixes [skip ci] Modernize the CMake build files (#102) List of things that this commit brings: * Makes the project `FetchContent` ready This is achieved by conditionally executing code that is only useful for a consumer of the project, such as examples. * Componentize the install rules Because this is a header-only library, its install rules should be categorized in a dev component (think foo-dev packages in apt). By assigning all install rules to a component, the project no longer clobbers the global component when vendored (see the previous point). * Provide an interface similar to the install interface when vendored This is achieved by adding SYSTEM to the include directories conditionally and only providing targets that are actually needed. * Make the project architecture independant This is achieved by setting the ARCH_INDEPENDENT argument when generating the version config file, which is available since CMake 3.14. This feature is intended to be used for header-only libraries. * Misc changes for trivial packaging The install rules are written in a way that allows package maintainers to trivially package the project. Co-authored-by: friendlyanon <friendlyanon@users.noreply.github.com> Added CMake FetchContent + tar archive downloading (#103) added additional metafunctions also: - reduced bloat by removing unnecessary std::forwards and std::moves - minor cleanup of example code minor documentation fix Restore CMake package config used by Meson (#105) Co-authored-by: friendlyanon <friendlyanon@users.noreply.github.com> documentation updates Add natvis file to cmake install rules (#106) * install natvis file * add contribution to readme add cpp.hint to cmake install also: - documentation updates fixed `TOML_CONSTEVAL` still being broken in MSVC :( fixed linkage error with windows compat mode also: - updated conformance tests allow lowercase 't' and 'z' in datetimes (per spec) also: - updated conformance tests release v2.5.0 fixed an illegal table redefinition edge case (closes #112) also: - fixed incorrect source position in redefinition error messages - updated conformance tests updated conformance tests (see #113) also removed the 'modern C++' meme text from various places build(meson): do not install if used as subproj (#114) build(meson): general improvements and fixes (#115) 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 build(meson): use override_dependency if supported (#116) This improves user experience when using tomlplusplus as a Meson subproject. With this change users will be able to simply call dependency('tomlplusplus') and have Meson automatically resolve the dependency from the subproject if it is not found on the system. Without this, users always have to explicitly call dependency('tomlplusplus', fallback:['tomlplusplus','tomlplusplus_dep']) A lot of saved keystrokes :) project-wide refactoring - moved implementation-only headers to `/impl` - replaced `[[nodiscard]]` with `TOML_NODISCARD` - added `.clang-format` + applied to all files also: - added support for Unicode 14.0 - fixed minor documentation issues - version bump (pre-emptive for next release) fix meson build script breaking with meson 0.60.0 (fixes #121) Fix memory leak (#124) Fix leak occuring when parsing of a value throws an exception. Update docs (#126) Since toml++ is now a wrap, update the docs accordingly. updated github templates [skip ci] added header bookend includes greatly simplified project header structure also: - removed `TOML_LARGE_FILES` - removed unnecessary template machinery (esp. where ostreams were involved) - made all overloaded operators 'hidden friends' - documentation fixes - version bump - this will form the foundation of v3 fixed incorrect clang+GCC flag in meson build script also: - renamed `_impl.h` files to `*.inl` - simplified warning + namespace management boilerplate - applied clang-format to examples - bumped minimum required meson version to `0.54.0` removed internal operator""_sz (ADL is a cruel mistress) also: - applied clang-format to tests - added some missing `TOML_API` removed double-bracket requirement for `toml::table` constructor also: - fixed incorrect `noexcept` specifications on many functions - fixed missing `#include <initializer_list>` - removed unnecessary uses of `final` added formatter indentation flags (closes #120) also: - minor refactoring (esp. GNU attributes) - added documentation about formatters being free to ignore flags where necessary fixed issues with dllexport + extern templates added value flags to array + table insert methods (closes #44) also: - made single header generation script `#pragma once`-aware added `preserve_source_value_flags` also: - fixed natvis file for v3 namespace - small refactors fixed `inf` and `nan` being formatted incorrectly by the `json_formatter` 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) renamed `default_formatter` to `toml_formatter` also: - renamed `TOML_PARSER` option to `TOML_ENABLE_PARSER` - added `TOML_ENABLE_TOML_FORMATTER` option - added `TOML_ENABLE_JSON_FORMATTER` option - added `default_init_flags` param to `array::resize()` removed `final` from `value`, `array` and `table` also: - renamed `TOML_WINDOWS_COMPAT` to `TOML_ENABLE_WINDOWS_COMPAT` - renamed `TOML_UNRELEASED_FEATURES` to `TOML_ENABLE_UNRELEASED_FEATURES` - added additional tests - fixed minor documentation issues added `toml::yaml_formatter` also: - fixed parser not correctly round-tripping int format in some cases - added `TOML_ENABLE_FORMATTERS` option - added `operator->` to `toml::value` - refactoring fixed missing `#include <utility>` also: - added test for `yaml_formatter` - formatter refactoring + cleanup - documentation fixes added `parse_benchmark` example also: - internal parser refactoring big parser + utf8 handling refactor added `array::replace()` (closes #109) also: - minor parser cleanup - updated conformance tests - documentation fixes added clang's enum annotation attributes to all enums also: - added `CHANGELOG.md` added `array::at()` and `table::at()` minor cleanup parser performance improvements also: - updated msvc toolsets - minor documentation updates added `toml::key` (closes #82) also: - added `table::lower_bound()` - added `table::emplace_hint()` - changed `table` key type to `toml::key` - clarified value initializer static assert messages - lots of misc refactoring refactoring added `prune()` to `table` and `array` fixed strong exception guarantee edge-cases also: - added `value` copy+move constructor overloads with flags override `table::ref()` now supports explicit ref categories and cv-qualifiers refactoring added ASan to CI (closes #123) also: - made all wrapped array and table iterator internal conversions explicit - minor example code refactoring fix for internal over-aligned types on apple clang they made their compiler a walled-garden too?? fucking assholes fixed false-positive warning on clang 13 also: - updated conformance tests - CI config tweaks updated conformance tests fixed some incorrect handling of vertical whitespace when printing TOML to streams also: - added `date_time` converting constructors from `date` and `time` - added `is_key<>` and is_key_or_convertible<>` metafunctions - exposed `TOML_NAMESPACE_START` and `TOML_NAMESPACE_END` macros to help with ADL specialization scenarios - added encoder and decoder for `toml-test` (closes #125) fixed incorrect unicode scalar sequence transformations (#125) also: - fixed extended-precision fractional times causing parse error instead of truncating per the spec (closes #127) - fixed some non-spec vertical whitespace being accepted as line breaks (closes #128) - added `format_flags::allow_unicode_strings` fixed date parsing when the year has a leading zero (closes #130) also: - fixed omitting value part from hex/bin/oct being accepted without error (closes #129) - added spec bug github template fixed inline tables being mutable through table headers (closes #131) fixed permissive acceptance of incomplete CRLF at EOF (closes #132)) fixed inconsistent error messages for overlong ints/floats (closes #133) also: - added `at_path()` (closes #118) - added `node_view::operator==` - updated conformance tests fixed integer overflow issues introduced in 3f4a540 closes #134 added `toml::format_flags::relaxed_float_precision` fixed treating non-ASCII horizontal whitespace as valid (closes #135) also: - added `parse_result::at_path()` release v3.0.0 fixed erroneous use of `TOML_API` causing ODR issue (closes #136) added regression test to detect ODR violations release v3.0.1 build(meson): install CMake Config files to datadir (#141) * build(meson): install CMake Config files to datadir Since Meson doesn't yet support CMake's ARCH_INDEPENDENT option, a pre-generated Package Version file is installed instead of generating it at configure time. I've also cleaned up a bit the nearby lines of code. Fixes #140 * build(meson): don't hardcode include in CMake Config refactor: deprecate TOML_API, add more specific defines build(meson): add compile_library option ci: switch to GitHub Actions ci(windows): don't use a container 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). build(meson): use system deps when avalable 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) fixed UB in internal unicode machinery (closes #144) also: - updated conformance tests - added ubsan options to meson.build Add support for `\e` (toml-lang/toml/pull/790) clang 10.0: error: unknown warning group '-Wsuggest-destructor-override' #145 (#146) Co-authored-by: Ivan Shynkarenka <Ivan_Shynkarenka@epam.com> minor refactor CI: add release builds to matrix minor meson refactor 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. ci: fix doxygen generation not running Also took the opportunity to add some sensible filters to the main ci script. Updated support for unicode in bare keys Now matches toml/pull/891. added tests for `visit()` Also some minor refactors. added `for_each()` for tables and arrays also: - refactoring - documentation fixes - updated conformance tests - made submodules shallow fix `for_each()` for older MSVC minor documentation updates tipi.build support for tomlplusplus (#150) removed git submodules to fix various tooling issues (closes #151) - removed submodules in `external/` - vendored `Catch2` and `nlohmann/json directly` - updated conformance test generator to look outside the repo for test sources added meson option `use_vendored_libs` added value type deduction to `emplace()` methods also: - minor CI work made the `toml_generator` example ✨ Not Shit ✨ MSVC used "Emotional Damage". It's super effective! fixed table source columns being off by one closes #152 also other minor refactors Move install rules under PROJECT_IS_TOP_LEVEL (#154) added `toml_merger` example closes #155 feat: add gitter badge on readme relaxed cvref requirements of some functions also: - added additional conformance test (toml/issues/908) - added gitter badge image to docs/images update `toml_merger` example build(meson): Update path for .pc and .cmake files (#165) Thanks for your contribution @diizzyy! Revert "build(meson): Update path for .pc and .cmake files (#165)" (#166) If you want to read the full story please see pull request [#165][], but in short moving files from share/ to lib/ was needed because FreeBSD didn't look for .pc files in share/pkgconfig/. After a quick [discussion][] upstream, FreeBSD's [pkgconf was patched][] to also honour .pc files in share/pkgconfig/. Now that everybody looks for stuff in share/, the commit b1ecdf0 can be reverted, so that stuff like cross-compilation can continue working fine. [#165]: marzer/tomlplusplus#165 [discussion]: https://lists.freebsd.org/archives/freebsd-hackers/2022-July/001355.html [pkgconf was patched]: https://cgit.freebsd.org/ports/commit/?id=d48fab59daa56e0b3b6ffecef57a69c32ae9c0a7 Path (#156) additonal path work - 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) added `TOML_CALLCONV` config option unified internal path parsing using callbacks added `node::operator[]` for `toml::path` also: - added missing relational operators for `source_position` - TOML_CHARCONV cleanup (was too keen) - minor refactors added operator= for path_components to keep component type and value synchronized (#159) * 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 feat(paths): Removed use of std::variant in path_component_value (#161) preprocessor + CI cleanup also: - minor refactors in path - updated conformance tests arm fixes - disambiguated `print_to_stream()` for ints (fixes #167) - relaxed mantissa and digits10 requirements of extended floats fixed spurious `Wnull-dereference` warning on GCC closes #164 removing use of `std::aligned_storage` That shit is deprecated in C++23, yo. documentation + CI updates Update at_path(toml::path) to handle missing component (#168) * test(paths): check at_path handles missing path component * fix(paths): update at_path to handle missing component v3.2.0 fixed parser null deref when exceptions are disabled closes #169 minor doc updates Suppress -Wduplicated-branches (#171) Solves: tomlplusplus/include/toml++/impl/path.h:29:73: warning: this condition has identical branches [-Wduplicated-branches] 29 | (alignof(size_t) < alignof(std::string) ? alignof(std::string) : alignof(size_t)); Fix typo in at_path (#173) * ENH: tests: replacing tabs with '\t'. * NEW: tests: adding tests for `path` Added the test that detects an error in the code. Code fixing in the following commit. * FIX: at_path: typo in `parse_path` Fixing bug in the code. Also fixing `path - parsing` tests. * NEW: readme: update list of contributors docs: fix some Markdown issues (#174) This small patch fixes some minor Markdown issues in the README and CONTRIBUTING files: - Add a blank line before and after block elements like lists and code blocks. This specified in the [original Markdown syntax] document, and can also create some issues with some parsers (see [MD32]). - Add a blank line around headings, for the same reasons as above. - Only use one top-level (H1) heading per document. - Always specify a language in fenced code blocks, so that plugins like highlight.js can correctly highlight them - Remove unused links from the bottom of README.md. [original Markdown syntax]: https://daringfireball.net/projects/markdown/syntax [MD32]: https://github.com/DavidAnson/markdownlint/blob/v0.26.2/doc/Rules.md#md032 docs: replace logo with SVG fixes for latest MSVC also: - minor doc tweaks ci: disable tipi.build minor repo config bits fix typo in docs fixed some `_Float16` detection issues also: - fixed a few minor issues with tests - removed `__fp16` support (it was always broken) "But who warns the warnings?" fixed `toml::parse_file()` on windows for non-ASCII paths see: PrismLauncher/PrismLauncher#226 added `toml::format_flags::terse_key_value_pairs` added `TOML_ENABLE_FLOAT16` config to fix #178 added additional floating-point tests fix build with mingw g++ 10 (#183) Fixes marzer/tomlplusplus#182 build system overhaul Fixes #185 Fixes #186 fix toml-test in ci tentative fix for #189 fixed #187 also: - fixed #188 - fixed #189 - updated conformance tests - version bump Update toml.hpp v3.3.0 do not use inline_recursion if using clang-cl (#192) fixed `value_flags` not preserved during insertion (#108) also: - fixed `toml::value::flags()` not being cleared when `std::move`-ing a value - fixed #195 gh-pages CI fix fixed #108 minor fixes/tweaks update bug report template fixed compiler error when using NVCC fixes #198 misc preprocessor handling fixes update docs fixed gnu symbol visibility for static lib builds (fixes #201) also: - renamed header files to .hpp - updated conformance tests - minor documentation fixes fixed #197 also: - fixed `noexcept(...)` sometimes being incorrectly derived on `for_each() - refactors fixed `FLT_RADIX` check getting broken by MKL fixes #202 improved support for using enums with `value_or()` fixed keys containing `\t` formatting incorrectly fixed keys with `\n` round-tripping incorrectly v3.4.0
new file: .circleci/config.yml 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 added `json_formatter` 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 added iterators for tables and arrays also: - fixed parsing table headers allowing invalid characters - fixed implicit fallthrough warnings - fixed some issues parsing dates and times - added `table::erase` - added `array::operator[]` - added `value::operator*` - added stream operators for date, time and date_time - added `impl::print_to_stream` - added more parsing diagnostics - added many tests moved date and time stuff to separate header also: - merged all the separate integer parsing functions - renamed the member functions of parse_error for clarity - added the beginnings of a doxygen pipeline broke ci :( removing m.css re-adding m.css updated scripts with new m.css path add missing packages for ci added printing for arrays also - added many member functions to `array` - added more documentation - added format_flags - added some additional cleaning steps to `generate_single_header.py` - made formatters work for any node type, not just tables - fixed documentation header obscuring content during jumps added proper non-exhaustive visitor support to node::visit also: - fixed preprocessor snafu - fixed bool `print_to_stream` overload not being selected - added `TOML_SMALL_FLOAT_TYPE` - added is_XXXXX node type metafunctions - added additional API documentation added relops for values, arrays and tables also: - fixed stream operator for node_type - implemented node::visit() noexcept propagation - removed some unnecessary overloads of string-based accessors added insertion operations for tables and arrays 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 added array::get also: - moved node_of to impl namespace - added a lot more documentation - fixed some bugs in the documentation generator - fixed the license ID breaking github's license recognition added value assignment operators also: - added value::value_type - removed format_flags::always_print_as_inline - significantly improved documentation release 0.1.0 - added `toml::is_number<>` - added `toml::node_type::none` - added initializer_list and vector relops to `toml::array` - added constructors for `time_offset` and `date_time` - added much to `node_view` - added tests for `node_view` value relops - added lots more documentation - removed `time_offset::from_hh_mm` - removed the handling of `\s` literals (looks like it's not going be accepted as-is) fixed potential ODR issues relating to exception mode handling (fixes #6) also: - fixed truncation of floating-point values when using ostreams - fixed some minor documentation issues (fixes #8) - fixed missing value deduction guides for dates and times - added serialization round-trip tests (closes #9) - added node::is_number() - added node_view::is_number() - added node_view::value_or() (closes #7) - added hexfloat parsing support for all implementations, not just <charconv> ones renamed value::value_arg_t to value_arg for consistency also: - added major version number to the hidden inline namespace - documentation fixes Added code of conduct [skip ci] Update issue templates [skip ci] Added CONTRIBUTING.md [skip ci] Update README [skip ci] Changed the contrib section to refer to CONTRIBUTING.md added missing operator<< for `parse_error` also: - fixed printing bug in operator << for source_position - improved quality of error messages for boolean and inf/nan parsing - documentation fixes Update README [skip ci] fixed source of UB when using char8 strings also: - documentation improvements - minor test restructuring documentation improvements removed `<cmath>` dependency also: - fixed some pedantic clang warnings - added preliminary support for ICC - documentation fixes added `node::value()` and `node::value_or()` also: - added `node_view::value` - added relops for the date/time classes - added `TOML_ALL_INLINE` and `TOML_IMPLEMENTATION` options - fixed documentation header overflowing on narrow devices Update README [skip ci] added support for compiling into DLLs on windows (`TOML_API`) minor refactoring to better enable explicit instantiations fixed parse_file for string literals (closes #12) also: - decoupled `TOML_EXCEPTION` from ex. mode (closes #13) - added `TOML_OPTIONAL_TYPE` customization point - added tests for a custom optional type - ci refactoring Define tomlplusplus_dep for when included in subproject. Added option BUILD_TESTS, default false. Changed BUILD_TESTS to be a feature option: auto = only if not a subproject added `node::ref()` and `node_view::ref()` (resolves #10) also: - simplified `const` handling in `node_view` minor parsing performance improvements also improved codegen for the utf8_generated functions added error when `TOML_EXCEPTIONS` is 1 but compiler exceptions were disabled fixed ICE in VS2019 when using `/std:c++17` instead of `/std:c++latest` fix some attribute warnings in GCC added support for \xHH escape sequences (unreleased) also: - fixed EOF bug in string parsing when exceptions are disabled - fixed exception mode detection sometimes being incorrect on MSVC - added short-form license preamble to all source files - simplified license files added support for Unicode 13.0 Fix build with GCC 8.2.0 (#15) Fix build with GCC 8.2.0 Co-authored-by: Gábor Kozár <kozar@davinciderivatives.com> fixed compilation on older implementations without std::launder also: - fixed `json_formatter` type deduction on older compilers - added build configuration option for compiling examples minor preprocessor cleanup TOML_GCC_ATTR => TOML_GNU_ATTR added trivial abi attribute to date, time, time_offset also: - included <cassert> directly in 'debug' builds when TOML_ASSERT isn't defined - minor preprocessor cleanup - minor documentation fixes documentation fixes minor documentation fixes narrowed scope of abi namespacing also - simplified `noexcept` specifiers (removed `TOML_MAY_THROW_UNLESS`) - minor documentation fixes minor compilation speed and binary size improvements also: - minor documentation fixes support for upcoming TOML v1.0.0 release see toml-lang/toml#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 meson: Permit installation of toml++ (#16) added operator[], begin(), end() to parse_result in noexcept-mode also: - added note about `#include <fstream>` requirements README - added tests for parse_result - added array and table iterators to the toml namespace Added project homepage note to README [skip ci] minor doxygen tweaks added support for implementations without `<charconv>` (fixes #21) 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 add CI install step for 'locales' fix for CI pipeline failing when compiling runs out of memory ugh honestly make meson pkgconfig module use the correct project name [skip ci] Add the Cmake configuration files support (#22) [skip ci] added build option `GENERATE_CMAKE_CONFIG` [skip ci] also: - minor cleanup minor refactoring in the parser to reduce binary sizes also: - fixed pedantic vtable warnings on clang with -Weverything - renamed `_impl.h` headers to `.hpp` - build system and CI config tweaks fixed printing of inf and nan also: - fixed parser not handling floats with leading '.' characters - added `TOML_PARSER` configuration option - added `TOML_LIB_SINGLE_HEADER` indicator - moved parse_error and the utf8 stream machinery to separate headers - updated catch2 moved preprocessor machinery to a separate header - 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 refactored parser Mainly to simplify a the error handling code (it had gotten a bit verbose), but also to reduce compiled binary sizes. also: - moved windows terminal code page stuff in examples to a separate file fixed some multi-line string parsing issues also: - fixed pedantic warnings on gcc 10 and clang 11 added toml_generator example fix examples breaking CI =/ minor improvements to the wording of some error messages also: - added 'error_printer' example fixed `is_unicode_XXXXXX` functions being wrong in some cases also: - added tests for unicode functions - changed `TOML_LIKELY` semantics to work with gcc-style intrinsics - greatly improved unicode-related codegen - parser refactoring minor improvements to codegen of unicode functions minor code cleanup fixing typo (#26) updated submodules also fixed inline warning spam in gcc10 fixed formatter::print_inline causing compilation failures in windows DLL builds renamed table proxy pair members to `first` and `second` to match STL (closes #30) also: - implemented `table_iterator::operator -> ()` (closes #29) - added `array::resize()` and `array::truncate()` (closes #33) - refactored BOM handling to make static analyzer happy (closes #34) - added `array::capacity()`, `array::shrink_to_fit()`, `array::max_size()` - implemented non-const -> const conversion for table and array iterators fixed weird overflow with BOMs in char8 mode updating toml.hpp v1.3.0 fixed parse failure when parsing an empty file Blank files are in fact totally valid TOML and should not cause a parse failure (fixes #35). fixed multi-line strings being allowed in keys also: - significantly improved the performance of toml::parse_file - improved the performance of printing to streams for deepy-nested TOML data - simplified some of the examples - added more tests - cleaned up some of the test code Adding details for using Conan package manager (#38) [skip ci] Readme updates [skip ci] fixed single-digit negative integer parsing bug (closes #39) also: - fixed overflow for very long binary integer literals - added optimization for parsing string views containing trailing null characters - added more tests fixed std::numeric_limits::max() getting broken by macros in some environments deleted some duplicated preprocessor handling also: - updated test and dox submodules - updated README CI: update node docker image Update README [skip ci] minor preprocessor/doxygen cleanup documentation improvements - updated TOML links to new toml.io website - refactored the main page more preprocessor cleanup - fixing 'unknown pragma' warnings in GCC - cleaning up test structure fixed BOM check causing EOF on very short iostream inputs also fixed a number of small parsing conformance issues updating submodules fixed ML strings not allowing whitespace after line-ending backslashes also: - fixed value comparison with special floats - added all the remaining conformance tests from BurntSushi/toml-test and iarna/toml-spec-tests - added toml::inserter - added license boilerplate to test files added rvalue overload of array::flatten also: - made array::flatten return a reference to the array - minor documentation fixes fixed streamsize conversion warning on ARM simplified test code to reduce bloat and improve compile times refactoring parser to reduce binary sizes Basically boils down to eliminating excessive template instantiations. documentation improvements - moved the main page to a separate dox file - added integration section to homepage - improved some of the examples - formatting fixes - added note about python wrapper (closes #36) documentation improvements and minor cleanup - split conformance tests into multiple TU's - added "Try this code on Compiler Explorer" links to the main page - minor preprocessor cleanup string value serialization now emits literals where possible (closes #43) 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 expanded allowable conversion semantics of value and value_or 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 fixed narrowing conversion warnings when constructing int values from unsigned 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 Add more VS debug visualizers (#46) - Added natvis entries for toml::table, toml::array, parse_result, and parse_error renamed date_time::time_offset to just 'offset' also: - fixed natvis for date, time, time_offset, date_time deprecated parse_result::get() in favour of parse_result::table() also: - fixed static assert messages being badly formatted on clang - minor documentation fixes - updated version numbers fixed leading/trailing newlines with printing to ostreams (fixes #48) also: - change internal nan constant to match qNaN bits on x86/ARM fixed Wcast-align warning spam on ARM improved support for __fp16, _Float16 and __float128 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 fix include guard regression in toml.hpp generator fixed array::insert not working correctly in some cases also: - improved the documentation for table and array - fixed documentation font on mobile added copy construction/assignment for arrays. tables and values In service of satisfying #49. added insert, emplace, push_back etc. compatibility with node_views In service of satisfying #49. fix godbolt links in documentation fix node::value_or() to act like node::value() (#50) auto table = toml::table{{{"value", 10}}}; const toml::node *value = table.get("value"); if(value && value->is_number()) { double number = value->value_or<double>(0); cout << number << endl; } The original output was 0. This change will output 10.0. The old way would see that it was an integer (a native type), then use the integer conversion, but since the type being requested was a double, it would return the default value. fixed source information being copied when copying nodes also: - many minor documentation fixes - added pull request template moved the unicode function generator stuff to another repo also: - updated github templates added tests for copying and insertion (closes #49) also: - added tests to catch any regressions of pull/50 - moved UTF-8 decoder copyright notice - cleaned up static assert messages moved is_homogenous to toml::node also: - added is_homogenous overload for identifying failure-causing element (to assist with implementing #45) - added table::is_homogenous - added value::is_homogenous (just for generic code's sake) fix some issues handling infinities and NaNs fixes #51 regenerated unicode functions minor cleanup mostly for testing on ICC. Add implicit conversion operator from node to node_view (#52) - Creates a node_view pointing to that node. This is similar to how std::string has a conversion operator creating a string_view of the string. - Also, enabled the move assignment operator for node_view, but made both copy and move assignment operators lvalue-only to avoid the "misleading assignment" issue (see marzer/tomlplusplus#49 (comment)) updated TOML version to v1.0.0-rc.2 also: - simplified warning handling macros - minor version bump cleaned up some compiler warning management spam also: - removed `std::endl` from example code in documentation - trimmed some fat from the toml.hpp generator Update README [skip ci] added additional node_view constructors also made node conversion operators explicit Added more explicit control over budget in toml_generator example added set information to CONTRIBUTING also updated windows test targets to use /MP fixes for VS2017 (closes #55) fixed _Float16 erroneously supported on g++ (closes #57) Updated github templates [skip ci] meson refactoring - 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 added value_flags Allows controlling the output format of integers, and round-trips their format when serializing after parsing. minor cleanup and code review meson: Install CMake and pkg-config files into architecture-independe… (#60) toml++ is header-only so these should be installed into architecture-independent directories to allow them to be found for crosscompiling regardless of the architecture they were installed on. Fixes #59. Rename Windows.h to windows.h for mingw-w64 (#63) Co-authored-by: Reza Housseini <reza.housseini@mecos.com> fixed parser memory leak (fixes #64) also: - build/infra improvements - updated submodules - updated conformance tests - misc code review/refactors - library version bump - TOML version bump correct version numbers in dox fixed issue handling malformed utf-8 at EOF (closes #65) fixed issue handling malformed utf-8 fixed parser not handling overlong float literals correctly also a few other edge cases (see #65) fixed array iterator conversion error (closes #67) also removed superfluous newline when print ing a table (closes #68) fixed toml::literals namespace ambiguity (closes #69) update issue templates [skip ci] updated CI and doxygen scripts CI tuning disable <charconv> on emscripten (fixes #71) disable global compiler flag when used as subproject (fixes #72) fix formatter not correctly line wrapping in some circumstances fixed useless cast warning on GCC10 also: - removed 'evil macros' test file - updated github templates Make iterators real iterators (#77) They were missing the iterator_category and thus could not be used with some standard algorithms. fixed compile failure on apple clang also: - updated conformance tests - updated submodules - updated windows test targets updated .editorconfig [skip ci] release 2.3.0 update copyright year [skip ci] fix `node::value()` not retrieving `inf` and `nan` correctly fixed missing blank lines between consecutive empty tables/A-o-T also: - added additional value() testsfor inf/nan - added additional formatting tests fixed missing internal macro default minor refactoring to make ICC happy Update TOML version for v1.0.0 release 🎉 fixed dotted kvps being unable to add subtables (fixes #61) also: - fixed extremely weird linker error on linux ICC (fixes #83) - added some missing GNU attributes - added additional tests add cmake files to build and install header only library (#85) * add cmake build and install support export cmake config package too * enable bootstap build without cmake config package cleanup cmake list file restructuring and minor refactoring There's no new functionality here. It's purely tooling + CI stuff: - moved `python` => `tools` - moved documentation images to subfolder - moved `vs/tests` to tests/vs projects - moved `vs` solution etc to root - added semicolons to macros - added cpp.hint to help VS intellisense - migrated documentation generation to external lib add missing badge images [skip ci] CI updates fixed `TOML_CONSTEVAL` breaking on VS 16.10.0pre2 (closes #93) https://developercommunity.visualstudio.com/t/Erroneous-C7595-error-with-consteval-in/1404234 fix spurious warnings with MSVC /Wall (fixes #94) fixed segfault JSON-formatting a failed parse_result (closes #96) also: - fixed config error in example `.vcxproj` files - fixed spurious newline after JSON formatting a table - fixed VS intellisense not detecting TOML_COMPILER_EXCEPTIONS correctly - moved `parse_result` to a separate header - made more internal macros require semicolons - removed some old deprecations - minor documentation fixes documentation fixes documentation fixes, redux Bypass including Windows.h (MultiByteToWideChar/WideCharToMultiByte) (#98) building warning-clean on VS 16.10.0 pre3 also: - made tests build with /Wall on MSVC - fixed minor documentation error fix conflict with Windows.h (closes #99) fix crash with pathologically-nested inputs (closes #100) also: - fixed parse_result natvis - added parse_result default constructor - added nested value limit example to error printer Added CMake FetchContent information removed `<fstream>` requirement for `parse_file` also: - fixed false-positive char_8 support detection on older compilers - removed extraneous `TOML_API` declarations minor config fixes [skip ci] Modernize the CMake build files (#102) List of things that this commit brings: * Makes the project `FetchContent` ready This is achieved by conditionally executing code that is only useful for a consumer of the project, such as examples. * Componentize the install rules Because this is a header-only library, its install rules should be categorized in a dev component (think foo-dev packages in apt). By assigning all install rules to a component, the project no longer clobbers the global component when vendored (see the previous point). * Provide an interface similar to the install interface when vendored This is achieved by adding SYSTEM to the include directories conditionally and only providing targets that are actually needed. * Make the project architecture independant This is achieved by setting the ARCH_INDEPENDENT argument when generating the version config file, which is available since CMake 3.14. This feature is intended to be used for header-only libraries. * Misc changes for trivial packaging The install rules are written in a way that allows package maintainers to trivially package the project. Co-authored-by: friendlyanon <friendlyanon@users.noreply.github.com> Added CMake FetchContent + tar archive downloading (#103) added additional metafunctions also: - reduced bloat by removing unnecessary std::forwards and std::moves - minor cleanup of example code minor documentation fix Restore CMake package config used by Meson (#105) Co-authored-by: friendlyanon <friendlyanon@users.noreply.github.com> documentation updates Add natvis file to cmake install rules (#106) * install natvis file * add contribution to readme add cpp.hint to cmake install also: - documentation updates fixed `TOML_CONSTEVAL` still being broken in MSVC :( fixed linkage error with windows compat mode also: - updated conformance tests allow lowercase 't' and 'z' in datetimes (per spec) also: - updated conformance tests release v2.5.0 fixed an illegal table redefinition edge case (closes #112) also: - fixed incorrect source position in redefinition error messages - updated conformance tests updated conformance tests (see #113) also removed the 'modern C++' meme text from various places build(meson): do not install if used as subproj (#114) build(meson): general improvements and fixes (#115) 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 build(meson): use override_dependency if supported (#116) This improves user experience when using tomlplusplus as a Meson subproject. With this change users will be able to simply call dependency('tomlplusplus') and have Meson automatically resolve the dependency from the subproject if it is not found on the system. Without this, users always have to explicitly call dependency('tomlplusplus', fallback:['tomlplusplus','tomlplusplus_dep']) A lot of saved keystrokes :) project-wide refactoring - moved implementation-only headers to `/impl` - replaced `[[nodiscard]]` with `TOML_NODISCARD` - added `.clang-format` + applied to all files also: - added support for Unicode 14.0 - fixed minor documentation issues - version bump (pre-emptive for next release) fix meson build script breaking with meson 0.60.0 (fixes #121) Fix memory leak (#124) Fix leak occuring when parsing of a value throws an exception. Update docs (#126) Since toml++ is now a wrap, update the docs accordingly. updated github templates [skip ci] added header bookend includes greatly simplified project header structure also: - removed `TOML_LARGE_FILES` - removed unnecessary template machinery (esp. where ostreams were involved) - made all overloaded operators 'hidden friends' - documentation fixes - version bump - this will form the foundation of v3 fixed incorrect clang+GCC flag in meson build script also: - renamed `_impl.h` files to `*.inl` - simplified warning + namespace management boilerplate - applied clang-format to examples - bumped minimum required meson version to `0.54.0` removed internal operator""_sz (ADL is a cruel mistress) also: - applied clang-format to tests - added some missing `TOML_API` removed double-bracket requirement for `toml::table` constructor also: - fixed incorrect `noexcept` specifications on many functions - fixed missing `#include <initializer_list>` - removed unnecessary uses of `final` added formatter indentation flags (closes #120) also: - minor refactoring (esp. GNU attributes) - added documentation about formatters being free to ignore flags where necessary fixed issues with dllexport + extern templates added value flags to array + table insert methods (closes #44) also: - made single header generation script `#pragma once`-aware added `preserve_source_value_flags` also: - fixed natvis file for v3 namespace - small refactors fixed `inf` and `nan` being formatted incorrectly by the `json_formatter` 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) renamed `default_formatter` to `toml_formatter` also: - renamed `TOML_PARSER` option to `TOML_ENABLE_PARSER` - added `TOML_ENABLE_TOML_FORMATTER` option - added `TOML_ENABLE_JSON_FORMATTER` option - added `default_init_flags` param to `array::resize()` removed `final` from `value`, `array` and `table` also: - renamed `TOML_WINDOWS_COMPAT` to `TOML_ENABLE_WINDOWS_COMPAT` - renamed `TOML_UNRELEASED_FEATURES` to `TOML_ENABLE_UNRELEASED_FEATURES` - added additional tests - fixed minor documentation issues added `toml::yaml_formatter` also: - fixed parser not correctly round-tripping int format in some cases - added `TOML_ENABLE_FORMATTERS` option - added `operator->` to `toml::value` - refactoring fixed missing `#include <utility>` also: - added test for `yaml_formatter` - formatter refactoring + cleanup - documentation fixes added `parse_benchmark` example also: - internal parser refactoring big parser + utf8 handling refactor added `array::replace()` (closes #109) also: - minor parser cleanup - updated conformance tests - documentation fixes added clang's enum annotation attributes to all enums also: - added `CHANGELOG.md` added `array::at()` and `table::at()` minor cleanup parser performance improvements also: - updated msvc toolsets - minor documentation updates added `toml::key` (closes #82) also: - added `table::lower_bound()` - added `table::emplace_hint()` - changed `table` key type to `toml::key` - clarified value initializer static assert messages - lots of misc refactoring refactoring added `prune()` to `table` and `array` fixed strong exception guarantee edge-cases also: - added `value` copy+move constructor overloads with flags override `table::ref()` now supports explicit ref categories and cv-qualifiers refactoring added ASan to CI (closes #123) also: - made all wrapped array and table iterator internal conversions explicit - minor example code refactoring fix for internal over-aligned types on apple clang they made their compiler a walled-garden too?? fucking assholes fixed false-positive warning on clang 13 also: - updated conformance tests - CI config tweaks updated conformance tests fixed some incorrect handling of vertical whitespace when printing TOML to streams also: - added `date_time` converting constructors from `date` and `time` - added `is_key<>` and is_key_or_convertible<>` metafunctions - exposed `TOML_NAMESPACE_START` and `TOML_NAMESPACE_END` macros to help with ADL specialization scenarios - added encoder and decoder for `toml-test` (closes #125) fixed incorrect unicode scalar sequence transformations (#125) also: - fixed extended-precision fractional times causing parse error instead of truncating per the spec (closes #127) - fixed some non-spec vertical whitespace being accepted as line breaks (closes #128) - added `format_flags::allow_unicode_strings` fixed date parsing when the year has a leading zero (closes #130) also: - fixed omitting value part from hex/bin/oct being accepted without error (closes #129) - added spec bug github template fixed inline tables being mutable through table headers (closes #131) fixed permissive acceptance of incomplete CRLF at EOF (closes #132)) fixed inconsistent error messages for overlong ints/floats (closes #133) also: - added `at_path()` (closes #118) - added `node_view::operator==` - updated conformance tests fixed integer overflow issues introduced in 3f4a540 closes #134 added `toml::format_flags::relaxed_float_precision` fixed treating non-ASCII horizontal whitespace as valid (closes #135) also: - added `parse_result::at_path()` release v3.0.0 fixed erroneous use of `TOML_API` causing ODR issue (closes #136) added regression test to detect ODR violations release v3.0.1 build(meson): install CMake Config files to datadir (#141) * build(meson): install CMake Config files to datadir Since Meson doesn't yet support CMake's ARCH_INDEPENDENT option, a pre-generated Package Version file is installed instead of generating it at configure time. I've also cleaned up a bit the nearby lines of code. Fixes #140 * build(meson): don't hardcode include in CMake Config refactor: deprecate TOML_API, add more specific defines build(meson): add compile_library option ci: switch to GitHub Actions ci(windows): don't use a container 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). build(meson): use system deps when avalable 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) fixed UB in internal unicode machinery (closes #144) also: - updated conformance tests - added ubsan options to meson.build Add support for `\e` (toml-lang/toml/pull/790) clang 10.0: error: unknown warning group '-Wsuggest-destructor-override' #145 (#146) Co-authored-by: Ivan Shynkarenka <Ivan_Shynkarenka@epam.com> minor refactor CI: add release builds to matrix minor meson refactor 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. ci: fix doxygen generation not running Also took the opportunity to add some sensible filters to the main ci script. Updated support for unicode in bare keys Now matches toml/pull/891. added tests for `visit()` Also some minor refactors. added `for_each()` for tables and arrays also: - refactoring - documentation fixes - updated conformance tests - made submodules shallow fix `for_each()` for older MSVC minor documentation updates tipi.build support for tomlplusplus (#150) removed git submodules to fix various tooling issues (closes #151) - removed submodules in `external/` - vendored `Catch2` and `nlohmann/json directly` - updated conformance test generator to look outside the repo for test sources added meson option `use_vendored_libs` added value type deduction to `emplace()` methods also: - minor CI work made the `toml_generator` example ✨ Not Shit ✨ MSVC used "Emotional Damage". It's super effective! fixed table source columns being off by one closes #152 also other minor refactors Move install rules under PROJECT_IS_TOP_LEVEL (#154) added `toml_merger` example closes #155 feat: add gitter badge on readme relaxed cvref requirements of some functions also: - added additional conformance test (toml/issues/908) - added gitter badge image to docs/images update `toml_merger` example build(meson): Update path for .pc and .cmake files (#165) Thanks for your contribution @diizzyy! Revert "build(meson): Update path for .pc and .cmake files (#165)" (#166) If you want to read the full story please see pull request [#165][], but in short moving files from share/ to lib/ was needed because FreeBSD didn't look for .pc files in share/pkgconfig/. After a quick [discussion][] upstream, FreeBSD's [pkgconf was patched][] to also honour .pc files in share/pkgconfig/. Now that everybody looks for stuff in share/, the commit b1ecdf0 can be reverted, so that stuff like cross-compilation can continue working fine. [#165]: marzer/tomlplusplus#165 [discussion]: https://lists.freebsd.org/archives/freebsd-hackers/2022-July/001355.html [pkgconf was patched]: https://cgit.freebsd.org/ports/commit/?id=d48fab59daa56e0b3b6ffecef57a69c32ae9c0a7 Path (#156) additonal path work - 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) added `TOML_CALLCONV` config option unified internal path parsing using callbacks added `node::operator[]` for `toml::path` also: - added missing relational operators for `source_position` - TOML_CHARCONV cleanup (was too keen) - minor refactors added operator= for path_components to keep component type and value synchronized (#159) * 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 feat(paths): Removed use of std::variant in path_component_value (#161) preprocessor + CI cleanup also: - minor refactors in path - updated conformance tests arm fixes - disambiguated `print_to_stream()` for ints (fixes #167) - relaxed mantissa and digits10 requirements of extended floats fixed spurious `Wnull-dereference` warning on GCC closes #164 removing use of `std::aligned_storage` That shit is deprecated in C++23, yo. documentation + CI updates Update at_path(toml::path) to handle missing component (#168) * test(paths): check at_path handles missing path component * fix(paths): update at_path to handle missing component v3.2.0 fixed parser null deref when exceptions are disabled closes #169 minor doc updates Suppress -Wduplicated-branches (#171) Solves: tomlplusplus/include/toml++/impl/path.h:29:73: warning: this condition has identical branches [-Wduplicated-branches] 29 | (alignof(size_t) < alignof(std::string) ? alignof(std::string) : alignof(size_t)); Fix typo in at_path (#173) * ENH: tests: replacing tabs with '\t'. * NEW: tests: adding tests for `path` Added the test that detects an error in the code. Code fixing in the following commit. * FIX: at_path: typo in `parse_path` Fixing bug in the code. Also fixing `path - parsing` tests. * NEW: readme: update list of contributors docs: fix some Markdown issues (#174) This small patch fixes some minor Markdown issues in the README and CONTRIBUTING files: - Add a blank line before and after block elements like lists and code blocks. This specified in the [original Markdown syntax] document, and can also create some issues with some parsers (see [MD32]). - Add a blank line around headings, for the same reasons as above. - Only use one top-level (H1) heading per document. - Always specify a language in fenced code blocks, so that plugins like highlight.js can correctly highlight them - Remove unused links from the bottom of README.md. [original Markdown syntax]: https://daringfireball.net/projects/markdown/syntax [MD32]: https://github.com/DavidAnson/markdownlint/blob/v0.26.2/doc/Rules.md#md032 docs: replace logo with SVG fixes for latest MSVC also: - minor doc tweaks ci: disable tipi.build minor repo config bits fix typo in docs fixed some `_Float16` detection issues also: - fixed a few minor issues with tests - removed `__fp16` support (it was always broken) "But who warns the warnings?" fixed `toml::parse_file()` on windows for non-ASCII paths see: PrismLauncher/PrismLauncher#226 added `toml::format_flags::terse_key_value_pairs` added `TOML_ENABLE_FLOAT16` config to fix #178 added additional floating-point tests fix build with mingw g++ 10 (#183) Fixes marzer/tomlplusplus#182 build system overhaul Fixes #185 Fixes #186 fix toml-test in ci tentative fix for #189 fixed #187 also: - fixed #188 - fixed #189 - updated conformance tests - version bump Update toml.hpp v3.3.0 do not use inline_recursion if using clang-cl (#192) fixed `value_flags` not preserved during insertion (#108) also: - fixed `toml::value::flags()` not being cleared when `std::move`-ing a value - fixed #195 gh-pages CI fix fixed #108 minor fixes/tweaks update bug report template fixed compiler error when using NVCC fixes #198 misc preprocessor handling fixes update docs fixed gnu symbol visibility for static lib builds (fixes #201) also: - renamed header files to .hpp - updated conformance tests - minor documentation fixes fixed #197 also: - fixed `noexcept(...)` sometimes being incorrectly derived on `for_each() - refactors fixed `FLT_RADIX` check getting broken by MKL fixes #202 improved support for using enums with `value_or()` fixed keys containing `\t` formatting incorrectly fixed keys with `\n` round-tripping incorrectly v3.4.0
This adds a shorthand for the escape character
\e
(0x1B).This is useful especially when talking about things like terminal escape
sequences, which use this character regularly.
Fixes #715.