Commit Graph

132 Commits

Author SHA1 Message Date
Tristan Jones
fa8b6d472e
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
2022-06-10 23:03:40 +03:00
Mark Gillard
0f5d986df1 added TOML_CALLCONV config option 2022-06-06 12:21:46 +03:00
Mark Gillard
3f4acc7c32 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)
2022-06-05 00:14:50 +03:00
Mark Gillard
f4c2749179 Merge branch 'master' into paths 2022-06-04 16:50:20 +03:00
Tristan Jones
65d4b84710
Path (#156) 2022-06-04 16:49:26 +03:00
Mark Gillard
6126437d6c relaxed cvref requirements of some functions
also:
- added additional conformance test (toml/issues/908)
- added gitter badge image to docs/images
2022-05-31 14:02:01 +03:00
Mark Gillard
39b80f6c56 fixed table source columns being off by one
closes #152

also other minor refactors
2022-05-14 15:22:21 +03:00
Mark Gillard
27816dbbd1 added meson option use_vendored_libs 2022-05-01 15:09:09 +03:00
Mark Gillard
e47ef8cfb2 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
2022-05-01 12:20:03 +03:00
Mark Gillard
bf13bbd42e added for_each() for tables and arrays
also:
- refactoring
- documentation fixes
- updated conformance tests
- made submodules shallow
2022-04-24 21:02:55 +03:00
Mark Gillard
db04ac8918 added tests for visit()
Also some minor refactors.
2022-04-23 17:28:25 +03:00
Mark Gillard
af637f7e89 Updated support for unicode in bare keys
Now matches toml/pull/891.
2022-04-23 12:58:15 +03:00
Mark Gillard
2c5580c71d 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.
2022-04-22 22:44:52 +03:00
Mark Gillard
6e7942788d minor refactor 2022-04-18 12:27:54 +03:00
Mark Gillard
5b79305c6e Add support for \e (toml-lang/toml/pull/790) 2022-03-06 16:09:14 +02:00
Mark Gillard
1c26ce1dcf fixed UB in internal unicode machinery (closes #144)
also:
- updated conformance tests
- added ubsan options to meson.build
2022-02-26 18:07:11 +02:00
Andrea Pappacoda
36030cace8 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)
2022-02-17 22:45:07 +02:00
Andrea Pappacoda
029160c280 build(meson): add compile_library option 2022-02-12 22:04:16 +02:00
Andrea Pappacoda
5e6008329f refactor: deprecate TOML_API, add more specific defines 2022-02-12 22:04:16 +02:00
Mark Gillard
8e669aa699 release v3.0.1 2022-01-13 12:09:07 +02:00
Mark Gillard
71b57a3238 added regression test to detect ODR violations 2022-01-13 01:24:09 +02:00
Mark Gillard
e37e6d2bce fixed treating non-ASCII horizontal whitespace as valid (closes #135)
also:
- added `parse_result::at_path()`
2022-01-09 13:01:56 +02:00
Mark Gillard
cdf85a9b60 added toml::format_flags::relaxed_float_precision 2022-01-08 16:32:06 +02:00
Mark Gillard
f6ce95907e fixed integer overflow issues introduced in 3f4a540
closes #134
2022-01-08 15:17:12 +02:00
Mark Gillard
3f4a540ca6 fixed inconsistent error messages for overlong ints/floats (closes #133)
also:
- added `at_path()` (closes #118)
- added `node_view::operator==`
- updated conformance tests
2022-01-08 00:08:31 +02:00
Mark Gillard
47241d003e fixed permissive acceptance of incomplete CRLF at EOF (closes #132)) 2022-01-05 18:10:50 +02:00
Mark Gillard
7d3770df92 fixed inline tables being mutable through table headers (closes #131) 2022-01-05 16:56:08 +02:00
Mark Gillard
de2413e0ef 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
2022-01-05 12:45:59 +02:00
Mark Gillard
b41e12f736 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`
2022-01-04 23:58:22 +02:00
Mark Gillard
f3bd22bff4 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)
2022-01-03 21:01:32 +02:00
Mark Gillard
d9473b85da updated conformance tests 2022-01-02 21:35:26 +02:00
Mark Gillard
3a22b7c237 fixed false-positive warning on clang 13
also:
- updated conformance tests
- CI config tweaks
2021-12-12 15:01:35 +02:00
Mark Gillard
ad4ae98af0 added ASan to CI (closes #123)
also:
- made all wrapped array and table iterator internal conversions explicit
- minor example code refactoring
2021-11-25 20:20:22 +02:00
Mark Gillard
9066ac7d01 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
2021-11-14 19:24:19 +02:00
Mark Gillard
32df34add2 added prune() to table and array 2021-11-12 20:21:02 +02:00
Mark Gillard
209e9b6faa 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
2021-11-10 22:07:05 +02:00
Mark Gillard
6808825d3f parser performance improvements
also:
- updated msvc toolsets
- minor documentation updates
2021-11-09 13:08:36 +02:00
Mark Gillard
9783a94ed4 minor cleanup 2021-11-07 22:33:02 +02:00
Mark Gillard
76e681da4d added array::at() and table::at() 2021-11-07 21:25:42 +02:00
Mark Gillard
aa645dd88c added array::replace() (closes #109)
also:
- minor parser cleanup
- updated conformance tests
- documentation fixes
2021-11-06 18:59:47 +02:00
Mark Gillard
16d7ba8480 big parser + utf8 handling refactor 2021-11-05 00:43:42 +02:00
Mark Gillard
ff6f184d30 added parse_benchmark example
also:
- internal parser refactoring
2021-11-04 11:56:03 +02:00
Mark Gillard
f94de96928 fixed missing #include <utility>
also:
- added test for `yaml_formatter`
- formatter refactoring + cleanup
- documentation fixes
2021-11-03 19:11:55 +02:00
Mark Gillard
7b50df796f 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
2021-11-03 12:18:53 +02:00
Mark Gillard
0ffd23d73f 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
2021-10-31 17:58:42 +02:00
Mark Gillard
87d6c7eef1 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()`
2021-10-30 15:56:14 +03:00
Mark Gillard
f2fe57d21f 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)
2021-10-29 23:59:53 +03:00
Mark Gillard
18dfcf2314 added formatter indentation flags (closes #120)
also:
- minor refactoring (esp. GNU attributes)
- added documentation about formatters being free to ignore flags where necessary
2021-10-27 16:10:57 +03:00
Mark Gillard
bd9944a31a 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`
2021-10-26 23:53:27 +03:00
Mark Gillard
dbc078202d removed internal operator""_sz (ADL is a cruel mistress)
also:
- applied clang-format to tests
- added some missing `TOML_API`
2021-10-26 16:49:23 +03:00