- 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 https://github.com/marzer/tomlplusplus/issues/49#issuecomment-664432777)
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.
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
- 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)
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
also:
- fixed overflow for very long binary integer literals
- added optimization for parsing string views containing trailing null characters
- added more tests
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
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
- 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 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
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
also:
- added note about `#include <fstream>` requirements README
- added tests for parse_result
- added array and table iterators to the toml namespace
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:
- 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
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 printing bug in operator << for source_position
- improved quality of error messages for boolean and inf/nan parsing
- documentation fixes
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
- 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)
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
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 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
also:
- merged all the separate integer parsing functions
- renamed the member functions of parse_error for clarity
- added the beginnings of a doxygen pipeline
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