Commit Graph

83 Commits

Author SHA1 Message Date
Mark Gillard
30172438ce v3.4.0 2023-10-13 16:39:42 +03:00
Mark Gillard
c635f218c0 v3.3.0 2023-01-29 18:28:28 +02:00
Mark Gillard
d8bb7176d5 fix toml-test in ci 2023-01-22 22:26:45 +02:00
Mark Gillard
2b770b19cc build system overhaul
Fixes #185
Fixes #186
2023-01-22 22:02:20 +02:00
Mark Gillard
0a90913abf added TOML_ENABLE_FLOAT16 config to fix #178 2022-11-15 21:38:28 +02:00
Mark Gillard
c8780a5b8e fixed some _Float16 detection issues
also:
- fixed a few minor issues with tests
- removed `__fp16` support (it was always broken)
2022-10-17 20:08:26 +03:00
Mark Gillard
4b166b69f2 v3.2.0 2022-08-30 00:04:04 +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
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
4bd9bda09f
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
2022-02-02 16:01:52 +02:00
Mark Gillard
8e669aa699 release v3.0.1 2022-01-13 12:09:07 +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
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
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
7da912c45e 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`
2021-10-26 00:53:57 +03:00
Mark Gillard
337aa82017 Merge branch 'master' into v3 2021-10-25 22:24:25 +03:00
Mark Gillard
47216c8a73 fix meson build script breaking with meson 0.60.0 (fixes #121) 2021-10-25 22:15:23 +03:00
Mark Gillard
516b8e2096 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
2021-10-25 01:04:23 +03:00
Mark Gillard
ca76e5d571 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)
2021-10-23 18:20:49 +03:00
Andrea Pappacoda
fe28ec8d24
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 :)
2021-09-22 19:53:27 +03:00
Andrea Pappacoda
73870cef54
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
2021-09-22 09:47:15 +03:00
Andrea Pappacoda
6bfdc14b23
build(meson): do not install if used as subproj (#114) 2021-09-21 16:57:05 +03:00
Mark Gillard
9aa7cd8218 updated conformance tests (see #113)
also removed the 'modern C++' meme text from various places
2021-09-07 20:02:00 +03:00
Mark Gillard
037bfdd21f release v2.5.0 2021-08-11 18:42:00 +03:00
Mark Gillard
1baad21734 removed <fstream> requirement for parse_file
also:
- fixed false-positive char_8 support detection on older compilers
- removed extraneous `TOML_API` declarations
2021-05-19 14:36:25 +03:00
Mark Gillard
53f29d9365 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
2021-04-18 22:58:41 +03:00
Mark Gillard
b11f28af78 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
2021-01-16 12:59:10 +02:00
Mark Gillard
4face4d5bf release 2.3.0 2020-12-29 11:22:22 +02:00
Mark Gillard
ea064da16d fixed useless cast warning on GCC10
also:
- removed 'evil macros' test file
- updated github templates
2020-12-15 13:39:58 +02:00
Mark Gillard
9ea4438fc4 disable global compiler flag when used as subproject (fixes #72) 2020-12-09 09:48:02 +02:00
Mark Gillard
8d3390faa2 updated CI and doxygen scripts 2020-10-30 15:09:28 +02:00
Mark Gillard
fe0ac89500 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
2020-10-09 11:44:40 +03:00
Raul Tambre
248e6031cf
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.
2020-09-17 15:16:36 +03:00
Mark Gillard
1381240e10 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
2020-09-05 13:26:12 +03:00
Mark Gillard
2ac735054a updated TOML version to v1.0.0-rc.2
also:
- simplified warning handling macros
- minor version bump
2020-08-09 12:32:17 +03:00
Mark Gillard
ad6be8e51e minor cleanup
mostly for testing on ICC.
2020-08-08 20:51:33 +03:00
Mark Gillard
fd07301bae 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
2020-07-25 20:50:24 +03:00
Mark Gillard
ca6f639fb9 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
2020-07-20 00:40:55 +03:00
Mark Gillard
cb791fe0ef 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
2020-07-17 16:33:56 +03:00
Mark Gillard
de07ba7187 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
2020-07-14 20:50:24 +03:00
Mark Gillard
8d958fcc54 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
2020-07-06 01:03:07 +03:00
Mark Gillard
f52949a481 refactoring parser to reduce binary sizes
Basically boils down to eliminating excessive template instantiations.
2020-06-29 17:49:48 +03:00
Mark Gillard
761690d4a6 fixed BOM check causing EOF on very short iostream inputs
also fixed a number of small parsing conformance issues
2020-06-25 17:33:01 +03:00
Mark Gillard
ab85988d59 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
2020-06-19 14:17:52 +03:00
Mark Gillard
da024510c5 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).
2020-06-07 16:28:08 +03:00
Mark Gillard
3792093d09 v1.3.0 2020-06-02 18:49:16 +03:00