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
This commit is contained in:
Mark Gillard 2021-04-18 15:04:46 +03:00
parent dcfab29e70
commit 53f29d9365
128 changed files with 3210 additions and 4749 deletions

View File

@ -4,19 +4,19 @@ jobs:
debug_clang: debug_clang:
docker: docker:
- image: marzer/misc_cpp17_dev:0.2.0 - image: marzer/cpp_dev:0.1.0
resource_class: large resource_class: large
steps: steps:
- checkout - checkout
- run: - run:
name: Checking toml.hpp name: Checking toml.hpp
command: | command: |
cd python && python3 ci_single_header_check.py cd tools && python3 ci_single_header_check.py
- run: - run:
name: Pulling submodules name: Pulling submodules
command: | command: |
git submodule update --init extern/Catch2 git submodule update --init --depth 1 external/Catch2
git submodule update --init extern/tloptional git submodule update --init --depth 1 external/tloptional
- run: - run:
name: Building and testing with clang name: Building and testing with clang
command: | command: |
@ -25,19 +25,19 @@ jobs:
release_clang: release_clang:
docker: docker:
- image: marzer/misc_cpp17_dev:0.2.0 - image: marzer/cpp_dev:0.1.0
resource_class: large resource_class: large
steps: steps:
- checkout - checkout
- run: - run:
name: Checking toml.hpp name: Checking toml.hpp
command: | command: |
cd python && python3 ci_single_header_check.py cd tools && python3 ci_single_header_check.py
- run: - run:
name: Pulling submodules name: Pulling submodules
command: | command: |
git submodule update --init extern/Catch2 git submodule update --init --depth 1 external/Catch2
git submodule update --init extern/tloptional git submodule update --init --depth 1 external/tloptional
- run: - run:
name: Building and testing with clang name: Building and testing with clang
command: | command: |
@ -46,15 +46,15 @@ jobs:
debug_gcc: debug_gcc:
docker: docker:
- image: marzer/misc_cpp17_dev:0.2.0 - image: marzer/cpp_dev:0.1.0
resource_class: large resource_class: large
steps: steps:
- checkout - checkout
- run: - run:
name: Pulling submodules name: Pulling submodules
command: | command: |
git submodule update --init extern/Catch2 git submodule update --init --depth 1 external/Catch2
git submodule update --init extern/tloptional git submodule update --init --depth 1 external/tloptional
- run: - run:
name: Building and testing with gcc name: Building and testing with gcc
command: | command: |
@ -63,15 +63,15 @@ jobs:
release_gcc: release_gcc:
docker: docker:
- image: marzer/misc_cpp17_dev:0.2.0 - image: marzer/cpp_dev:0.1.0
resource_class: large resource_class: large
steps: steps:
- checkout - checkout
- run: - run:
name: Pulling submodules name: Pulling submodules
command: | command: |
git submodule update --init extern/Catch2 git submodule update --init --depth 1 external/Catch2
git submodule update --init extern/tloptional git submodule update --init --depth 1 external/tloptional
- run: - run:
name: Building and testing with gcc name: Building and testing with gcc
command: | command: |
@ -80,18 +80,22 @@ jobs:
generate_dox: generate_dox:
docker: docker:
- image: marzer/misc_cpp17_dev:0.2.0 - image: marzer/cpp_dev:0.1.0
resource_class: small resource_class: small
steps: steps:
- checkout - checkout
- run: - run:
name: Pulling submodules name: Pulling submodules
command: | command: |
git submodule update --init extern/mcss git submodule update --init --depth 1 --recursive external/dox
- run:
name: Installing dependencies
command: |
pip3 install --upgrade -r external/dox/requirements.txt
- run: - run:
name: Generating documentation name: Generating documentation
command: | command: |
cd python && python3 generate_documentation.py cd docs && python3 ../external/dox --verbose
- persist_to_workspace: - persist_to_workspace:
root: docs root: docs
paths: html paths: html

87
.gitattributes vendored
View File

@ -1,26 +1,61 @@
* text=auto encoding=UTF-8 * text=auto encoding=UTF-8
*.c text encoding=UTF-8 eol=lf
*.cpp text encoding=UTF-8 eol=lf *.c text eol=lf encoding=UTF-8
*.cxx text encoding=UTF-8 eol=lf *.cpp text eol=lf encoding=UTF-8
*.dox text encoding=UTF-8 eol=lf *.css text eol=lf encoding=UTF-8
*.h text encoding=UTF-8 eol=lf *.cxx text eol=lf encoding=UTF-8
*.hpp text encoding=UTF-8 eol=lf *.dox text eol=lf encoding=UTF-8
*.hxx text encoding=UTF-8 eol=lf *.h text eol=lf encoding=UTF-8
*.inl text encoding=UTF-8 eol=lf *.hint text eol=lf encoding=UTF-8
*.toml text=auto encoding=UTF-8 *.hlsl text eol=crlf encoding=UTF-8
*.xml text=auto encoding=UTF-8 *.hpp text eol=lf encoding=UTF-8
*.py text encoding=UTF-8 eol=lf *.htm text eol=lf encoding=UTF-8
*.natvis text encoding=UTF-8 eol=crlf *.html text eol=lf encoding=UTF-8
*.props text encoding=UTF-8 eol=crlf *.hxx text eol=lf encoding=UTF-8
*.vcxproj text encoding=UTF-8 eol=crlf *.ini text eol=lf encoding=UTF-8
*.sln text encoding=UTF-8-BOM eol=crlf *.inl text eol=lf encoding=UTF-8
*.runsettings text encoding=UTF-8 eol=crlf *.md text eol=lf encoding=UTF-8
*.md text encoding=UTF-8 eol=lf *.natvis text eol=lf encoding=UTF-8
*.css text encoding=UTF-8 eol=lf *.props text eol=lf encoding=UTF-8
.gitignore text encoding=UTF-8 eol=lf *.py text eol=lf encoding=UTF-8
.gitattributes text encoding=UTF-8 eol=lf *.rc text eol=crlf encoding=UTF-8
.editorconfig text encoding=UTF-8 eol=lf *.runsettings text eol=lf encoding=UTF-8
meson.build text encoding=UTF-8 eol=lf *.sln text eol=crlf encoding=UTF-8-BOM
meson_options.txt text encoding=UTF-8 eol=lf *.toml text eol=lf encoding=UTF-8
Doxyfile text encoding=UTF-8 eol=lf *.txt text eol=lf encoding=UTF-8
Doxyfile-mcss text encoding=UTF-8 eol=lf *.vcxproj text eol=crlf encoding=UTF-8-BOM
*.vcxproj.filters text eol=crlf encoding=UTF-8-BOM
*.xml text eol=lf encoding=UTF-8
.clang-format text eol=lf encoding=UTF-8
.editorconfig text eol=lf encoding=UTF-8
.gitattributes text eol=lf encoding=UTF-8
.gitignore text eol=lf encoding=UTF-8
Doxyfile text eol=lf encoding=UTF-8
Doxyfile-mcss text eol=lf encoding=UTF-8
meson.build text eol=lf encoding=UTF-8
*.cs eol=lf diff=csharp
*.doc diff=astextplain
*.DOC diff=astextplain
*.docx diff=astextplain
*.DOCX diff=astextplain
*.dot diff=astextplain
*.DOT diff=astextplain
*.pdf diff=astextplain
*.PDF diff=astextplain
*.rtf diff=astextplain
*.RTF diff=astextplain
*.ai binary
*.bin binary
*.bmp binary
*.dat binary
*.gif binary
*.ico binary
*.jpeg binary
*.jpg binary
*.png binary
*.psd binary
*.rc binary
*.xlsx binary

11
.gitignore vendored
View File

@ -8,8 +8,15 @@ meson-private/
build.ninja build.ninja
compile_commands.json compile_commands.json
[Bb]uild*/ [Bb]uild*/
[Dd]ocs/xml
[Dd]ocs/html # documentation
*.xml
*.xslt
*.xsd
*.html
*.temp
docs/html
docs/xml
## Ignore Visual Studio temporary files, build results, and ## Ignore Visual Studio temporary files, build results, and
## files generated by popular Visual Studio add-ons. ## files generated by popular Visual Studio add-ons.

26
.gitmodules vendored
View File

@ -1,15 +1,15 @@
[submodule "extern/Catch2"] [submodule "external/toml-test"]
path = extern/Catch2 path = external/toml-test
url = https://github.com/catchorg/Catch2.git
[submodule "extern/mcss"]
path = extern/mcss
url = https://github.com/mosra/m.css.git
[submodule "extern/tloptional"]
path = extern/tloptional
url = https://github.com/TartanLlama/optional.git
[submodule "extern/toml-test"]
path = extern/toml-test
url = https://github.com/BurntSushi/toml-test.git url = https://github.com/BurntSushi/toml-test.git
[submodule "extern/toml-spec-tests"] [submodule "external/toml-spec-tests"]
path = extern/toml-spec-tests path = external/toml-spec-tests
url = https://github.com/iarna/toml-spec-tests.git url = https://github.com/iarna/toml-spec-tests.git
[submodule "external/dox"]
path = external/dox
url = https://github.com/marzer/dox.git
[submodule "external/Catch2"]
path = external/Catch2
url = https://github.com/catchorg/Catch2.git
[submodule "external/tloptional"]
path = external/tloptional
url = https://github.com/TartanLlama/optional.git

View File

@ -13,7 +13,8 @@ If you wish to submit a PR, please be aware that:
1. Make your changes as necessary 1. Make your changes as necessary
- If you've added a new header file that isn't going to be transitively included by one of the - If you've added a new header file that isn't going to be transitively included by one of the
others, add an include directive to `include/toml++/toml.h` others, add an include directive to `include/toml++/toml.h`
2. Run `python/generate_single_header.py` 2. Install the prerequisite python packages: `pip3 install -r tools/requirements.txt`
3. Run `tools/generate_single_header.py`
<br> <br>
@ -21,8 +22,7 @@ If you wish to submit a PR, please be aware that:
Testing is done using [Catch2], included in the respository as a submodule under `extern/Catch2`. Testing is done using [Catch2], included in the respository as a submodule under `extern/Catch2`.
The first time you want to begin testing you'll need to ensure submodules have been fetched: The first time you want to begin testing you'll need to ensure submodules have been fetched:
```bash ```bash
git submodule update --init extern/Catch2 git submodule update --init --depth 1 external/Catch2 external/tloptional
git submodule update --init extern/tloptional
``` ```
### Testing on Windows with Visual Studio ### Testing on Windows with Visual Studio

View File

@ -1,17 +1,17 @@
[![banner](docs/banner_small.png)][homepage] [![banner](docs/images/banner_small.png)][homepage]
[![Releases](https://img.shields.io/github/v/release/marzer/tomlplusplus?style=flat-square)](https://github.com/marzer/tomlplusplus/releases) [![Releases](https://img.shields.io/github/v/release/marzer/tomlplusplus?style=flat-square)](https://github.com/marzer/tomlplusplus/releases)
[![C++17](docs/badge-C++17.svg)][cpp_compilers] [![C++17](docs/images/badge-C++17.svg)][cpp_compilers]
[![C++20](docs/badge-C++20.svg)][cpp_compilers] [![C++20](docs/images/badge-C++20.svg)][cpp_compilers]
[![TOML](docs/badge-TOML.svg)][v1.0.0] [![TOML](docs/images/badge-TOML.svg)][v1.0.0]
[![MIT license](docs/badge-license-MIT.svg)](./LICENSE) [![MIT license](docs/images/badge-license-MIT.svg)](./LICENSE)
[![CircleCI](https://img.shields.io/circleci/build/github/marzer/tomlplusplus?label=circle%20ci&logo=circleci&logoColor=white&style=flat-square)](https://circleci.com/gh/marzer/tomlplusplus) [![CircleCI](https://img.shields.io/circleci/build/github/marzer/tomlplusplus?label=circle%20ci&logo=circleci&logoColor=white&style=flat-square)](https://circleci.com/gh/marzer/tomlplusplus)
[![Mentioned in Awesome C++](docs/badge-awesome.svg)](https://github.com/fffaraz/awesome-cpp) [![Mentioned in Awesome C++](docs/images/badge-awesome.svg)](https://github.com/fffaraz/awesome-cpp)
==== ====
# toml++ homepage # toml++ homepage
<p align="center"> <p align="center">
<strong>✨ This README is fine, but the <a href="https://marzer.github.io/tomlplusplus/">toml++ homepage</a> is better. ✨</strong> <strong>&#xFE0F; This README is fine, but the <a href="https://marzer.github.io/tomlplusplus/">toml++ homepage</a> is better. ✨&#xFE0F;</strong>
</p> </p>
<br> <br>
@ -32,7 +32,7 @@
# Basic usage # Basic usage
> _The following example favours brevity. If you'd prefer full API documentation and lots of specific code snippets > &#xFE0F; _The following example favours brevity. If you'd prefer full API documentation and lots of specific code snippets
instead, visit the project [homepage]_ instead, visit the project [homepage]_
Given a [TOML] file `configuration.toml` containing the following: Given a [TOML] file `configuration.toml` containing the following:
@ -89,11 +89,11 @@ You'll find some more code examples in the `examples` directory, and plenty more
# Adding toml++ to your project # Adding toml++ to your project
`toml++` comes in two flavours: Single-header and Regular. The API is the same for both. `toml++` comes in two flavours: Single-header and Regular. The API is the same for both.
### 🍦 Single-header flavour ### 🍦&#xFE0F; Single-header flavour
1. Drop `toml.hpp` wherever you like in your source tree 1. Drop `toml.hpp` wherever you like in your source tree
2. There is no step two 2. There is no step two
### 🍨 Regular flavour ### 🍨&#xFE0F; Regular flavour
1. Add `tomlplusplus/include` to your include paths 1. Add `tomlplusplus/include` to your include paths
2. `#include <toml++/toml.h>` 2. `#include <toml++/toml.h>`
@ -108,7 +108,7 @@ depends: [
'tomlpp^2.3.0', 'tomlpp^2.3.0',
] ]
``` ```
> _[What is DDS?](https://dds.pizza/)_ > &#xFE0F; _[What is DDS?](https://dds.pizza/)_
### Vcpkg ### Vcpkg
``` ```
@ -142,7 +142,7 @@ won't need to mess with these at all, but if you do, set them before including t
| `TOML_UNRELEASED_FEATURES` | boolean | `0` | Enables support for [unreleased TOML language features] not yet part of a [numbered version]. | | `TOML_UNRELEASED_FEATURES` | boolean | `0` | Enables support for [unreleased TOML language features] not yet part of a [numbered version]. |
| `TOML_WINDOWS_COMPAT` | boolean | `1` on Windows | Enables support for transparent conversion between wide and narrow strings in some places when building for Windows. | | `TOML_WINDOWS_COMPAT` | boolean | `1` on Windows | Enables support for transparent conversion between wide and narrow strings in some places when building for Windows. |
> _A number of these have ABI implications; the library uses inline namespaces to prevent you from accidentally > &#xFE0F; _A number of these have ABI implications; the library uses inline namespaces to prevent you from accidentally
linking incompatible combinations together._ linking incompatible combinations together._
<br> <br>
@ -155,7 +155,7 @@ support for a number of unreleased features from the [TOML master] and some sane
The library advertises the most recent numbered language version it fully supports via the preprocessor The library advertises the most recent numbered language version it fully supports via the preprocessor
defines `TOML_LANG_MAJOR`, `TOML_LANG_MINOR` and `TOML_LANG_PATCH`. defines `TOML_LANG_MAJOR`, `TOML_LANG_MINOR` and `TOML_LANG_PATCH`.
### 🔸 **Unreleased language features:** ### 🔸&#xFE0F; **Unreleased language features:**
- [#516]: Allow newlines and trailing commas in inline tables - [#516]: Allow newlines and trailing commas in inline tables
- [#562]: Allow hex floating-point values - [#562]: Allow hex floating-point values
- [#644]: Support `+` in key names - [#644]: Support `+` in key names
@ -163,9 +163,9 @@ defines `TOML_LANG_MAJOR`, `TOML_LANG_MINOR` and `TOML_LANG_PATCH`.
- [#687]: Relax bare key restrictions to allow additional unicode characters - [#687]: Relax bare key restrictions to allow additional unicode characters
- [#709]: Include an \xHH escape code sequence - [#709]: Include an \xHH escape code sequence
> _`#define TOML_UNRELEASED_FEATURES 1` to enable these features (see [Configuration](#Configuration))._ > &#xFE0F; _`#define TOML_UNRELEASED_FEATURES 1` to enable these features (see [Configuration](#Configuration))._
### 🔹 **TOML v1.0.0:** ### 🔹&#xFE0F; **TOML v1.0.0:**
All features supported, including: All features supported, including:
- [#356]: Allow leading zeros in the exponent part of a float - [#356]: Allow leading zeros in the exponent part of a float
- [#567]: Control characters are not permitted in comments - [#567]: Control characters are not permitted in comments
@ -173,7 +173,7 @@ All features supported, including:
- [#665]: Make arrays heterogeneous - [#665]: Make arrays heterogeneous
- [#766]: Allow comments before commas in arrays - [#766]: Allow comments before commas in arrays
### 🔹 **TOML v0.5.0:** ### 🔹&#xFE0F; **TOML v0.5.0:**
All features supported. All features supported.
<br> <br>

14
cpp.hint Normal file
View File

@ -0,0 +1,14 @@
#define TOML_API
#define TOML_ATTR(...)
#define TOML_ALWAYS_INLINE inline
#define TOML_NEVER_INLINE
#define TOML_TRIVIAL_ABI
#define TOML_ABSTRACT_BASE
#define TOML_EMPTY_BASES
#define TOML_MAY_THROW
#define TOML_CONSTEVAL constexpr
#define TOML_LIKELY(...) (__VA_ARGS__)
#define TOML_UNLIKELY(...) (__VA_ARGS__)
#define TOML_NODISCARD_CTOR
#define TOML_EXTERNAL_LINKAGE
#define TOML_INTERNAL_LINKAGE

View File

@ -1,4 +1,4 @@
# Doxyfile 1.8.16 # Doxyfile 1.9.1
#--------------------------------------------------------------------------- #---------------------------------------------------------------------------
# Project related configuration options # Project related configuration options
@ -6,9 +6,9 @@
DOXYFILE_ENCODING = UTF-8 DOXYFILE_ENCODING = UTF-8
PROJECT_NAME = toml++ PROJECT_NAME = toml++
PROJECT_NUMBER = PROJECT_NUMBER =
PROJECT_BRIEF = TOML for modern C++ PROJECT_BRIEF = "TOML for modern C++"
PROJECT_LOGO = logo.png PROJECT_LOGO = logo.png
OUTPUT_DIRECTORY = ./ OUTPUT_DIRECTORY =
CREATE_SUBDIRS = NO CREATE_SUBDIRS = NO
ALLOW_UNICODE_NAMES = NO ALLOW_UNICODE_NAMES = NO
OUTPUT_LANGUAGE = English OUTPUT_LANGUAGE = English
@ -36,31 +36,11 @@ JAVADOC_AUTOBRIEF = NO
JAVADOC_BANNER = NO JAVADOC_BANNER = NO
QT_AUTOBRIEF = NO QT_AUTOBRIEF = NO
MULTILINE_CPP_IS_BRIEF = NO MULTILINE_CPP_IS_BRIEF = NO
PYTHON_DOCSTRING = YES
INHERIT_DOCS = YES INHERIT_DOCS = YES
SEPARATE_MEMBER_PAGES = NO SEPARATE_MEMBER_PAGES = NO
TAB_SIZE = 4 TAB_SIZE = 4
ALIASES = \ ALIASES =
"cpp=@code{.cpp}" \
"ecpp=@endcode" \
"out=@code{.shell-session}" \
"eout=@endcode" \
"bash=@code{.sh}" \
"ebash=@endcode" \
"detail=@details" \
"gh{1}=<a href=\"https://github.com/\1\" target=\"_blank\">\1</a>" \
"gh2{2}=<a href=\"https://github.com/\1\" target=\"_blank\">\2</a>" \
"godbolt{1}=<a href=\"https://godbolt.org/z/\1\" target=\"_blank\">Try this code on Compiler Explorer</a>" \
"m_div{1}=@xmlonly<mcss:div xmlns:mcss=\"http://mcss.mosra.cz/doxygen/\" mcss:class=\"\1\">@endxmlonly" \
"m_enddiv=@xmlonly</mcss:div>@endxmlonly" \
"m_span{1}=@xmlonly<mcss:span xmlns:mcss=\"http://mcss.mosra.cz/doxygen/\" mcss:class=\"\1\">@endxmlonly" \
"m_endspan=@xmlonly</mcss:span>@endxmlonly" \
"m_class{1}=@xmlonly<mcss:class xmlns:mcss=\"http://mcss.mosra.cz/doxygen/\" mcss:class=\"\1\" />@endxmlonly" \
"m_footernavigation=@xmlonly<mcss:footernavigation xmlns:mcss=\"http://mcss.mosra.cz/doxygen/\" />@endxmlonly" \
"m_examplenavigation{2}=@xmlonly<mcss:examplenavigation xmlns:mcss=\"http://mcss.mosra.cz/doxygen/\" mcss:page=\"\1\" mcss:prefix=\"\2\" />@endxmlonly" \
"m_keywords{1}=@xmlonly<mcss:search xmlns:mcss=\"http://mcss.mosra.cz/doxygen/\" mcss:keywords=\"\1\" />@endxmlonly" \
"m_keyword{3}=@xmlonly<mcss:search xmlns:mcss=\"http://mcss.mosra.cz/doxygen/\" mcss:keyword=\"\1\" mcss:title=\"\2\" mcss:suffix-length=\"\3\" />@endxmlonly" \
"m_enum_values_as_keywords=@xmlonly<mcss:search xmlns:mcss=\"http://mcss.mosra.cz/doxygen/\" mcss:enum-values-as-keywords=\"true\" />@endxmlonly"
TCL_SUBST =
OPTIMIZE_OUTPUT_FOR_C = NO OPTIMIZE_OUTPUT_FOR_C = NO
OPTIMIZE_OUTPUT_JAVA = NO OPTIMIZE_OUTPUT_JAVA = NO
OPTIMIZE_FOR_FORTRAN = NO OPTIMIZE_FOR_FORTRAN = NO
@ -81,6 +61,7 @@ INLINE_GROUPED_CLASSES = NO
INLINE_SIMPLE_STRUCTS = NO INLINE_SIMPLE_STRUCTS = NO
TYPEDEF_HIDES_STRUCT = NO TYPEDEF_HIDES_STRUCT = NO
LOOKUP_CACHE_SIZE = 1 LOOKUP_CACHE_SIZE = 1
NUM_PROC_THREADS = 1
#--------------------------------------------------------------------------- #---------------------------------------------------------------------------
# Build related configuration options # Build related configuration options
#--------------------------------------------------------------------------- #---------------------------------------------------------------------------
@ -92,6 +73,7 @@ EXTRACT_STATIC = NO
EXTRACT_LOCAL_CLASSES = NO EXTRACT_LOCAL_CLASSES = NO
EXTRACT_LOCAL_METHODS = NO EXTRACT_LOCAL_METHODS = NO
EXTRACT_ANON_NSPACES = NO EXTRACT_ANON_NSPACES = NO
RESOLVE_UNNAMED_PARAMS = YES
HIDE_UNDOC_MEMBERS = YES HIDE_UNDOC_MEMBERS = YES
HIDE_UNDOC_CLASSES = YES HIDE_UNDOC_CLASSES = YES
HIDE_FRIEND_COMPOUNDS = NO HIDE_FRIEND_COMPOUNDS = NO
@ -132,12 +114,12 @@ WARN_IF_DOC_ERROR = YES
WARN_NO_PARAMDOC = NO WARN_NO_PARAMDOC = NO
WARN_AS_ERROR = NO WARN_AS_ERROR = NO
WARN_FORMAT = "$file:$line: $text" WARN_FORMAT = "$file:$line: $text"
WARN_LOGFILE = ./doc/doxygen_warnings.log WARN_LOGFILE =
#--------------------------------------------------------------------------- #---------------------------------------------------------------------------
# Configuration options related to the input files # Configuration options related to the input files
#--------------------------------------------------------------------------- #---------------------------------------------------------------------------
INPUT = ../include INPUT = ../include/ \
INPUT += ../docs pages/
INPUT_ENCODING = UTF-8 INPUT_ENCODING = UTF-8
FILE_PATTERNS = *.h \ FILE_PATTERNS = *.h \
*.dox *.dox
@ -149,158 +131,13 @@ EXCLUDE_SYMBOLS =
EXAMPLE_PATH = EXAMPLE_PATH =
EXAMPLE_PATTERNS = * EXAMPLE_PATTERNS = *
EXAMPLE_RECURSIVE = NO EXAMPLE_RECURSIVE = NO
IMAGE_PATH = ./ IMAGE_PATH = images/
INPUT_FILTER = INPUT_FILTER =
FILTER_PATTERNS = FILTER_PATTERNS =
FILTER_SOURCE_FILES = NO FILTER_SOURCE_FILES = NO
FILTER_SOURCE_PATTERNS = FILTER_SOURCE_PATTERNS =
USE_MDFILE_AS_MAINPAGE = USE_MDFILE_AS_MAINPAGE =
#--------------------------------------------------------------------------- #---------------------------------------------------------------------------
# Configuration options related to source browsing
#---------------------------------------------------------------------------
SOURCE_BROWSER = NO
INLINE_SOURCES = NO
STRIP_CODE_COMMENTS = YES
REFERENCED_BY_RELATION = NO
REFERENCES_RELATION = NO
REFERENCES_LINK_SOURCE = NO
SOURCE_TOOLTIPS = YES
USE_HTAGS = NO
VERBATIM_HEADERS = NO
CLANG_ASSISTED_PARSING = NO
CLANG_OPTIONS =
CLANG_DATABASE_PATH =
#---------------------------------------------------------------------------
# Configuration options related to the alphabetical class index
#---------------------------------------------------------------------------
ALPHABETICAL_INDEX = YES
COLS_IN_ALPHA_INDEX = 5
IGNORE_PREFIX =
#---------------------------------------------------------------------------
# Configuration options related to the HTML output
#---------------------------------------------------------------------------
GENERATE_HTML = NO
HTML_OUTPUT = html
HTML_FILE_EXTENSION = .html
HTML_HEADER =
HTML_FOOTER =
HTML_STYLESHEET =
HTML_EXTRA_STYLESHEET =
HTML_EXTRA_FILES =
HTML_COLORSTYLE_HUE = 224
HTML_COLORSTYLE_SAT = 50
HTML_COLORSTYLE_GAMMA = 67
HTML_TIMESTAMP = NO
HTML_DYNAMIC_MENUS = YES
HTML_DYNAMIC_SECTIONS = NO
HTML_INDEX_NUM_ENTRIES = 100
GENERATE_DOCSET = NO
DOCSET_FEEDNAME = "Doxygen generated docs"
DOCSET_BUNDLE_ID = org.doxygen.Project
DOCSET_PUBLISHER_ID = org.doxygen.Publisher
DOCSET_PUBLISHER_NAME = Publisher
GENERATE_HTMLHELP = NO
CHM_FILE =
HHC_LOCATION =
GENERATE_CHI = NO
CHM_INDEX_ENCODING =
BINARY_TOC = NO
TOC_EXPAND = NO
GENERATE_QHP = NO
QCH_FILE =
QHP_NAMESPACE = org.doxygen.Project
QHP_VIRTUAL_FOLDER = doc
QHP_CUST_FILTER_NAME =
QHP_CUST_FILTER_ATTRS =
QHP_SECT_FILTER_ATTRS =
QHG_LOCATION =
GENERATE_ECLIPSEHELP = NO
ECLIPSE_DOC_ID = org.doxygen.Project
DISABLE_INDEX = NO
GENERATE_TREEVIEW = YES
ENUM_VALUES_PER_LINE = 4
TREEVIEW_WIDTH = 250
EXT_LINKS_IN_WINDOW = NO
FORMULA_FONTSIZE = 10
FORMULA_TRANSPARENT = YES
USE_MATHJAX = NO
MATHJAX_FORMAT = HTML-CSS
MATHJAX_RELPATH = http://cdn.mathjax.org/mathjax/latest
MATHJAX_EXTENSIONS =
MATHJAX_CODEFILE =
SEARCHENGINE = NO
SERVER_BASED_SEARCH = NO
EXTERNAL_SEARCH = NO
SEARCHENGINE_URL =
SEARCHDATA_FILE = searchdata.xml
EXTERNAL_SEARCH_ID =
EXTRA_SEARCH_MAPPINGS =
#---------------------------------------------------------------------------
# Configuration options related to the LaTeX output
#---------------------------------------------------------------------------
GENERATE_LATEX = NO
LATEX_OUTPUT = latex
LATEX_CMD_NAME = latex
MAKEINDEX_CMD_NAME = makeindex
LATEX_MAKEINDEX_CMD = makeindex
COMPACT_LATEX = NO
PAPER_TYPE = a4
EXTRA_PACKAGES =
LATEX_HEADER =
LATEX_FOOTER =
LATEX_EXTRA_STYLESHEET =
LATEX_EXTRA_FILES =
PDF_HYPERLINKS = YES
USE_PDFLATEX = YES
LATEX_BATCHMODE = NO
LATEX_HIDE_INDICES = NO
LATEX_SOURCE_CODE = NO
LATEX_BIB_STYLE = plain
LATEX_TIMESTAMP = NO
LATEX_EMOJI_DIRECTORY =
#---------------------------------------------------------------------------
# Configuration options related to the RTF output
#---------------------------------------------------------------------------
GENERATE_RTF = NO
RTF_OUTPUT = rtf
COMPACT_RTF = NO
RTF_HYPERLINKS = NO
RTF_STYLESHEET_FILE =
RTF_EXTENSIONS_FILE =
RTF_SOURCE_CODE = NO
#---------------------------------------------------------------------------
# Configuration options related to the man page output
#---------------------------------------------------------------------------
GENERATE_MAN = NO
MAN_OUTPUT = man
MAN_EXTENSION = .3
MAN_SUBDIR =
MAN_LINKS = NO
#---------------------------------------------------------------------------
# Configuration options related to the XML output
#---------------------------------------------------------------------------
GENERATE_XML = YES
XML_OUTPUT = xml
XML_PROGRAMLISTING = NO
XML_NS_MEMB_FILE_SCOPE = NO
#---------------------------------------------------------------------------
# Configuration options related to the DOCBOOK output
#---------------------------------------------------------------------------
GENERATE_DOCBOOK = NO
DOCBOOK_OUTPUT = docbook
DOCBOOK_PROGRAMLISTING = NO
#---------------------------------------------------------------------------
# Configuration options for the AutoGen Definitions output
#---------------------------------------------------------------------------
GENERATE_AUTOGEN_DEF = NO
#---------------------------------------------------------------------------
# Configuration options related to the Perl module output
#---------------------------------------------------------------------------
GENERATE_PERLMOD = NO
PERLMOD_LATEX = NO
PERLMOD_PRETTY = YES
PERLMOD_MAKEVAR_PREFIX =
#---------------------------------------------------------------------------
# Configuration options related to the preprocessor # Configuration options related to the preprocessor
#--------------------------------------------------------------------------- #---------------------------------------------------------------------------
ENABLE_PREPROCESSING = YES ENABLE_PREPROCESSING = YES
@ -309,92 +146,6 @@ EXPAND_ONLY_PREDEF = NO
SEARCH_INCLUDES = NO SEARCH_INCLUDES = NO
INCLUDE_PATH = INCLUDE_PATH =
INCLUDE_FILE_PATTERNS = INCLUDE_FILE_PATTERNS =
PREDEFINED = \ PREDEFINED =
"DOXYGEN=1" \ EXPAND_AS_DEFINED =
"NDEBUG=1" \
"__cplusplus=201703L" \
"__has_include(...)=0" \
"__has_attribute(...)=0" \
"__cpp_lib_char8_t=201811L" \
"TOML_DISABLE_ENVIRONMENT_CHECKS=" \
"TOML_ALWAYS_INLINE=inline" \
"TOML_MAY_THROW=" \
"TOML_NODISCARD_CTOR=" \
"TOML_EXTERNAL_LINKAGE=" \
"TOML_API=" \
"TOML_ATTR(...)=" \
"TOML_PUSH_WARNINGS=" \
"TOML_DISABLE_SWITCH_WARNINGS=" \
"TOML_DISABLE_INIT_WARNINGS=" \
"TOML_DISABLE_SPAM_WARNINGS=" \
"TOML_DISABLE_ARITHMETIC_WARNINGS=" \
"TOML_DISABLE_SHADOW_WARNINGS=" \
"TOML_DISABLE_WARNINGS=" \
"TOML_ENABLE_WARNINGS=" \
"TOML_POP_WARNINGS=" \
"TOML_ASYMMETRICAL_EQUALITY_OPS(...)=" \
"TOML_NAMESPACE_START=namespace toml" \
"TOML_NAMESPACE_END=" \
"TOML_NAMESPACE=toml" \
"TOML_ABI_NAMESPACE_START(...)=" \
"TOML_ABI_NAMESPACE_BOOL(...)=" \
"TOML_ABI_NAMESPACE_END=" \
"TOML_IMPL_NAMESPACE_START=namespace toml { namespace impl" \
"TOML_IMPL_NAMESPACE_END=} }" \
"TOML_ANON_NAMESPACE_START=namespace" \
"TOML_ANON_NAMESPACE_END=" \
"TOML_ANON_NAMESPACE=" \
"TOML_USING_ANON_NAMESPACE=(void)0" \
"TOML_EXTERNAL_LINKAGE=" \
"TOML_TRIVIAL_ABI=" \
"TOML_EMPTY_BASES=" \
"TOML_ABSTRACT_BASE" \
"TOML_INTERNAL_LINKAGE=static"
EXPAND_AS_DEFINED =
SKIP_FUNCTION_MACROS = NO SKIP_FUNCTION_MACROS = NO
#---------------------------------------------------------------------------
# Configuration options related to external references
#---------------------------------------------------------------------------
TAGFILES =
GENERATE_TAGFILE =
ALLEXTERNALS = NO
EXTERNAL_GROUPS = YES
EXTERNAL_PAGES = YES
#---------------------------------------------------------------------------
# Configuration options related to the dot tool
#---------------------------------------------------------------------------
CLASS_DIAGRAMS = NO
DIA_PATH =
HIDE_UNDOC_RELATIONS = YES
HAVE_DOT = NO
DOT_NUM_THREADS = 0
DOT_FONTNAME = Helvetica
DOT_FONTSIZE = 10
DOT_FONTPATH =
CLASS_GRAPH = YES
COLLABORATION_GRAPH = YES
GROUP_GRAPHS = YES
UML_LOOK = NO
UML_LIMIT_NUM_FIELDS = 10
TEMPLATE_RELATIONS = NO
INCLUDE_GRAPH = YES
INCLUDED_BY_GRAPH = YES
CALL_GRAPH = YES
CALLER_GRAPH = YES
GRAPHICAL_HIERARCHY = YES
DIRECTORY_GRAPH = YES
DOT_IMAGE_FORMAT = png
INTERACTIVE_SVG = NO
DOT_PATH =
DOTFILE_DIRS =
MSCFILE_DIRS =
DIAFILE_DIRS =
PLANTUML_JAR_PATH =
PLANTUML_CFG_FILE =
PLANTUML_INCLUDE_PATH =
DOT_GRAPH_MAX_NODES = 50
MAX_DOT_GRAPH_DEPTH = 0
DOT_TRANSPARENT = NO
DOT_MULTI_TARGETS = NO
GENERATE_LEGEND = YES
DOT_CLEANUP = YES

View File

@ -1,35 +0,0 @@
@INCLUDE = ./Doxyfile
HTML_EXTRA_STYLESHEET = \
https://fonts.googleapis.com/css?family=Source+Sans+Pro:400,400i,600,600i%7CSource+Code+Pro:400,400i,600 \
../css/m-dark+documentation.compiled.css \
muu.css
HTML_EXTRA_FILES = \
muu.js \
logo.png \
banner_small.png \
github-icon.png \
badge-awesome.svg \
badge-C++17.svg \
badge-C++20.svg \
badge-license-MIT.svg \
badge-TOML.svg
##! M_THEME_COLOR = #22272e
##! M_LINKS_NAVBAR1 = \
##! namespaces
##! M_LINKS_NAVBAR2 = \
##! annotated \
##! "<a target="_blank" href="https://github.com/marzer/tomlplusplus/" class="github">Github</a>"
##! M_SEARCH_DOWNLOAD_BINARY = NO
##! M_CLASS_TREE_EXPAND_LEVELS = 3
##! M_FILE_TREE_EXPAND_LEVELS = 3
##! M_PAGE_FINE_PRINT = <a target="_blank" href="https://github.com/marzer/tomlplusplus/">Github</a> &bull; \
##! <a target="_blank" href="https://github.com/marzer/tomlplusplus/issues">Report an issue</a> \
##! <br><br>Documentation generated using <a href="https://mcss.mosra.cz/">m.css</a>
##! M_HTML_HEADER = <meta name="google-site-verification" content="gbtcNgKlNiPSMKkYMw4zWFVWGPH_oU93m9n_-nb4qK8" />\
##! <meta name="description" content="Header-only TOML config file parser and serializer for modern C++.">\
##! <script src="muu.js"></script>
##! M_FAVICON = favicon.ico

View File

@ -1 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="125" height="20"><g shape-rendering="crispEdges"><path fill="#555" d="M0 0h76v20H0z"/><path fill="#007ec6" d="M76 0h49v20H76z"/></g><g fill="#fff" text-anchor="middle" font-family="DejaVu Sans,Verdana,Geneva,sans-serif" font-size="110"><image x="5" y="3" width="14" height="14" xlink:href="data:image/svg+xml;base64,PHN2ZyBmaWxsPSJ3aGl0ZXNtb2tlIiByb2xlPSJpbWciIHZpZXdCb3g9IjAgMCAyNCAyNCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48dGl0bGU+QysrIGljb248L3RpdGxlPjxwYXRoIGQ9Ik0yMi4zOTMgNmMtLjE2Ny0uMjktLjM5OC0uNTQzLS42NTItLjY5TDEyLjkyNS4yMmMtLjUwOC0uMjkzLTEuMzM5LS4yOTMtMS44NDcgMEwyLjI2IDUuMzFjLS41MDguMjkzLS45MjMgMS4wMTMtLjkyMyAxLjZ2MTAuMThjMCAuMjk0LjEwNC42Mi4yNzEuOTEuMTY3LjI5LjM5OC41NDMuNjUyLjY4OWw4LjgxNiA1LjA5MWMuNTA4LjI5MyAxLjMzOS4yOTMgMS44NDcgMGw4LjgxNi01LjA5MWMuMjU0LS4xNDYuNDg1LS4zOTkuNjUyLS42ODlzLjI3MS0uNjE2LjI3MS0uOTFWNi45MWMuMDAyLS4yOTQtLjEwMi0uNjItLjI2OS0uOTF6TTEyIDE5LjEwOWMtMy45MiAwLTcuMTA5LTMuMTg5LTcuMTA5LTcuMTA5UzguMDggNC44OTEgMTIgNC44OTFhNy4xMzMgNy4xMzMgMCAwIDEgNi4xNTYgMy41NTJsLTMuMDc2IDEuNzgxQTMuNTY3IDMuNTY3IDAgMCAwIDEyIDguNDQ1Yy0xLjk2IDAtMy41NTQgMS41OTUtMy41NTQgMy41NTVTMTAuMDQgMTUuNTU1IDEyIDE1LjU1NWEzLjU3IDMuNTcgMCAwIDAgMy4wOC0xLjc3OGwzLjA3NyAxLjc4QTcuMTM1IDcuMTM1IDAgMCAxIDEyIDE5LjEwOXptNy4xMDktNi43MTRoLS43OXYuNzloLS43OXYtLjc5aC0uNzl2LS43OWguNzl2LS43OWguNzl2Ljc5aC43OXYuNzl6bTIuOTYyIDBoLS43OXYuNzloLS43OXYtLjc5aC0uNzg5di0uNzloLjc4OXYtLjc5aC43OXYuNzloLjc5di43OXoiLz48L3N2Zz4="/> <text x="475" y="140" transform="scale(.1)" textLength="490">standard</text><text x="995" y="140" transform="scale(.1)" textLength="390">C++17</text></g> </svg>

Before

Width:  |  Height:  |  Size: 1.6 KiB

View File

@ -1 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="112" height="20" role="img" aria-label="TOML: v1.0.0"><title>TOML: v1.0.0</title><g shape-rendering="crispEdges"><rect width="41" height="20" fill="#555"/><rect x="41" width="71" height="20" fill="#007ec6"/></g><g fill="#fff" text-anchor="middle" font-family="Verdana,Geneva,DejaVu Sans,sans-serif" text-rendering="geometricPrecision" font-size="110"><text x="215" y="140" transform="scale(.1)" fill="#fff" textLength="310">TOML</text><text x="755" y="140" transform="scale(.1)" fill="#fff" textLength="610">v1.0.0</text></g></svg>

Before

Width:  |  Height:  |  Size: 621 B

View File

@ -1 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="78" height="20"><g shape-rendering="crispEdges"><path fill="#555" d="M0 0h47v20H0z"/><path fill="purple" d="M47 0h31v20H47z"/></g><g fill="#fff" text-anchor="middle" font-family="DejaVu Sans,Verdana,Geneva,sans-serif" font-size="110"> <text x="245" y="140" transform="scale(.1)" textLength="370">license</text><text x="615" y="140" transform="scale(.1)" textLength="210">MIT</text></g> </svg>

Before

Width:  |  Height:  |  Size: 482 B

56
docs/dox.toml Normal file
View File

@ -0,0 +1,56 @@
name = 'toml++'
description = 'TOML for modern C++'
cpp = 17
github = 'marzer/tomlplusplus'
license = [ 'MIT', 'https://github.com/marzer/tomlplusplus/blob/master/LICENSE' ]
show_includes = false
logo = 'images/logo.png'
favicon = 'images/favicon.ico'
navbar = [ 'namespaces', 'annotated' ]
extra_files = [
'images/banner_small.png',
'images/badge-awesome.svg',
'images/badge-TOML.svg',
'images/badge-C++20.svg'
]
[warnings]
enabled = true
treat_as_errors = false
undocumented = false
[defines]
'TOML_ASYMMETRICAL_EQUALITY_OPS(...)' = 'static_assert(true)'
'TOML_ABI_NAMESPACE_START(...)' = ''
'TOML_ABI_NAMESPACE_BOOL(...)' = ''
[meta]
'google-site-verification' = 'gbtcNgKlNiPSMKkYMw4zWFVWGPH_oU93m9n_-nb4qK8'
[highlighting]
types = []
macros = [
'TOML_[A-Z0-9_]+?',
'print_value'
]
string_literals = [ '_toml' ]
[badges]
'1. C++20' = [ 'badge-C++20.svg', 'https://en.cppreference.com/w/cpp/compiler_support' ]
'2. TOML v1.0.0' = [ 'badge-TOML.svg', 'https://toml.io/en/v1.0.0' ]
'3. CircleCI' = [ 'https://img.shields.io/circleci/build/github/marzer/tomlplusplus?label=circle%20ci&logo=circleci&logoColor=white&style=flat-square', 'https://circleci.com/gh/marzer/tomlplusplus' ]
'4. Mentioned in Awesome C++' = [ 'badge-awesome.svg', 'https://github.com/fffaraz/awesome-cpp' ]
[autolinks]

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.0 KiB

View File

Before

Width:  |  Height:  |  Size: 1.6 KiB

After

Width:  |  Height:  |  Size: 1.6 KiB

View File

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="86" height="20" role="img" aria-label="TOML: v1.0.0"><title>TOML: v1.0.0</title><g shape-rendering="crispEdges"><rect width="41" height="20" fill="#555"/><rect x="41" width="45" height="20" fill="#007ec6"/></g><g fill="#fff" text-anchor="middle" font-family="Verdana,Geneva,DejaVu Sans,sans-serif" text-rendering="geometricPrecision" font-size="110"><text x="215" y="140" transform="scale(.1)" fill="#fff" textLength="310">TOML</text><text x="625" y="140" transform="scale(.1)" fill="#fff" textLength="350">v1.0.0</text></g></svg>

After

Width:  |  Height:  |  Size: 620 B

View File

Before

Width:  |  Height:  |  Size: 4.8 KiB

After

Width:  |  Height:  |  Size: 4.8 KiB

View File

Before

Width:  |  Height:  |  Size: 12 KiB

After

Width:  |  Height:  |  Size: 12 KiB

View File

Before

Width:  |  Height:  |  Size: 10 KiB

After

Width:  |  Height:  |  Size: 10 KiB

View File

Before

Width:  |  Height:  |  Size: 1.1 KiB

After

Width:  |  Height:  |  Size: 1.1 KiB

View File

Before

Width:  |  Height:  |  Size: 2.2 KiB

After

Width:  |  Height:  |  Size: 2.2 KiB

View File

@ -1,337 +0,0 @@
html, body
{
scroll-padding-top: 3.5rem;
}
body
{
margin-top: 3rem;
}
@media screen and (min-width: 768px) and (max-width: 991px)
{
body
{
margin-top: 6rem;
}
}
a
{
text-decoration: none !important;
}
header
{
position: fixed;
left: 0;
right: 0;
top: 0;
z-index: 100;
}
header, header *
{
white-space: nowrap;
}
article, article > header, article div > section
{
margin-bottom: 5rem;
}
article div > section > section
{
margin-bottom: 2.25rem;
}
article section.m-doc-details > div
{
background-color: rgba(0,0,0,0.07)
}
article section.m-doc-details > div > h3:first-child
{
background-color: #22272e;
}
pre, code, .muu-enable-if > a
{
font-family: 'Consolas', 'Source Code Pro', monospace;
}
a.muu-external
{
font-weight: normal;
}
pre a.muu-external,
pre a.muu-injected
{
font-weight: inherit !important;
color: inherit !important;
}
.muu-enable-if
{
margin-bottom: 2px;
}
.muu-enable-if > *
{
display: inline-block;
border-radius: 0.2rem;
background-clip: padding-box !important;
padding: 0px 2px;
text-decoration: none;
}
.muu-enable-if > a
{
white-space: nowrap;
font-size: 0.7rem;
font-weight: bold;
background-color: #858585;
color: #050505;
}
.muu-enable-if > a:hover
{
background-color: #747474;
color: initial;
}
.muu-enable-if > span
{
display: none;
padding-left: 2em;
}
@media screen and (min-width: 576px)
{
nav .m-thin
{
margin-left: 0.5em;
}
nav .github
{
padding-left: 44px !important;
background-image: url("github-icon.png");
background-repeat: no-repeat;
background-size: 25px 25px;
background-position: -30px center;
background-origin: content-box;
}
}
@media screen and (max-width: 575px)
{
nav .m-thin, nav .github
{
display: none;
}
}
/* code blocks w/ output examples */
pre.m-code + pre.m-console
{
margin-top: -1.0rem;
border-top: 1px solid #444444;
font-size: 0.8rem;
background-color: #1a1c1d !important;
}
pre.m-code + pre.m-console span
{
color: #bababa; /* is yououou */
}
/* "Parameters", "Returns" etc */
.m-doc-details div table.m-table th,
.m-doc-details div table.m-table td strong em,
.m-doc-details div table.m-table td strong em,
body article p strong em,
body article table strong em
{
color: #a5c9ea;
font-style: normal;
}
/* comments */
.m-code .c1
{
color: rgb(87,166,74);
}
/* int and float literals */
.m-code .mb,
.m-code .mi,
.m-code .mf,
.m-code .mh
{
color: rgb(181,206,168);
}
/* keywords */
.m-code .k
{
color: rgb(86,156,214);
}
.m-code .kt,
.m-code .k,
.m-code .nc
{
font-weight: normal;
}
/* identifier names */
.m-code .n
{
color: rgb(220,220,220);
}
/* punctuators (brackets etc) */
.m-code .p
{
color: rgb(120,120,120);
}
/* preprocessor directives */
.m-code .cp
{
color: rgb(120,120,120);
}
/* macros */
.m-code .m
{
color: rgb(190,183,255);
}
/* string literals, "includes" */
.m-code .s,
.m-code .sa,
.m-code .dl,
.m-code .cpf
{
color: rgb(214,157,133);
}
/* user types and typedefs */
.m-code .ut,
.m-code .nc
{
color: rgb(78,201,176);
}
/* namespace::scopes:: */
.m-code .ns
{
color: rgb(140,140,140);
}
/* github badges (index.html) */
.gh-badges
{
padding-bottom: 0.25rem;
margin-left: -0.9rem;
margin-right: -0.9rem;
margin-top: -0.5rem;
}
@media screen and (min-width: 992px)
{
.gh-badges
{
display: flex;
justify-content: space-between;
}
.gh-badges br
{
display: none;
}
}
@media screen and (max-width: 991px)
{
.gh-badges
{
text-align: center;
line-height: 1.75rem;
}
.gh-badges a
{
margin-left: 0.2rem;
margin-right: 0.2rem;
margin-bottom: 0.4rem;
}
}
/* page category subheading ("module" etc) */
h1 span.m-thin
{
color: #747474;
}
/* banner on index page */
main > article > .m-container.m-container-inflatable > .m-row > div.m-col-l-10.m-push-l-1 > img.m-image
{
border-color: #405363;
border-style: solid;
border-width: 0.1rem;
margin-left: -1rem;
margin-right: -1rem;
margin-top: -1.75rem;
max-width: calc(100% + 2rem);
}
/* include <blah.h> */
.m-doc-details div h3
{
overflow: auto;
}
h1 .m-doc-include,
h3 .m-doc-include
{
float: right;
}
h1 .m-doc-include *,
h3 .m-doc-include *
{
opacity: 1.0 !important;
}
h1 .m-doc-include .cp,
h3 .m-doc-include .cp
{
color: #747474;
}
/* "Try this code on Compiler Explorer" */
.godbolt
{
font-family: 'Source Sans Pro', sans-serif;
}
p.godbolt
{
text-align: center;
padding: 0.0rem;
text-indent: 0.0rem;
opacity: 0.5;
}
p.godbolt:hover
{
opacity: 1.0;
}
a.godbolt
{
padding: 0.5rem;
display: inline-block;
}
pre > p.godbolt
{
float: right;
}
@media screen and (max-width: 767px)
{
.godbolt
{
display: none;
}
}

View File

@ -1,18 +0,0 @@
function ToggleEnableIf(anchor)
{
if (!anchor.hasOwnProperty('enableIfHidden'))
anchor['enableIfHidden'] = true;
anchor.enableIfHidden = !anchor.enableIfHidden;
content = anchor.parentNode.getElementsByTagName('span')[0]
if (anchor.enableIfHidden)
{
anchor.style.display = "";
content.style.display = "";
}
else
{
anchor.style.display = "none";
content.style.display = "block";
}
}

View File

@ -424,7 +424,7 @@
////////////////////////////////// //////////////////////////////////
/// ///
/// \subsection mainpage-adding-lib-old-school "The old fashioned way" /// \subsection mainpage-adding-lib-old-school "The old fashioned way"
/// Clone \gh2{marzer/tomlplusplus, the repository} from GitHub, and then: /// Clone \github{marzer/tomlplusplus, the repository} from GitHub, and then:
/// ///
/// <h3>[emoji icecream] Single-header flavour</h3> /// <h3>[emoji icecream] Single-header flavour</h3>
/// 1. Drop `toml.hpp` wherever you like in your source tree /// 1. Drop `toml.hpp` wherever you like in your source tree
@ -475,7 +475,7 @@
/// ///
/// \subsection mainpage-adding-lib-python Special mention: Python /// \subsection mainpage-adding-lib-python Special mention: Python
/// Yes, you read correctly, python. There exists a python wrapper built around toml++ called /// Yes, you read correctly, python. There exists a python wrapper built around toml++ called
/// \gh2{bobfang1992/pytomlpp, pytomlpp}: /// \github{bobfang1992/pytomlpp, pytomlpp}:
/// ///
/// \bash /// \bash
/// pip install pytomlpp /// pip install pytomlpp
@ -496,9 +496,9 @@
////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////
/// ///
/// \section mainpage-contributing Contributing /// \section mainpage-contributing Contributing
/// Contributions are very welcome! Either by \gh2{marzer/tomlplusplus/issues, reporting issues} /// Contributions are very welcome! Either by \github{marzer/tomlplusplus/issues, reporting issues}
/// or submitting pull requests. If you wish to submit a pull request, /// or submitting pull requests. If you wish to submit a pull request,
/// please see \gh2{marzer/tomlplusplus/blob/master/CONTRIBUTING.md, CONTRIBUTING} /// please see \github{marzer/tomlplusplus/blob/master/CONTRIBUTING.md, CONTRIBUTING}
/// for all the details you need to get going. /// for all the details you need to get going.
/// ///
////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////
@ -516,7 +516,7 @@
////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////
/// ///
/// \section mainpage-contact Contacting the author /// \section mainpage-contact Contacting the author
/// For bug reports and feature requests please use the \gh2{marzer/tomlplusplus/issues, Github Issues} /// For bug reports and feature requests please use the \github{marzer/tomlplusplus/issues, Github Issues}
/// system. For anything else you're welcome to reach out via other means. In order of likely response speed: /// system. For anything else you're welcome to reach out via other means. In order of likely response speed:
/// - Twitter: [marzer8789](https://twitter.com/marzer8789) /// - Twitter: [marzer8789](https://twitter.com/marzer8789)
/// - Email: [mark.gillard@outlook.com.au](mailto:mark.gillard@outlook.com.au) /// - Email: [mark.gillard@outlook.com.au](mailto:mark.gillard@outlook.com.au)

View File

@ -33,18 +33,18 @@
<ImportGroup Label="PropertySheets"> <ImportGroup Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup> </ImportGroup>
<Import Project="toml++.props" /> <Import Project="..\toml++.props" />
<PropertyGroup> <PropertyGroup>
<LocalDebuggerWorkingDirectory>$(SolutionDir)..\examples\</LocalDebuggerWorkingDirectory> <LocalDebuggerWorkingDirectory>$(SolutionDir)..\examples\</LocalDebuggerWorkingDirectory>
</PropertyGroup> </PropertyGroup>
<ItemGroup> <ItemGroup>
<Natvis Include="toml++.natvis" /> <Natvis Include="..\toml++.natvis" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<ClCompile Include="..\examples\error_printer.cpp" /> <ClCompile Include="error_printer.cpp" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<None Include="..\examples\meson.build" /> <None Include="meson.build" />
</ItemGroup> </ItemGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" /> <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
</Project> </Project>

View File

@ -33,19 +33,19 @@
<ImportGroup Label="PropertySheets"> <ImportGroup Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup> </ImportGroup>
<Import Project="toml++.props" /> <Import Project="..\toml++.props" />
<PropertyGroup> <PropertyGroup>
<LocalDebuggerWorkingDirectory>$(SolutionDir)..\examples\</LocalDebuggerWorkingDirectory> <LocalDebuggerWorkingDirectory>$(SolutionDir)..\examples\</LocalDebuggerWorkingDirectory>
</PropertyGroup> </PropertyGroup>
<ItemGroup> <ItemGroup>
<ClCompile Include="..\examples\simple_parser.cpp" /> <ClCompile Include="simple_parser.cpp" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<None Include="..\examples\example.toml" /> <None Include="example.toml" />
<None Include="..\examples\meson.build" /> <None Include="meson.build" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<Natvis Include="toml++.natvis" /> <Natvis Include="..\toml++.natvis" />
</ItemGroup> </ItemGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" /> <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
</Project> </Project>

View File

@ -34,18 +34,18 @@
<ImportGroup Label="PropertySheets"> <ImportGroup Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup> </ImportGroup>
<Import Project="toml++.props" /> <Import Project="..\toml++.props" />
<PropertyGroup> <PropertyGroup>
<LocalDebuggerWorkingDirectory>$(SolutionDir)..\examples\</LocalDebuggerWorkingDirectory> <LocalDebuggerWorkingDirectory>$(SolutionDir)..\examples\</LocalDebuggerWorkingDirectory>
</PropertyGroup> </PropertyGroup>
<ItemGroup> <ItemGroup>
<ClCompile Include="..\examples\toml_generator.cpp" /> <ClCompile Include="toml_generator.cpp" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<Natvis Include="toml++.natvis" /> <Natvis Include="..\toml++.natvis" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<None Include="..\examples\meson.build" /> <None Include="meson.build" />
</ItemGroup> </ItemGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" /> <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
</Project> </Project>

View File

@ -34,18 +34,18 @@
<ImportGroup Label="PropertySheets"> <ImportGroup Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup> </ImportGroup>
<Import Project="toml++.props" /> <Import Project="..\toml++.props" />
<PropertyGroup> <PropertyGroup>
<LocalDebuggerWorkingDirectory>$(SolutionDir)..\examples\</LocalDebuggerWorkingDirectory> <LocalDebuggerWorkingDirectory>$(SolutionDir)..\examples\</LocalDebuggerWorkingDirectory>
</PropertyGroup> </PropertyGroup>
<ItemGroup> <ItemGroup>
<ClCompile Include="..\examples\toml_to_json_transcoder.cpp" /> <ClCompile Include="toml_to_json_transcoder.cpp" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<Natvis Include="toml++.natvis" /> <Natvis Include="..\toml++.natvis" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<None Include="..\examples\meson.build" /> <None Include="meson.build" />
</ItemGroup> </ItemGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" /> <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
</Project> </Project>

1
extern/Catch2 vendored

@ -1 +0,0 @@
Subproject commit 87074da73ecb1c2e7c35fd14f50ca21c4c002adc

1
extern/mcss vendored

@ -1 +0,0 @@
Subproject commit 42d4a9a48f31f5df6e246c948403b54b50574a2a

1
extern/tloptional vendored

@ -1 +0,0 @@
Subproject commit 0dfc7b4e41b1245e47936d6c99bf8e3d80e42b9f

1
external/Catch2 vendored Submodule

@ -0,0 +1 @@
Subproject commit 5c88067bd339465513af4aec606bd2292f1b594a

1
external/dox vendored Submodule

@ -0,0 +1 @@
Subproject commit 7b0185b36ed56e4963315aafdc444818b97d21f3

1
external/tloptional vendored Submodule

@ -0,0 +1 @@
Subproject commit e28828efa021bf51f1c8cc3248642ec5a636c8d7

View File

@ -12,8 +12,8 @@
#include "toml_preprocessor.h" #include "toml_preprocessor.h"
TOML_PUSH_WARNINGS TOML_PUSH_WARNINGS;
TOML_DISABLE_SPAM_WARNINGS TOML_DISABLE_SPAM_WARNINGS;
#include "toml_common.h" #include "toml_common.h"
#include "toml_date_time.h" #include "toml_date_time.h"
@ -50,7 +50,7 @@ TOML_DISABLE_SPAM_WARNINGS
#endif // TOML_IMPLEMENTATION #endif // TOML_IMPLEMENTATION
TOML_POP_WARNINGS // TOML_DISABLE_SPAM_WARNINGS TOML_POP_WARNINGS; // TOML_DISABLE_SPAM_WARNINGS
// macro hygiene // macro hygiene
#if TOML_UNDEF_MACROS #if TOML_UNDEF_MACROS

View File

@ -6,6 +6,7 @@
#pragma once #pragma once
#include "toml_value.h" #include "toml_value.h"
/// \cond
TOML_IMPL_NAMESPACE_START TOML_IMPL_NAMESPACE_START
{ {
template <bool IsConst> template <bool IsConst>
@ -165,7 +166,7 @@ TOML_IMPL_NAMESPACE_START
return *(raw_ + idx)->get(); return *(raw_ + idx)->get();
} }
TOML_DISABLE_WARNINGS TOML_DISABLE_WARNINGS;
template <bool C = IsConst, typename = std::enable_if_t<!C>> template <bool C = IsConst, typename = std::enable_if_t<!C>>
operator array_iterator<true>() const noexcept operator array_iterator<true>() const noexcept
@ -173,7 +174,7 @@ TOML_IMPL_NAMESPACE_START
return array_iterator<true>{ raw_ }; return array_iterator<true>{ raw_ };
} }
TOML_ENABLE_WARNINGS TOML_ENABLE_WARNINGS;
}; };
template <typename T> template <typename T>
@ -248,7 +249,8 @@ TOML_IMPL_NAMESPACE_START
return make_node(std::move(val.value)); return make_node(std::move(val.value));
} }
} }
TOML_IMPL_NAMESPACE_END TOML_IMPL_NAMESPACE_END;
/// \endcond
TOML_NAMESPACE_START TOML_NAMESPACE_START
{ {
@ -313,6 +315,8 @@ TOML_NAMESPACE_START
: public node : public node
{ {
private: private:
/// \cond
friend class TOML_PARSER_TYPENAME; friend class TOML_PARSER_TYPENAME;
std::vector<std::unique_ptr<node>> elements; std::vector<std::unique_ptr<node>> elements;
@ -334,6 +338,11 @@ TOML_NAMESPACE_START
void lh_dtor() noexcept; void lh_dtor() noexcept;
#endif #endif
[[nodiscard]] size_t total_leaf_count() const noexcept;
void flatten_child(array&& child, size_t& dest_index) noexcept;
/// \endcond
public: public:
using value_type = node; using value_type = node;
@ -423,6 +432,9 @@ TOML_NAMESPACE_START
#endif #endif
} }
/// \name Type checks
/// @{
[[nodiscard]] node_type type() const noexcept override; [[nodiscard]] node_type type() const noexcept override;
[[nodiscard]] bool is_table() const noexcept override; [[nodiscard]] bool is_table() const noexcept override;
[[nodiscard]] bool is_array() const noexcept override; [[nodiscard]] bool is_array() const noexcept override;
@ -449,6 +461,11 @@ TOML_NAMESPACE_START
return is_homogeneous(impl::node_type_of<type>); return is_homogeneous(impl::node_type_of<type>);
} }
/// @}
/// \name Array operations
/// @{
/// \brief Gets a reference to the element at a specific index. /// \brief Gets a reference to the element at a specific index.
[[nodiscard]] node& operator[] (size_t index) noexcept; [[nodiscard]] node& operator[] (size_t index) noexcept;
/// \brief Gets a reference to the element at a specific index. /// \brief Gets a reference to the element at a specific index.
@ -512,10 +529,9 @@ TOML_NAMESPACE_START
/// \param pos The insertion position. /// \param pos The insertion position.
/// \param val The node or value being inserted. /// \param val The node or value being inserted.
/// ///
/// \returns <strong><em>Valid input:</em></strong><br> /// \returns \conditional_return{Valid input}
/// An iterator to the newly-inserted element. /// An iterator to the newly-inserted element.
/// <br><br> /// \conditional_return{Input is an empty toml::node_view}
/// <strong><em>`val` is an empty toml::node_view:</em></strong><br>
/// end() /// end()
/// ///
/// \attention The return value will always be `end()` if the input value was an empty toml::node_view, /// \attention The return value will always be `end()` if the input value was an empty toml::node_view,
@ -559,13 +575,11 @@ TOML_NAMESPACE_START
/// \param count The number of times the node or value should be inserted. /// \param count The number of times the node or value should be inserted.
/// \param val The node or value being inserted. /// \param val The node or value being inserted.
/// ///
/// \returns <strong><em>Valid input:</em></strong><br> /// \returns \conditional_return{Valid input}
/// An iterator to the newly-inserted element. /// An iterator to the newly-inserted element.
/// <br><br> /// \conditional_return{count == 0}
/// <strong><em>`count == 0`:</em></strong><br>
/// A copy of pos /// A copy of pos
/// <br><br> /// \conditional_return{Input is an empty toml::node_view}
/// <strong><em>`val` is an empty toml::node_view:</em></strong><br>
/// end() /// end()
/// ///
/// \attention The return value will always be `end()` if the input value was an empty toml::node_view, /// \attention The return value will always be `end()` if the input value was an empty toml::node_view,
@ -604,13 +618,11 @@ TOML_NAMESPACE_START
/// \param first Iterator to the first node or value being inserted. /// \param first Iterator to the first node or value being inserted.
/// \param last Iterator to the one-past-the-last node or value being inserted. /// \param last Iterator to the one-past-the-last node or value being inserted.
/// ///
/// \returns <strong><em>Valid input:</em></strong><br> /// \returns \conditional_return{Valid input}
/// An iterator to the first newly-inserted element. /// An iterator to the first newly-inserted element.
/// <br><br> /// \conditional_return{first >= last}
/// <strong><em>`first >= last`:</em></strong><br>
/// A copy of pos /// A copy of pos
/// <br><br> /// \conditional_return{All objects in the range were empty toml::node_views}
/// <strong><em>All objects in the range were empty toml::node_views:</em></strong><br>
/// A copy of pos /// A copy of pos
template <typename Iter> template <typename Iter>
iterator insert(const_iterator pos, Iter first, Iter last) noexcept iterator insert(const_iterator pos, Iter first, Iter last) noexcept
@ -656,14 +668,12 @@ TOML_NAMESPACE_START
/// \param pos The insertion position. /// \param pos The insertion position.
/// \param ilist An initializer list containing the values to be inserted. /// \param ilist An initializer list containing the values to be inserted.
/// ///
/// \returns <strong><em>Valid input:</em></strong><br> /// \returns \conditional_return{Valid input}
/// An iterator to the first newly-inserted element. /// An iterator to the first newly-inserted element.
/// <br><br> /// \conditional_return{Input list is empty}
/// <strong><em>`ilist.size() == 0`:</em></strong><br> /// A copy of pos
/// A copy of pos /// \conditional_return{All objects in the list were empty toml::node_views}
/// <br><br> /// A copy of pos
/// <strong><em>All objects in the list were empty toml::node_views:</em></strong><br>
/// A copy of pos
template <typename ElemType> template <typename ElemType>
iterator insert(const_iterator pos, std::initializer_list<ElemType> ilist) noexcept iterator insert(const_iterator pos, std::initializer_list<ElemType> ilist) noexcept
{ {
@ -955,6 +965,40 @@ TOML_NAMESPACE_START
return nullptr; return nullptr;
} }
/// \brief Flattens this array, recursively hoisting the contents of child arrays up into itself.
///
/// \detail \cpp
///
/// auto arr = toml::array{ 1, 2, toml::array{ 3, 4, toml::array{ 5 } }, 6, toml::array{} };
/// std::cout << arr << "\n";
///
/// arr.flatten();
/// std::cout << arr << "\n";
///
/// \ecpp
///
/// \out
/// [ 1, 2, [ 3, 4, [ 5 ] ], 6, [] ]
/// [ 1, 2, 3, 4, 5, 6 ]
/// \eout
///
/// \remarks Arrays inside child tables are not flattened.
///
/// \returns A reference to the array.
array& flatten()&;
/// \brief Flattens this array, recursively hoisting the contents of child arrays up into itself (rvalue overload).
/// \returns An rvalue reference to the array.
array&& flatten()&&
{
return static_cast<toml::array&&>(this->flatten());
}
/// @}
/// \name Equality
/// @{
/// \brief Equality operator. /// \brief Equality operator.
/// ///
/// \param lhs The LHS array. /// \param lhs The LHS array.
@ -999,10 +1043,6 @@ TOML_NAMESPACE_START
return true; return true;
} }
[[nodiscard]] size_t total_leaf_count() const noexcept;
void flatten_child(array&& child, size_t& dest_index) noexcept;
public: public:
/// \brief Initializer list equality operator. /// \brief Initializer list equality operator.
@ -1012,7 +1052,7 @@ TOML_NAMESPACE_START
{ {
return container_equality(lhs, rhs); return container_equality(lhs, rhs);
} }
TOML_ASYMMETRICAL_EQUALITY_OPS(const array&, const std::initializer_list<T>&, template <typename T>) TOML_ASYMMETRICAL_EQUALITY_OPS(const array&, const std::initializer_list<T>&, template <typename T>);
/// \brief Vector equality operator. /// \brief Vector equality operator.
template <typename T> template <typename T>
@ -1021,36 +1061,9 @@ TOML_NAMESPACE_START
{ {
return container_equality(lhs, rhs); return container_equality(lhs, rhs);
} }
TOML_ASYMMETRICAL_EQUALITY_OPS(const array&, const std::vector<T>&, template <typename T>) TOML_ASYMMETRICAL_EQUALITY_OPS(const array&, const std::vector<T>&, template <typename T>);
/// \brief Flattens this array, recursively hoisting the contents of child arrays up into itself. /// @}
///
/// \detail \cpp
///
/// auto arr = toml::array{ 1, 2, toml::array{ 3, 4, toml::array{ 5 } }, 6, toml::array{} };
/// std::cout << arr << "\n";
///
/// arr.flatten();
/// std::cout << arr << "\n";
///
/// \ecpp
///
/// \out
/// [ 1, 2, [ 3, 4, [ 5 ] ], 6, [] ]
/// [ 1, 2, 3, 4, 5, 6 ]
/// \eout
///
/// \remarks Arrays inside child tables are not flattened.
///
/// \returns A reference to the array.
array& flatten() &;
/// \brief Flattens this array, recursively hoisting the contents of child arrays up into itself (rvalue overload).
/// \returns An rvalue reference to the array.
array&& flatten() &&
{
return static_cast<toml::array&&>(this->flatten());
}
/// \brief Prints the array out to a stream as formatted TOML. /// \brief Prints the array out to a stream as formatted TOML.
template <typename Char> template <typename Char>
@ -1058,4 +1071,4 @@ TOML_NAMESPACE_START
// implemented in toml_default_formatter.h // implemented in toml_default_formatter.h
}; };
} }
TOML_NAMESPACE_END TOML_NAMESPACE_END;

View File

@ -355,4 +355,4 @@ TOML_NAMESPACE_START
return is_homogeneous(node_type::table); return is_homogeneous(node_type::table);
} }
} }
TOML_NAMESPACE_END TOML_NAMESPACE_END;

View File

@ -10,7 +10,7 @@
//# INCLUDES //# INCLUDES
//#==================================================================================================================== //#====================================================================================================================
TOML_DISABLE_WARNINGS TOML_DISABLE_WARNINGS;
#include <cstdint> #include <cstdint>
#include <cstddef> #include <cstddef>
#include <cstring> #include <cstring>
@ -30,7 +30,7 @@ TOML_DISABLE_WARNINGS
#if TOML_HAS_INCLUDE(<version>) #if TOML_HAS_INCLUDE(<version>)
#include <version> #include <version>
#endif #endif
TOML_ENABLE_WARNINGS TOML_ENABLE_WARNINGS;
#ifdef __cpp_lib_launder #ifdef __cpp_lib_launder
#define TOML_LAUNDER(x) std::launder(x) #define TOML_LAUNDER(x) std::launder(x)
@ -42,7 +42,7 @@ TOML_ENABLE_WARNINGS
//# ENVIRONMENT GROUND-TRUTHS //# ENVIRONMENT GROUND-TRUTHS
//#==================================================================================================================== //#====================================================================================================================
#ifndef DOXYGEN /// \cond
#ifndef TOML_DISABLE_ENVIRONMENT_CHECKS #ifndef TOML_DISABLE_ENVIRONMENT_CHECKS
#define TOML_ENV_MESSAGE \ #define TOML_ENV_MESSAGE \
"If you're seeing this error it's because you're building toml++ for an environment that doesn't conform to " \ "If you're seeing this error it's because you're building toml++ for an environment that doesn't conform to " \
@ -61,13 +61,14 @@ static_assert(std::numeric_limits<double>::digits10 == 15, TOML_ENV_MESSAGE);
#undef TOML_ENV_MESSAGE #undef TOML_ENV_MESSAGE
#endif // !TOML_DISABLE_ENVIRONMENT_CHECKS #endif // !TOML_DISABLE_ENVIRONMENT_CHECKS
#endif // !DOXYGEN /// \endcond
//#==================================================================================================================== //#====================================================================================================================
//# UNDOCUMENTED TYPEDEFS AND FORWARD DECLARATIONS //# UNDOCUMENTED TYPEDEFS AND FORWARD DECLARATIONS
//#==================================================================================================================== //#====================================================================================================================
#ifndef DOXYGEN // undocumented forward declarations are hidden from doxygen because they fuck it up =/ /// \cond
// undocumented forward declarations are hidden from doxygen because they fuck it up =/
namespace toml // non-abi namespace; this is not an error namespace toml // non-abi namespace; this is not an error
{ {
@ -103,7 +104,7 @@ TOML_NAMESPACE_START // abi namespace
TOML_ABI_NAMESPACE_BOOL(TOML_HAS_CUSTOM_OPTIONAL_TYPE, custopt, stdopt) TOML_ABI_NAMESPACE_BOOL(TOML_HAS_CUSTOM_OPTIONAL_TYPE, custopt, stdopt)
struct date_time; struct date_time;
TOML_ABI_NAMESPACE_END TOML_ABI_NAMESPACE_END;
class node; class node;
class array; class array;
@ -182,12 +183,12 @@ TOML_NAMESPACE_START // abi namespace
#define TOML_PARSER_TYPENAME TOML_NAMESPACE::impl::parser #define TOML_PARSER_TYPENAME TOML_NAMESPACE::impl::parser
#endif #endif
class parser; class parser;
TOML_ABI_NAMESPACE_END // TOML_EXCEPTIONS TOML_ABI_NAMESPACE_END; // TOML_EXCEPTIONS
} }
} }
TOML_NAMESPACE_END TOML_NAMESPACE_END;
#endif // !DOXYGEN /// \endcond
//#==================================================================================================================== //#====================================================================================================================
//# TYPEDEFS AND FORWARD DECLARATIONS //# TYPEDEFS AND FORWARD DECLARATIONS
@ -271,12 +272,13 @@ TOML_NAMESPACE_START // abi namespace
}; };
template <typename T> inserter(T&&) -> inserter<T>; template <typename T> inserter(T&&) -> inserter<T>;
} }
TOML_NAMESPACE_END TOML_NAMESPACE_END;
//#==================================================================================================================== //#====================================================================================================================
//# VALUE AND NODE TRAITS //# VALUE AND NODE TRAITS
//#==================================================================================================================== //#====================================================================================================================
/// \cond
TOML_IMPL_NAMESPACE_START TOML_IMPL_NAMESPACE_START
{ {
// general value traits // general value traits
@ -529,7 +531,8 @@ TOML_IMPL_NAMESPACE_START
template <typename T> template <typename T>
inline constexpr node_type node_type_of = node_type_getter<unwrap_node<remove_cvref_t<T>>>::value; inline constexpr node_type node_type_of = node_type_getter<unwrap_node<remove_cvref_t<T>>>::value;
} }
TOML_IMPL_NAMESPACE_END TOML_IMPL_NAMESPACE_END;
/// \endcond
TOML_NAMESPACE_START TOML_NAMESPACE_START
{ {
@ -577,12 +580,13 @@ TOML_NAMESPACE_START
template <typename T> template <typename T>
inline constexpr bool is_node_view = impl::is_one_of<impl::remove_cvref_t<T>, node_view<node>, node_view<const node>>; inline constexpr bool is_node_view = impl::is_one_of<impl::remove_cvref_t<T>, node_view<node>, node_view<const node>>;
} }
TOML_NAMESPACE_END TOML_NAMESPACE_END;
//#==================================================================================================================== //#====================================================================================================================
//# INTERNAL HELPERS //# INTERNAL HELPERS
//#==================================================================================================================== //#====================================================================================================================
/// \cond
TOML_IMPL_NAMESPACE_START TOML_IMPL_NAMESPACE_START
{ {
template <typename T> template <typename T>
@ -677,7 +681,8 @@ TOML_IMPL_NAMESPACE_START
"date-time"sv "date-time"sv
}; };
} }
TOML_IMPL_NAMESPACE_END TOML_IMPL_NAMESPACE_END;
/// \endcond
TOML_NAMESPACE_START TOML_NAMESPACE_START
{ {
@ -689,7 +694,7 @@ TOML_NAMESPACE_START
return static_cast<size_t>(n); return static_cast<size_t>(n);
} }
} }
TOML_NAMESPACE_END TOML_NAMESPACE_END;
//#==================================================================================================================== //#====================================================================================================================
//# SOURCE POSITIONS & REGIONS //# SOURCE POSITIONS & REGIONS
@ -824,10 +829,10 @@ TOML_NAMESPACE_START
#if TOML_WINDOWS_COMPAT #if TOML_WINDOWS_COMPAT
/// \brief The path to the corresponding source document as a wide-string. /// \brief The path to the corresponding source document as a wide-string.
///
/// \availability This function is only available when #TOML_WINDOWS_COMPAT is enabled.
/// ///
/// \remarks This will return an empty optional if no path was provided to toml::parse(). /// \remarks This will return an empty optional if no path was provided to toml::parse().
///
/// \attention This function is only available when #TOML_WINDOWS_COMPAT is enabled.
[[nodiscard]] [[nodiscard]]
optional<std::wstring> wide_path() const noexcept optional<std::wstring> wide_path() const noexcept
{ {
@ -839,9 +844,9 @@ TOML_NAMESPACE_START
#endif #endif
}; };
TOML_ABI_NAMESPACE_END // TOML_LARGE_FILES TOML_ABI_NAMESPACE_END; // TOML_LARGE_FILES
} }
TOML_NAMESPACE_END TOML_NAMESPACE_END;
//#==================================================================================================================== //#====================================================================================================================
//# OTHER //# OTHER
@ -864,7 +869,7 @@ TOML_NAMESPACE_START
/// \brief Format integer values as hexadecimal. /// \brief Format integer values as hexadecimal.
format_as_hexadecimal = 3, format_as_hexadecimal = 3,
}; };
TOML_MAKE_BITOPS(value_flags) TOML_MAKE_BITOPS(value_flags);
/// \brief Format flags for modifying how TOML data is printed to streams. /// \brief Format flags for modifying how TOML data is printed to streams.
enum class format_flags : uint8_t enum class format_flags : uint8_t
@ -884,7 +889,7 @@ TOML_NAMESPACE_START
/// \brief Values with special format flags will be formatted accordingly. /// \brief Values with special format flags will be formatted accordingly.
allow_value_format_flags = 8, allow_value_format_flags = 8,
}; };
TOML_MAKE_BITOPS(format_flags) TOML_MAKE_BITOPS(format_flags);
/// \brief Pretty-prints the value of a node_type to a stream. /// \brief Pretty-prints the value of a node_type to a stream.
/// ///
@ -917,8 +922,7 @@ TOML_NAMESPACE_START
} }
} }
#ifndef DOXYGEN /// \cond
namespace impl namespace impl
{ {
#define TOML_P2S_DECL(Type) \ #define TOML_P2S_DECL(Type) \
@ -949,7 +953,7 @@ TOML_NAMESPACE_START
extern template TOML_API std::ostream& operator << (std::ostream&, node_type); extern template TOML_API std::ostream& operator << (std::ostream&, node_type);
#endif // !TOML_HEADER_ONLY #endif // !TOML_HEADER_ONLY
#endif // !DOXYGEN /// \endcond
} }
TOML_NAMESPACE_END TOML_NAMESPACE_END;

View File

@ -400,7 +400,7 @@ TOML_NAMESPACE_START
} }
}; };
TOML_ABI_NAMESPACE_END // TOML_HAS_CUSTOM_OPTIONAL_TYPE TOML_ABI_NAMESPACE_END; // TOML_HAS_CUSTOM_OPTIONAL_TYPE
/// \brief Prints a date_time out to a stream in RFC 3339 format. /// \brief Prints a date_time out to a stream in RFC 3339 format.
/// \detail \cpp /// \detail \cpp
@ -425,4 +425,4 @@ TOML_NAMESPACE_START
extern template TOML_API std::ostream& operator << (std::ostream&, const date_time&); extern template TOML_API std::ostream& operator << (std::ostream&, const date_time&);
#endif #endif
} }
TOML_NAMESPACE_END TOML_NAMESPACE_END;

View File

@ -9,16 +9,18 @@
#include "toml_array.h" #include "toml_array.h"
#include "toml_utf8.h" #include "toml_utf8.h"
TOML_PUSH_WARNINGS TOML_PUSH_WARNINGS;
TOML_DISABLE_SWITCH_WARNINGS TOML_DISABLE_SWITCH_WARNINGS;
/// \cond
TOML_IMPL_NAMESPACE_START TOML_IMPL_NAMESPACE_START
{ {
[[nodiscard]] TOML_API std::string default_formatter_make_key_segment(const std::string&) noexcept; [[nodiscard]] TOML_API std::string default_formatter_make_key_segment(const std::string&) noexcept;
[[nodiscard]] TOML_API size_t default_formatter_inline_columns(const node&) noexcept; [[nodiscard]] TOML_API size_t default_formatter_inline_columns(const node&) noexcept;
[[nodiscard]] TOML_API bool default_formatter_forces_multiline(const node&, size_t = 0) noexcept; [[nodiscard]] TOML_API bool default_formatter_forces_multiline(const node&, size_t = 0) noexcept;
} }
TOML_IMPL_NAMESPACE_END TOML_IMPL_NAMESPACE_END;
/// \endcond
TOML_NAMESPACE_START TOML_NAMESPACE_START
{ {
@ -406,7 +408,7 @@ TOML_NAMESPACE_START
#endif // !DOXYGEN #endif // !DOXYGEN
} }
TOML_NAMESPACE_END TOML_NAMESPACE_END;
TOML_POP_WARNINGS // TOML_DISABLE_SWITCH_WARNINGS TOML_POP_WARNINGS; // TOML_DISABLE_SWITCH_WARNINGS

View File

@ -12,13 +12,13 @@
//# }} //# }}
#include "toml_default_formatter.h" #include "toml_default_formatter.h"
TOML_DISABLE_WARNINGS TOML_DISABLE_WARNINGS;
#include <cmath> #include <cmath>
TOML_ENABLE_WARNINGS TOML_ENABLE_WARNINGS;
TOML_PUSH_WARNINGS TOML_PUSH_WARNINGS;
TOML_DISABLE_SWITCH_WARNINGS TOML_DISABLE_SWITCH_WARNINGS;
TOML_DISABLE_ARITHMETIC_WARNINGS TOML_DISABLE_ARITHMETIC_WARNINGS;
TOML_IMPL_NAMESPACE_START TOML_IMPL_NAMESPACE_START
{ {
@ -160,7 +160,7 @@ TOML_IMPL_NAMESPACE_START
return (default_formatter_inline_columns(node) + starting_column_bias) >= default_formatter_line_wrap; return (default_formatter_inline_columns(node) + starting_column_bias) >= default_formatter_line_wrap;
} }
} }
TOML_IMPL_NAMESPACE_END TOML_IMPL_NAMESPACE_END;
TOML_NAMESPACE_START TOML_NAMESPACE_START
{ {
@ -199,14 +199,14 @@ TOML_NAMESPACE_START
base::clear_naked_newline(); base::clear_naked_newline();
} }
} }
TOML_NAMESPACE_END TOML_NAMESPACE_END;
// implementations of windows wide string nonsense // implementations of windows wide string nonsense
#if TOML_WINDOWS_COMPAT #if TOML_WINDOWS_COMPAT
TOML_DISABLE_WARNINGS TOML_DISABLE_WARNINGS;
#include <windows.h> // fuckkkk :( #include <windows.h> // fuckkkk :(
TOML_ENABLE_WARNINGS TOML_ENABLE_WARNINGS;
TOML_IMPL_NAMESPACE_START TOML_IMPL_NAMESPACE_START
{ {
@ -260,8 +260,8 @@ TOML_IMPL_NAMESPACE_START
#endif // __cpp_lib_char8_t #endif // __cpp_lib_char8_t
} }
TOML_IMPL_NAMESPACE_END TOML_IMPL_NAMESPACE_END;
#endif // TOML_WINDOWS_COMPAT #endif // TOML_WINDOWS_COMPAT
TOML_POP_WARNINGS // TOML_DISABLE_SWITCH_WARNINGS, TOML_DISABLE_ARITHMETIC_WARNINGS TOML_POP_WARNINGS; // TOML_DISABLE_SWITCH_WARNINGS, TOML_DISABLE_ARITHMETIC_WARNINGS

View File

@ -6,9 +6,10 @@
#pragma once #pragma once
#include "toml_print_to_stream.h" #include "toml_print_to_stream.h"
TOML_PUSH_WARNINGS TOML_PUSH_WARNINGS;
TOML_DISABLE_SWITCH_WARNINGS TOML_DISABLE_SWITCH_WARNINGS;
/// \cond
TOML_IMPL_NAMESPACE_START TOML_IMPL_NAMESPACE_START
{ {
template <typename Char = char> template <typename Char = char>
@ -232,6 +233,7 @@ TOML_IMPL_NAMESPACE_START
#endif #endif
} }
TOML_IMPL_NAMESPACE_END TOML_IMPL_NAMESPACE_END;
/// \endcond
TOML_POP_WARNINGS // TOML_DISABLE_SWITCH_WARNINGS TOML_POP_WARNINGS; // TOML_DISABLE_SWITCH_WARNINGS

View File

@ -14,11 +14,11 @@
#endif #endif
//# }} //# }}
TOML_DISABLE_WARNINGS TOML_DISABLE_WARNINGS;
#include <ostream> #include <ostream>
#include <istream> #include <istream>
#include <fstream> #include <fstream>
TOML_ENABLE_WARNINGS TOML_ENABLE_WARNINGS;
#include "toml_node_view.h" #include "toml_node_view.h"
#include "toml_default_formatter.h" #include "toml_default_formatter.h"
@ -36,7 +36,7 @@ TOML_IMPL_NAMESPACE_START
// print to stream machinery // print to stream machinery
template TOML_API void print_floating_point_to_stream(double, std::ostream&, bool); template TOML_API void print_floating_point_to_stream(double, std::ostream&, bool);
} }
TOML_IMPL_NAMESPACE_END TOML_IMPL_NAMESPACE_END;
// public namespace // public namespace
TOML_NAMESPACE_START TOML_NAMESPACE_START
@ -148,8 +148,8 @@ TOML_NAMESPACE_START
template TOML_API parse_result parse_file(std::wstring_view) TOML_MAY_THROW; template TOML_API parse_result parse_file(std::wstring_view) TOML_MAY_THROW;
#endif #endif
TOML_ABI_NAMESPACE_END // TOML_EXCEPTIONS TOML_ABI_NAMESPACE_END; // TOML_EXCEPTIONS
#endif // TOML_PARSER #endif // TOML_PARSER
} }
TOML_NAMESPACE_END TOML_NAMESPACE_END;

View File

@ -6,8 +6,8 @@
#pragma once #pragma once
#include "toml_formatter.h" #include "toml_formatter.h"
TOML_PUSH_WARNINGS TOML_PUSH_WARNINGS;
TOML_DISABLE_SWITCH_WARNINGS TOML_DISABLE_SWITCH_WARNINGS;
TOML_NAMESPACE_START TOML_NAMESPACE_START
{ {
@ -154,6 +154,6 @@ TOML_NAMESPACE_START
extern template TOML_API std::ostream& operator << (std::ostream&, json_formatter<char>&&); extern template TOML_API std::ostream& operator << (std::ostream&, json_formatter<char>&&);
#endif #endif
} }
TOML_NAMESPACE_END TOML_NAMESPACE_END;
TOML_POP_WARNINGS // TOML_DISABLE_SWITCH_WARNINGS TOML_POP_WARNINGS; // TOML_DISABLE_SWITCH_WARNINGS

View File

@ -13,8 +13,8 @@
#include "toml_json_formatter.h" #include "toml_json_formatter.h"
TOML_PUSH_WARNINGS TOML_PUSH_WARNINGS;
TOML_DISABLE_SWITCH_WARNINGS TOML_DISABLE_SWITCH_WARNINGS;
TOML_NAMESPACE_START TOML_NAMESPACE_START
{ {
@ -58,6 +58,6 @@ TOML_NAMESPACE_START
base::clear_naked_newline(); base::clear_naked_newline();
} }
} }
TOML_NAMESPACE_END TOML_NAMESPACE_END;
TOML_POP_WARNINGS // TOML_DISABLE_SWITCH_WARNINGS TOML_POP_WARNINGS; // TOML_DISABLE_SWITCH_WARNINGS

View File

@ -67,6 +67,35 @@ TOML_NAMESPACE_START
friend class TOML_PARSER_TYPENAME; friend class TOML_PARSER_TYPENAME;
source_region source_{}; source_region source_{};
/// \cond
template <typename T>
[[nodiscard]]
decltype(auto) get_value_exact() const noexcept;
template <typename T, typename N>
[[nodiscard]]
TOML_ATTR(pure)
static decltype(auto) do_ref(N&& n) noexcept
{
using type = impl::unwrap_node<T>;
static_assert(
(impl::is_native<type> || impl::is_one_of<type, table, array>) && !impl::is_cvref<type>,
"The template type argument of node::ref() must be one of:"
TOML_SA_UNWRAPPED_NODE_TYPE_LIST
);
TOML_ASSERT(
n.template is<T>()
&& "template type argument T provided to toml::node::ref() didn't match the node's actual type"
);
if constexpr (impl::is_native<type>)
return std::forward<N>(n).template ref_cast<type>().get();
else
return std::forward<N>(n).template ref_cast<type>();
}
/// \endcond
protected: protected:
node() noexcept = default; node() noexcept = default;
@ -109,7 +138,8 @@ TOML_NAMESPACE_START
virtual ~node() noexcept = default; virtual ~node() noexcept = default;
/// \name Type checks
/// @{
#if defined(DOXYGEN) || !TOML_ICC || TOML_ICC_CL #if defined(DOXYGEN) || !TOML_ICC || TOML_ICC_CL
@ -183,35 +213,6 @@ TOML_NAMESPACE_START
else if constexpr (std::is_same_v<type, date_time>) return is_date_time(); else if constexpr (std::is_same_v<type, date_time>) return is_date_time();
} }
/// \brief Returns a pointer to the node as a toml::table, if it is one.
[[nodiscard]] virtual table* as_table() noexcept;
/// \brief Returns a pointer to the node as a toml::array, if it is one.
[[nodiscard]] virtual array* as_array() noexcept;
/// \brief Returns a pointer to the node as a toml::value<string>, if it is one.
[[nodiscard]] virtual toml::value<std::string>* as_string() noexcept;
/// \brief Returns a pointer to the node as a toml::value<int64_t>, if it is one.
[[nodiscard]] virtual toml::value<int64_t>* as_integer() noexcept;
/// \brief Returns a pointer to the node as a toml::value<double>, if it is one.
[[nodiscard]] virtual toml::value<double>* as_floating_point() noexcept;
/// \brief Returns a pointer to the node as a toml::value<bool>, if it is one.
[[nodiscard]] virtual toml::value<bool>* as_boolean() noexcept;
/// \brief Returns a pointer to the node as a toml::value<date>, if it is one.
[[nodiscard]] virtual toml::value<date>* as_date() noexcept;
/// \brief Returns a pointer to the node as a toml::value<time>, if it is one.
[[nodiscard]] virtual toml::value<time>* as_time() noexcept;
/// \brief Returns a pointer to the node as a toml::value<date_time>, if it is one.
[[nodiscard]] virtual toml::value<date_time>* as_date_time() noexcept;
[[nodiscard]] virtual const table* as_table() const noexcept;
[[nodiscard]] virtual const array* as_array() const noexcept;
[[nodiscard]] virtual const toml::value<std::string>* as_string() const noexcept;
[[nodiscard]] virtual const toml::value<int64_t>* as_integer() const noexcept;
[[nodiscard]] virtual const toml::value<double>* as_floating_point() const noexcept;
[[nodiscard]] virtual const toml::value<bool>* as_boolean() const noexcept;
[[nodiscard]] virtual const toml::value<date>* as_date() const noexcept;
[[nodiscard]] virtual const toml::value<time>* as_time() const noexcept;
[[nodiscard]] virtual const toml::value<date_time>* as_date_time() const noexcept;
/// \brief Checks if a node contains values/elements of only one type. /// \brief Checks if a node contains values/elements of only one type.
/// ///
/// \detail \cpp /// \detail \cpp
@ -231,9 +232,12 @@ TOML_NAMESPACE_START
/// first non-match was a floating-point at line 1, column 18 /// first non-match was a floating-point at line 1, column 18
/// \eout /// \eout
/// ///
/// \param ntype A TOML node type. <br> /// \param ntype A TOML node type. <br>
/// <strong><em>toml::node_type::none: </em></strong> "is every element the same type?" <br> /// \conditional_return{toml::node_type::none}
/// <strong><em>Anything else:</em></strong> "is every element one of these?" /// "is every element the same type?"
/// \conditional_return{Anything else}
/// "is every element one of these?"
///
/// \param first_nonmatch Reference to a pointer in which the address of the first non-matching element /// \param first_nonmatch Reference to a pointer in which the address of the first non-matching element
/// will be stored if the return value is false. /// will be stored if the return value is false.
/// ///
@ -264,8 +268,10 @@ TOML_NAMESPACE_START
/// \eout /// \eout
/// ///
/// \param ntype A TOML node type. <br> /// \param ntype A TOML node type. <br>
/// <strong><em>toml::node_type::none: </em></strong> "is every element the same type?" <br> /// \conditional_return{toml::node_type::none}
/// <strong><em>Anything else:</em></strong> "is every element one of these?" /// "is every element the same type?"
/// \conditional_return{Anything else}
/// "is every element one of these?"
/// ///
/// \returns True if the node was homogeneous. /// \returns True if the node was homogeneous.
/// ///
@ -291,8 +297,10 @@ TOML_NAMESPACE_START
/// \eout /// \eout
/// ///
/// \tparam ElemType A TOML node or value type. <br> /// \tparam ElemType A TOML node or value type. <br>
/// <strong><em>Left as `void`:</em></strong> "is every element the same type?" <br> /// \conditional_return{Left as `void`}
/// <strong><em>Explicitly specified:</em></strong> "is every element a T?" /// "is every element the same type?" <br>
/// \conditional_return{Explicitly specified}
/// "is every element a T?"
/// ///
/// \returns True if the node was homogeneous. /// \returns True if the node was homogeneous.
/// ///
@ -312,18 +320,112 @@ TOML_NAMESPACE_START
return is_homogeneous(impl::node_type_of<type>); return is_homogeneous(impl::node_type_of<type>);
} }
private: /// @}
/// \name Type casts
/// @{
#ifndef DOXYGEN /// \brief Returns a pointer to the node as a toml::table, if it is one.
[[nodiscard]] virtual table* as_table() noexcept;
/// \brief Returns a pointer to the node as a toml::array, if it is one.
[[nodiscard]] virtual array* as_array() noexcept;
/// \brief Returns a pointer to the node as a toml::value<string>, if it is one.
[[nodiscard]] virtual toml::value<std::string>* as_string() noexcept;
/// \brief Returns a pointer to the node as a toml::value<int64_t>, if it is one.
[[nodiscard]] virtual toml::value<int64_t>* as_integer() noexcept;
/// \brief Returns a pointer to the node as a toml::value<double>, if it is one.
[[nodiscard]] virtual toml::value<double>* as_floating_point() noexcept;
/// \brief Returns a pointer to the node as a toml::value<bool>, if it is one.
[[nodiscard]] virtual toml::value<bool>* as_boolean() noexcept;
/// \brief Returns a pointer to the node as a toml::value<date>, if it is one.
[[nodiscard]] virtual toml::value<date>* as_date() noexcept;
/// \brief Returns a pointer to the node as a toml::value<time>, if it is one.
[[nodiscard]] virtual toml::value<time>* as_time() noexcept;
/// \brief Returns a pointer to the node as a toml::value<date_time>, if it is one.
[[nodiscard]] virtual toml::value<date_time>* as_date_time() noexcept;
[[nodiscard]] virtual const table* as_table() const noexcept;
[[nodiscard]] virtual const array* as_array() const noexcept;
[[nodiscard]] virtual const toml::value<std::string>* as_string() const noexcept;
[[nodiscard]] virtual const toml::value<int64_t>* as_integer() const noexcept;
[[nodiscard]] virtual const toml::value<double>* as_floating_point() const noexcept;
[[nodiscard]] virtual const toml::value<bool>* as_boolean() const noexcept;
[[nodiscard]] virtual const toml::value<date>* as_date() const noexcept;
[[nodiscard]] virtual const toml::value<time>* as_time() const noexcept;
[[nodiscard]] virtual const toml::value<date_time>* as_date_time() const noexcept;
/// \brief Gets a pointer to the node as a more specific node type.
///
/// \details \cpp
///
/// toml::value<int64_t>* int_value = node->as<int64_t>();
/// toml::table* tbl = node->as<toml::table>();
/// if (int_value)
/// std::cout << "Node is a value<int64_t>\n";
/// else if (tbl)
/// std::cout << "Node is a table\n";
///
/// // fully-qualified value node types also work (useful for template code):
/// toml::value<int64_t>* int_value2 = node->as<toml::value<int64_t>>();
/// if (int_value2)
/// std::cout << "Node is a value<int64_t>\n";
///
/// \ecpp
///
/// \tparam T The node type or TOML value type to cast to.
///
/// \returns A pointer to the node as the given type, or nullptr if it was a different type.
template <typename T> template <typename T>
[[nodiscard]] [[nodiscard]]
decltype(auto) get_value_exact() const noexcept; TOML_ATTR(pure)
impl::wrap_node<T>* as() noexcept
{
using type = impl::unwrap_node<T>;
static_assert(
(impl::is_native<type> || impl::is_one_of<type, table, array>) && !impl::is_cvref<type>,
"The template type argument of node::as() must be one of:"
TOML_SA_UNWRAPPED_NODE_TYPE_LIST
);
#endif // !DOXYGEN if constexpr (std::is_same_v<type, table>) return as_table();
else if constexpr (std::is_same_v<type, array>) return as_array();
else if constexpr (std::is_same_v<type, std::string>) return as_string();
else if constexpr (std::is_same_v<type, int64_t>) return as_integer();
else if constexpr (std::is_same_v<type, double>) return as_floating_point();
else if constexpr (std::is_same_v<type, bool>) return as_boolean();
else if constexpr (std::is_same_v<type, date>) return as_date();
else if constexpr (std::is_same_v<type, time>) return as_time();
else if constexpr (std::is_same_v<type, date_time>) return as_date_time();
}
public: /// \brief Gets a pointer to the node as a more specific node type (const overload).
template <typename T>
[[nodiscard]]
TOML_ATTR(pure)
const impl::wrap_node<T>* as() const noexcept
{
using type = impl::unwrap_node<T>;
static_assert(
(impl::is_native<type> || impl::is_one_of<type, table, array>) && !impl::is_cvref<type>,
"The template type argument of node::as() must be one of:"
TOML_SA_UNWRAPPED_NODE_TYPE_LIST
);
if constexpr (std::is_same_v<type, table>) return as_table();
else if constexpr (std::is_same_v<type, array>) return as_array();
else if constexpr (std::is_same_v<type, std::string>) return as_string();
else if constexpr (std::is_same_v<type, int64_t>) return as_integer();
else if constexpr (std::is_same_v<type, double>) return as_floating_point();
else if constexpr (std::is_same_v<type, bool>) return as_boolean();
else if constexpr (std::is_same_v<type, date>) return as_date();
else if constexpr (std::is_same_v<type, time>) return as_time();
else if constexpr (std::is_same_v<type, date_time>) return as_date_time();
}
/// @}
/// \name Value retrieval
/// @{
/// \brief Gets the value contained by this node. /// \brief Gets the value contained by this node.
/// ///
@ -463,8 +565,8 @@ TOML_NAMESPACE_START
/// \returns The underlying value if the node was a value of the matching type (or convertible to it) /// \returns The underlying value if the node was a value of the matching type (or convertible to it)
/// and within the range of the output type, or an empty optional. /// and within the range of the output type, or an empty optional.
/// ///
/// \attention If you want strict value retrieval semantics that do not allow for any type conversions, /// \note If you want strict value retrieval semantics that do not allow for any type conversions,
/// use node::value_exact() instead. /// use node::value_exact() instead.
/// ///
/// \see node::value_exact() /// \see node::value_exact()
template <typename T> template <typename T>
@ -481,9 +583,9 @@ TOML_NAMESPACE_START
/// \returns The underlying value if the node was a value of the matching type (or convertible to it) /// \returns The underlying value if the node was a value of the matching type (or convertible to it)
/// and within the range of the output type, or the provided default. /// and within the range of the output type, or the provided default.
/// ///
/// \attention This function has the same permissive retrieval semantics as node::value(). If you want strict /// \note This function has the same permissive retrieval semantics as node::value(). If you want strict
/// value retrieval semantics that do not allow for any type conversions, use node::value_exact() /// value retrieval semantics that do not allow for any type conversions, use node::value_exact()
/// instead. /// instead.
/// ///
/// \see /// \see
/// - node::value() /// - node::value()
@ -500,79 +602,65 @@ TOML_NAMESPACE_START
//[[nodiscard]] //[[nodiscard]]
//std::vector<T> select() const noexcept; //std::vector<T> select() const noexcept;
/// \brief Gets a pointer to the node as a more specific node type. /// \brief Gets a raw reference to a value node's underlying data.
/// ///
/// \details \cpp /// \warning This function is dangerous if used carelessly and **WILL** break your code if the
/// chosen value type doesn't match the node's actual type. In debug builds an assertion
/// will fire when invalid accesses are attempted: \cpp
///
/// auto tbl = toml::parse(R"(
/// min = 32
/// max = 45
/// )"sv);
/// ///
/// toml::value<int64_t>* int_value = node->as<int64_t>(); /// int64_t& min_ref = tbl.get("min")->ref<int64_t>(); // matching type
/// toml::table* tbl = node->as<toml::table>(); /// double& max_ref = tbl.get("max")->ref<double>(); // mismatched type, hits assert()
/// if (int_value) ///
/// std::cout << "Node is a value<int64_t>\n";
/// else if (tbl)
/// std::cout << "Node is a table\n";
///
/// // fully-qualified value node types also work (useful for template code):
/// toml::value<int64_t>* int_value2 = node->as<toml::value<int64_t>>();
/// if (int_value2)
/// std::cout << "Node is a value<int64_t>\n";
///
/// \ecpp /// \ecpp
/// ///
/// \tparam T The node type or TOML value type to cast to. /// \tparam T One of the TOML value types.
/// ///
/// \returns A pointer to the node as the given type, or nullptr if it was a different type. /// \returns A reference to the underlying data.
template <typename T> template <typename T>
[[nodiscard]] [[nodiscard]]
TOML_ATTR(pure) TOML_ATTR(pure)
impl::wrap_node<T>* as() noexcept impl::unwrap_node<T>& ref() & noexcept
{ {
using type = impl::unwrap_node<T>; return do_ref<T>(*this);
static_assert(
(impl::is_native<type> || impl::is_one_of<type, table, array>) && !impl::is_cvref<type>,
"The template type argument of node::as() must be one of:"
TOML_SA_UNWRAPPED_NODE_TYPE_LIST
);
if constexpr (std::is_same_v<type, table>) return as_table();
else if constexpr (std::is_same_v<type, array>) return as_array();
else if constexpr (std::is_same_v<type, std::string>) return as_string();
else if constexpr (std::is_same_v<type, int64_t>) return as_integer();
else if constexpr (std::is_same_v<type, double>) return as_floating_point();
else if constexpr (std::is_same_v<type, bool>) return as_boolean();
else if constexpr (std::is_same_v<type, date>) return as_date();
else if constexpr (std::is_same_v<type, time>) return as_time();
else if constexpr (std::is_same_v<type, date_time>) return as_date_time();
} }
/// \brief Gets a pointer to the node as a more specific node type (const overload). /// \brief Gets a raw reference to a value node's underlying data (rvalue overload).
template <typename T> template <typename T>
[[nodiscard]] [[nodiscard]]
TOML_ATTR(pure) TOML_ATTR(pure)
const impl::wrap_node<T>* as() const noexcept impl::unwrap_node<T>&& ref() && noexcept
{ {
using type = impl::unwrap_node<T>; return do_ref<T>(std::move(*this));
static_assert(
(impl::is_native<type> || impl::is_one_of<type, table, array>) && !impl::is_cvref<type>,
"The template type argument of node::as() must be one of:"
TOML_SA_UNWRAPPED_NODE_TYPE_LIST
);
if constexpr (std::is_same_v<type, table>) return as_table();
else if constexpr (std::is_same_v<type, array>) return as_array();
else if constexpr (std::is_same_v<type, std::string>) return as_string();
else if constexpr (std::is_same_v<type, int64_t>) return as_integer();
else if constexpr (std::is_same_v<type, double>) return as_floating_point();
else if constexpr (std::is_same_v<type, bool>) return as_boolean();
else if constexpr (std::is_same_v<type, date>) return as_date();
else if constexpr (std::is_same_v<type, time>) return as_time();
else if constexpr (std::is_same_v<type, date_time>) return as_date_time();
} }
/// \brief Gets a raw reference to a value node's underlying data (const lvalue overload).
template <typename T>
[[nodiscard]]
TOML_ATTR(pure)
const impl::unwrap_node<T>& ref() const& noexcept
{
return do_ref<T>(*this);
}
/// @}
/// \name Metadata
/// @{
/// \brief Returns the source region responsible for generating this node during parsing. /// \brief Returns the source region responsible for generating this node during parsing.
[[nodiscard]] const source_region& source() const noexcept; [[nodiscard]] const source_region& source() const noexcept;
/// @}
private: private:
/// \cond
template <typename Func, typename N, typename T> template <typename Func, typename N, typename T>
static constexpr bool can_visit = std::is_invocable_v<Func, ref_cast_type<N, T>>; static constexpr bool can_visit = std::is_invocable_v<Func, ref_cast_type<N, T>>;
@ -723,30 +811,13 @@ TOML_NAMESPACE_START
} }
} }
/// \endcond
template <typename T, typename N>
[[nodiscard]]
TOML_ATTR(pure)
static decltype(auto) do_ref(N&& n) noexcept
{
using type = impl::unwrap_node<T>;
static_assert(
(impl::is_native<type> || impl::is_one_of<type, table, array>) && !impl::is_cvref<type>,
"The template type argument of node::ref() must be one of:"
TOML_SA_UNWRAPPED_NODE_TYPE_LIST
);
TOML_ASSERT(
n.template is<T>()
&& "template type argument T provided to toml::node::ref() didn't match the node's actual type"
);
if constexpr (impl::is_native<type>)
return std::forward<N>(n).template ref_cast<type>().get();
else
return std::forward<N>(n).template ref_cast<type>();
}
public: public:
/// \name Visitation
/// @{
/// \brief Invokes a visitor on the node based on the node's concrete type. /// \brief Invokes a visitor on the node based on the node's concrete type.
/// ///
/// \details Visitation is useful when you expect /// \details Visitation is useful when you expect
@ -798,56 +869,18 @@ TOML_NAMESPACE_START
return do_visit(*this, std::forward<Func>(visitor)); return do_visit(*this, std::forward<Func>(visitor));
} }
/// \brief Gets a raw reference to a value node's underlying data. /// @}
///
/// \warning This function is dangerous if used carelessly and **WILL** break your code if the
/// chosen value type doesn't match the node's actual type. In debug builds an assertion
/// will fire when invalid accesses are attempted: \cpp
///
/// auto tbl = toml::parse(R"(
/// min = 32
/// max = 45
/// )"sv);
///
/// int64_t& min_ref = tbl.get("min")->ref<int64_t>(); // matching type
/// double& max_ref = tbl.get("max")->ref<double>(); // mismatched type, hits assert()
///
/// \ecpp
///
/// \tparam T One of the TOML value types.
///
/// \returns A reference to the underlying data.
template <typename T>
[[nodiscard]]
TOML_ATTR(pure)
impl::unwrap_node<T>& ref() & noexcept
{
return do_ref<T>(*this);
}
/// \brief Gets a raw reference to a value node's underlying data (rvalue overload). /// \name Node views
template <typename T> /// @{
[[nodiscard]]
TOML_ATTR(pure)
impl::unwrap_node<T>&& ref() && noexcept
{
return do_ref<T>(std::move(*this));
}
/// \brief Gets a raw reference to a value node's underlying data (const lvalue overload). /// \brief Creates a node_view pointing to this node.
template <typename T>
[[nodiscard]]
TOML_ATTR(pure)
const impl::unwrap_node<T>& ref() const& noexcept
{
return do_ref<T>(*this);
}
/// \brief Creates a `node_view` pointing to this node.
[[nodiscard]] explicit operator node_view<node>() noexcept; [[nodiscard]] explicit operator node_view<node>() noexcept;
/// \brief Creates a `node_view` pointing to this node (const overload). /// \brief Creates a node_view pointing to this node (const overload).
[[nodiscard]] explicit operator node_view<const node>() const noexcept; [[nodiscard]] explicit operator node_view<const node>() const noexcept;
/// @}
}; };
} }
TOML_NAMESPACE_END TOML_NAMESPACE_END;

View File

@ -99,4 +99,4 @@ TOML_NAMESPACE_START
return node_view<const node>(this); return node_view<const node>(this);
} }
} }
TOML_NAMESPACE_END TOML_NAMESPACE_END;

View File

@ -8,8 +8,8 @@
#include "toml_array.h" #include "toml_array.h"
#include "toml_value.h" #include "toml_value.h"
TOML_PUSH_WARNINGS TOML_PUSH_WARNINGS;
TOML_DISABLE_ARITHMETIC_WARNINGS TOML_DISABLE_ARITHMETIC_WARNINGS;
TOML_NAMESPACE_START TOML_NAMESPACE_START
{ {
@ -209,9 +209,10 @@ TOML_NAMESPACE_START
/// first non-match was a floating-point at line 1, column 18 /// first non-match was a floating-point at line 1, column 18
/// \eout /// \eout
/// ///
/// \param ntype A TOML node type. <br> /// \param ntype A TOML node type. <br>
/// <strong><em>toml::node_type::none: </em></strong> "is every element the same type?" <br> /// \conditional_return{toml::node_type::none} "is every element the same type?"
/// <strong><em>Anything else:</em></strong> "is every element one of these?" /// \conditional_return{Anything else} "is every element one of these?"
///
/// \param first_nonmatch Reference to a pointer in which the address of the first non-matching element /// \param first_nonmatch Reference to a pointer in which the address of the first non-matching element
/// will be stored if the return value is false. /// will be stored if the return value is false.
/// ///
@ -249,8 +250,8 @@ TOML_NAMESPACE_START
/// \eout /// \eout
/// ///
/// \param ntype A TOML node type. <br> /// \param ntype A TOML node type. <br>
/// <strong><em>toml::node_type::none: </em></strong> "is every element the same type?" <br> /// \conditional_return{toml::node_type::none} "is every element the same type?"
/// <strong><em>Anything else:</em></strong> "is every element one of these?" /// \conditional_return{Anything else} "is every element one of these?"
/// ///
/// \returns True if the viewed node was homogeneous. /// \returns True if the viewed node was homogeneous.
/// ///
@ -281,8 +282,8 @@ TOML_NAMESPACE_START
/// \eout /// \eout
/// ///
/// \tparam ElemType A TOML node or value type. <br> /// \tparam ElemType A TOML node or value type. <br>
/// <strong><em>Left as `void`:</em></strong> "is every element the same type?" <br> /// \conditional_return{Left as `void`} "is every element the same type?" <br>
/// <strong><em>Explicitly specified:</em></strong> "is every element a T?" /// \conditional_return{Explicitly specified} "is every element a T?"
/// ///
/// \returns True if the viewed node was homogeneous. /// \returns True if the viewed node was homogeneous.
/// ///
@ -316,8 +317,8 @@ TOML_NAMESPACE_START
return {}; return {};
} }
TOML_PUSH_WARNINGS TOML_PUSH_WARNINGS;
TOML_DISABLE_INIT_WARNINGS TOML_DISABLE_INIT_WARNINGS;
/// \brief Gets the value contained by the referenced node. /// \brief Gets the value contained by the referenced node.
/// ///
@ -332,8 +333,8 @@ TOML_NAMESPACE_START
/// \returns The underlying value if the node was a value of the matching type (or convertible to it) /// \returns The underlying value if the node was a value of the matching type (or convertible to it)
/// and within the range of the output type, or an empty optional. /// and within the range of the output type, or an empty optional.
/// ///
/// \attention If you want strict value retrieval semantics that do not allow for any type conversions, /// \note If you want strict value retrieval semantics that do not allow for any type conversions,
/// use node_view::value_exact() instead. /// use node_view::value_exact() instead.
/// ///
/// \see /// \see
/// - node_view::value() /// - node_view::value()
@ -347,7 +348,7 @@ TOML_NAMESPACE_START
return {}; return {};
} }
TOML_POP_WARNINGS TOML_POP_WARNINGS;
/// \brief Gets the raw value contained by the referenced node, or a default. /// \brief Gets the raw value contained by the referenced node, or a default.
/// ///
@ -359,9 +360,9 @@ TOML_NAMESPACE_START
/// \returns The underlying value if the node was a value of the matching type (or convertible to it) /// \returns The underlying value if the node was a value of the matching type (or convertible to it)
/// and within the range of the output type, or the provided default. /// and within the range of the output type, or the provided default.
/// ///
/// \attention This function has the same permissive retrieval semantics as node::value(). If you want strict /// \note This function has the same permissive retrieval semantics as node::value(). If you want strict
/// value retrieval semantics that do not allow for any type conversions, use node_view::value_exact() /// value retrieval semantics that do not allow for any type conversions, use node_view::value_exact()
/// instead. /// instead.
/// ///
/// \see /// \see
/// - node_view::value() /// - node_view::value()
@ -465,7 +466,7 @@ TOML_NAMESPACE_START
const auto tbl = lhs.as<table>(); const auto tbl = lhs.as<table>();
return tbl && *tbl == rhs; return tbl && *tbl == rhs;
} }
TOML_ASYMMETRICAL_EQUALITY_OPS(const node_view&, const table&, ) TOML_ASYMMETRICAL_EQUALITY_OPS(const node_view&, const table&, );
/// \brief Returns true if the viewed node is an array with the same contents as RHS. /// \brief Returns true if the viewed node is an array with the same contents as RHS.
[[nodiscard]] [[nodiscard]]
@ -476,7 +477,7 @@ TOML_NAMESPACE_START
const auto arr = lhs.as<array>(); const auto arr = lhs.as<array>();
return arr && *arr == rhs; return arr && *arr == rhs;
} }
TOML_ASYMMETRICAL_EQUALITY_OPS(const node_view&, const array&, ) TOML_ASYMMETRICAL_EQUALITY_OPS(const node_view&, const array&, );
/// \brief Returns true if the viewed node is a value with the same value as RHS. /// \brief Returns true if the viewed node is a value with the same value as RHS.
template <typename T> template <typename T>
@ -488,7 +489,7 @@ TOML_NAMESPACE_START
const auto val = lhs.as<T>(); const auto val = lhs.as<T>();
return val && *val == rhs; return val && *val == rhs;
} }
TOML_ASYMMETRICAL_EQUALITY_OPS(const node_view&, const toml::value<T>&, template <typename T>) TOML_ASYMMETRICAL_EQUALITY_OPS(const node_view&, const toml::value<T>&, template <typename T>);
/// \brief Returns true if the viewed node is a value with the same value as RHS. /// \brief Returns true if the viewed node is a value with the same value as RHS.
template <typename T, typename = std::enable_if_t< template <typename T, typename = std::enable_if_t<
@ -522,10 +523,10 @@ TOML_NAMESPACE_START
const node_view&, const node_view&,
const T&, const T&,
template <typename T, typename = std::enable_if_t< template <typename T, typename = std::enable_if_t<
impl::is_native<T> impl::is_native<T>
|| impl::is_losslessly_convertible_to_native<T> || impl::is_losslessly_convertible_to_native<T>
>> >>
) );
/// \brief Returns true if the viewed node is an array with the same contents as the RHS initializer list. /// \brief Returns true if the viewed node is an array with the same contents as the RHS initializer list.
template <typename T> template <typename T>
@ -535,7 +536,7 @@ TOML_NAMESPACE_START
const auto arr = lhs.as<array>(); const auto arr = lhs.as<array>();
return arr && *arr == rhs; return arr && *arr == rhs;
} }
TOML_ASYMMETRICAL_EQUALITY_OPS(const node_view&, const std::initializer_list<T>&, template <typename T>) TOML_ASYMMETRICAL_EQUALITY_OPS(const node_view&, const std::initializer_list<T>&, template <typename T>);
/// \brief Returns true if the viewed node is an array with the same contents as the RHS vector. /// \brief Returns true if the viewed node is an array with the same contents as the RHS vector.
template <typename T> template <typename T>
@ -545,7 +546,7 @@ TOML_NAMESPACE_START
const auto arr = lhs.as<array>(); const auto arr = lhs.as<array>();
return arr && *arr == rhs; return arr && *arr == rhs;
} }
TOML_ASYMMETRICAL_EQUALITY_OPS(const node_view&, const std::vector<T>&, template <typename T>) TOML_ASYMMETRICAL_EQUALITY_OPS(const node_view&, const std::vector<T>&, template <typename T>);
/// \brief Returns a view of the selected subnode. /// \brief Returns a view of the selected subnode.
/// ///
@ -565,12 +566,12 @@ TOML_NAMESPACE_START
/// \brief Returns a view of the selected subnode. /// \brief Returns a view of the selected subnode.
/// ///
/// \availability This overload is only available when #TOML_WINDOWS_COMPAT is enabled.
///
/// \param key The key of the node to retrieve /// \param key The key of the node to retrieve
/// ///
/// \returns A view of the selected node if this node represented a table and it contained a /// \returns A view of the selected node if this node represented a table and it contained a
/// value at the given key, or an empty view. /// value at the given key, or an empty view.
///
/// \attention This overload is only available when #TOML_WINDOWS_COMPAT is enabled.
[[nodiscard]] [[nodiscard]]
node_view operator[] (std::wstring_view key) const noexcept node_view operator[] (std::wstring_view key) const noexcept
{ {
@ -676,6 +677,6 @@ TOML_NAMESPACE_START
#endif // !TOML_HEADER_ONLY #endif // !TOML_HEADER_ONLY
} }
TOML_NAMESPACE_END TOML_NAMESPACE_END;
TOML_POP_WARNINGS // TOML_DISABLE_ARITHMETIC_WARNINGS TOML_POP_WARNINGS; // TOML_DISABLE_ARITHMETIC_WARNINGS

View File

@ -10,14 +10,14 @@
#error This header cannot not be included when TOML_PARSER is disabled. #error This header cannot not be included when TOML_PARSER is disabled.
#endif #endif
//# }} //# }}
TOML_DISABLE_WARNINGS TOML_DISABLE_WARNINGS;
#if TOML_EXCEPTIONS #if TOML_EXCEPTIONS
#include <stdexcept> #include <stdexcept>
#endif #endif
TOML_ENABLE_WARNINGS TOML_ENABLE_WARNINGS;
TOML_PUSH_WARNINGS TOML_PUSH_WARNINGS;
TOML_DISABLE_INIT_WARNINGS TOML_DISABLE_INIT_WARNINGS;
TOML_NAMESPACE_START TOML_NAMESPACE_START
{ {
@ -114,7 +114,7 @@ TOML_NAMESPACE_START
#endif #endif
TOML_ABI_NAMESPACE_END // TOML_EXCEPTIONS TOML_ABI_NAMESPACE_END; // TOML_EXCEPTIONS
/// \brief Prints a parse_error to a stream. /// \brief Prints a parse_error to a stream.
/// ///
@ -154,6 +154,6 @@ TOML_NAMESPACE_START
extern template TOML_API std::ostream& operator << (std::ostream&, const parse_error&); extern template TOML_API std::ostream& operator << (std::ostream&, const parse_error&);
#endif #endif
} }
TOML_NAMESPACE_END TOML_NAMESPACE_END;
TOML_POP_WARNINGS // TOML_DISABLE_INIT_WARNINGS TOML_POP_WARNINGS; // TOML_DISABLE_INIT_WARNINGS

View File

@ -46,7 +46,7 @@ TOML_NAMESPACE_START
/// parse_result is also safe since `begin()` and `end()` return the same iterator and will not lead to any /// parse_result is also safe since `begin()` and `end()` return the same iterator and will not lead to any
/// dereferences and iterations. /// dereferences and iterations.
/// ///
/// \attention <strong>This type only exists when exceptions are not enabled.</strong> /// \availability <strong>This type only exists when exceptions are disabled.</strong>
/// Otherwise parse_result is just an alias for toml::table: \cpp /// Otherwise parse_result is just an alias for toml::table: \cpp
/// #if TOML_EXCEPTIONS /// #if TOML_EXCEPTIONS
/// using parse_result = table; /// using parse_result = table;
@ -236,14 +236,14 @@ TOML_NAMESPACE_START
/// \brief Gets a node_view for the selected key-value pair in the wrapped table. /// \brief Gets a node_view for the selected key-value pair in the wrapped table.
/// ///
/// \availability This overload is only available when #TOML_WINDOWS_COMPAT is enabled.
///
/// \param key The key used for the lookup. /// \param key The key used for the lookup.
/// ///
/// \returns A view of the value at the given key if parsing was successful and a matching key existed, /// \returns A view of the value at the given key if parsing was successful and a matching key existed,
/// or an empty node view. /// or an empty node view.
/// ///
/// \see toml::node_view /// \see toml::node_view
///
/// \attention This overload is only available when #TOML_WINDOWS_COMPAT is enabled.
[[nodiscard]] [[nodiscard]]
node_view<node> operator[] (std::wstring_view key) noexcept node_view<node> operator[] (std::wstring_view key) noexcept
{ {
@ -252,14 +252,14 @@ TOML_NAMESPACE_START
/// \brief Gets a node_view for the selected key-value pair in the wrapped table (const overload). /// \brief Gets a node_view for the selected key-value pair in the wrapped table (const overload).
/// ///
/// \availability This overload is only available when #TOML_WINDOWS_COMPAT is enabled.
///
/// \param key The key used for the lookup. /// \param key The key used for the lookup.
/// ///
/// \returns A view of the value at the given key if parsing was successful and a matching key existed, /// \returns A view of the value at the given key if parsing was successful and a matching key existed,
/// or an empty node view. /// or an empty node view.
/// ///
/// \see toml::node_view /// \see toml::node_view
///
/// \attention This overload is only available when #TOML_WINDOWS_COMPAT is enabled.
[[nodiscard]] [[nodiscard]]
node_view<const node> operator[] (std::wstring_view key) const noexcept node_view<const node> operator[] (std::wstring_view key) const noexcept
{ {
@ -330,19 +330,20 @@ TOML_NAMESPACE_START
#endif #endif
TOML_ABI_NAMESPACE_END // TOML_EXCEPTIONS TOML_ABI_NAMESPACE_END; // TOML_EXCEPTIONS
} }
TOML_NAMESPACE_END TOML_NAMESPACE_END;
/// \cond
TOML_IMPL_NAMESPACE_START TOML_IMPL_NAMESPACE_START
{ {
TOML_ABI_NAMESPACE_BOOL(TOML_EXCEPTIONS, ex, noex) TOML_ABI_NAMESPACE_BOOL(TOML_EXCEPTIONS, ex, noex)
[[nodiscard]] TOML_API parse_result do_parse(utf8_reader_interface&&) TOML_MAY_THROW; [[nodiscard]] TOML_API parse_result do_parse(utf8_reader_interface&&) TOML_MAY_THROW;
TOML_ABI_NAMESPACE_END // TOML_EXCEPTIONS TOML_ABI_NAMESPACE_END; // TOML_EXCEPTIONS
} }
TOML_IMPL_NAMESPACE_END TOML_IMPL_NAMESPACE_END;
#if TOML_EXCEPTIONS #if TOML_EXCEPTIONS
#define TOML_THROW_PARSE_ERROR(msg, path) \ #define TOML_THROW_PARSE_ERROR(msg, path) \
@ -355,6 +356,7 @@ TOML_IMPL_NAMESPACE_END
msg, source_position{}, std::make_shared<const std::string>(std::move(path)) \ msg, source_position{}, std::make_shared<const std::string>(std::move(path)) \
}} }}
#endif #endif
/// \endcond
TOML_NAMESPACE_START TOML_NAMESPACE_START
{ {
@ -377,8 +379,10 @@ TOML_NAMESPACE_START
/// If you don't have a path (or you have no intention of using paths in diagnostics) /// If you don't have a path (or you have no intention of using paths in diagnostics)
/// then this parameter can safely be left blank. /// then this parameter can safely be left blank.
/// ///
/// \returns <strong><em>With exceptions:</em></strong> A toml::table. <br> /// \returns \conditional_return{With exceptions}
/// <strong><em>Without exceptions:</em></strong> A toml::parse_result detailing the parsing outcome. /// A toml::table.
/// \conditional_return{Without exceptions}
/// A toml::parse_result.
[[nodiscard]] [[nodiscard]]
TOML_API TOML_API
parse_result parse(std::string_view doc, std::string_view source_path = {}) TOML_MAY_THROW; parse_result parse(std::string_view doc, std::string_view source_path = {}) TOML_MAY_THROW;
@ -400,8 +404,10 @@ TOML_NAMESPACE_START
/// If you don't have a path (or you have no intention of using paths in diagnostics) /// If you don't have a path (or you have no intention of using paths in diagnostics)
/// then this parameter can safely be left blank. /// then this parameter can safely be left blank.
/// ///
/// \returns <strong><em>With exceptions:</em></strong> A toml::table. <br> /// \returns \conditional_return{With exceptions}
/// <strong><em>Without exceptions:</em></strong> A toml::parse_result detailing the parsing outcome. /// A toml::table.
/// \conditional_return{Without exceptions}
/// A toml::parse_result.
[[nodiscard]] [[nodiscard]]
TOML_API TOML_API
parse_result parse(std::string_view doc, std::string&& source_path) TOML_MAY_THROW; parse_result parse(std::string_view doc, std::string&& source_path) TOML_MAY_THROW;
@ -420,15 +426,17 @@ TOML_NAMESPACE_START
/// 3 /// 3
/// \eout /// \eout
/// ///
/// \availability This overload is only available when #TOML_WINDOWS_COMPAT is enabled.
///
/// \param doc The TOML document to parse. Must be valid UTF-8. /// \param doc The TOML document to parse. Must be valid UTF-8.
/// \param source_path The path used to initialize each node's `source().path`. /// \param source_path The path used to initialize each node's `source().path`.
/// If you don't have a path (or you have no intention of using paths in diagnostics) /// If you don't have a path (or you have no intention of using paths in diagnostics)
/// then this parameter can safely be left blank. /// then this parameter can safely be left blank.
/// ///
/// \returns <strong><em>With exceptions:</em></strong> A toml::table. <br> /// \returns \conditional_return{With exceptions}
/// <strong><em>Without exceptions:</em></strong> A toml::parse_result detailing the parsing outcome. /// A toml::table.
/// /// \conditional_return{Without exceptions}
/// \attention This overload is only available when #TOML_WINDOWS_COMPAT is enabled. /// A toml::parse_result.
[[nodiscard]] [[nodiscard]]
TOML_API TOML_API
parse_result parse(std::string_view doc, std::wstring_view source_path) TOML_MAY_THROW; parse_result parse(std::string_view doc, std::wstring_view source_path) TOML_MAY_THROW;
@ -454,8 +462,10 @@ TOML_NAMESPACE_START
/// If you don't have a path (or you have no intention of using paths in diagnostics) /// If you don't have a path (or you have no intention of using paths in diagnostics)
/// then this parameter can safely be left blank. /// then this parameter can safely be left blank.
/// ///
/// \returns <strong><em>With exceptions:</em></strong> A toml::table. <br> /// \returns \conditional_return{With exceptions}
/// <strong><em>Without exceptions:</em></strong> A toml::parse_result detailing the parsing outcome. /// A toml::table.
/// \conditional_return{Without exceptions}
/// A toml::parse_result.
[[nodiscard]] [[nodiscard]]
TOML_API TOML_API
parse_result parse(std::u8string_view doc, std::string_view source_path = {}) TOML_MAY_THROW; parse_result parse(std::u8string_view doc, std::string_view source_path = {}) TOML_MAY_THROW;
@ -477,8 +487,10 @@ TOML_NAMESPACE_START
/// If you don't have a path (or you have no intention of using paths in diagnostics) /// If you don't have a path (or you have no intention of using paths in diagnostics)
/// then this parameter can safely be left blank. /// then this parameter can safely be left blank.
/// ///
/// \returns <strong><em>With exceptions:</em></strong> A toml::table. <br> /// \returns \conditional_return{With exceptions}
/// <strong><em>Without exceptions:</em></strong> A toml::parse_result detailing the parsing outcome. /// A toml::table.
/// \conditional_return{Without exceptions}
/// A toml::parse_result.
[[nodiscard]] [[nodiscard]]
TOML_API TOML_API
parse_result parse(std::u8string_view doc, std::string&& source_path) TOML_MAY_THROW; parse_result parse(std::u8string_view doc, std::string&& source_path) TOML_MAY_THROW;
@ -490,22 +502,23 @@ TOML_NAMESPACE_START
/// \detail \cpp /// \detail \cpp
/// auto tbl = toml::parse(u8"a = 3"sv, L"foo.toml"); /// auto tbl = toml::parse(u8"a = 3"sv, L"foo.toml");
/// std::cout << tbl["a"] << "\n"; /// std::cout << tbl["a"] << "\n";
///
/// \ecpp /// \ecpp
/// ///
/// \out /// \out
/// 3 /// 3
/// \eout /// \eout
/// ///
/// \availability This overload is only available when #TOML_WINDOWS_COMPAT is enabled.
///
/// \param doc The TOML document to parse. Must be valid UTF-8. /// \param doc The TOML document to parse. Must be valid UTF-8.
/// \param source_path The path used to initialize each node's `source().path`. /// \param source_path The path used to initialize each node's `source().path`.
/// If you don't have a path (or you have no intention of using paths in diagnostics) /// If you don't have a path (or you have no intention of using paths in diagnostics)
/// then this parameter can safely be left blank. /// then this parameter can safely be left blank.
/// ///
/// \returns <strong><em>With exceptions:</em></strong> A toml::table. <br> /// \returns \conditional_return{With exceptions}
/// <strong><em>Without exceptions:</em></strong> A toml::parse_result detailing the parsing outcome. /// A toml::table.
/// /// \conditional_return{Without exceptions}
/// \attention This overload is only available when #TOML_WINDOWS_COMPAT is enabled. /// A toml::parse_result.
[[nodiscard]] [[nodiscard]]
TOML_API TOML_API
parse_result parse(std::u8string_view doc, std::wstring_view source_path) TOML_MAY_THROW; parse_result parse(std::u8string_view doc, std::wstring_view source_path) TOML_MAY_THROW;
@ -535,8 +548,10 @@ TOML_NAMESPACE_START
/// If you don't have a path (or you have no intention of using paths in diagnostics) /// If you don't have a path (or you have no intention of using paths in diagnostics)
/// then this parameter can safely be left blank. /// then this parameter can safely be left blank.
/// ///
/// \returns <strong><em>With exceptions:</em></strong> A toml::table. <br> /// \returns \conditional_return{With exceptions}
/// <strong><em>Without exceptions:</em></strong> A toml::parse_result detailing the parsing outcome. /// A toml::table.
/// \conditional_return{Without exceptions}
/// A toml::parse_result.
template <typename Char> template <typename Char>
[[nodiscard]] [[nodiscard]]
inline parse_result parse(std::basic_istream<Char>& doc, std::string_view source_path = {}) TOML_MAY_THROW inline parse_result parse(std::basic_istream<Char>& doc, std::string_view source_path = {}) TOML_MAY_THROW
@ -570,8 +585,10 @@ TOML_NAMESPACE_START
/// If you don't have a path (or you have no intention of using paths in diagnostics) /// If you don't have a path (or you have no intention of using paths in diagnostics)
/// then this parameter can safely be left blank. /// then this parameter can safely be left blank.
/// ///
/// \returns <strong><em>With exceptions:</em></strong> A toml::table. <br> /// \returns \conditional_return{With exceptions}
/// <strong><em>Without exceptions:</em></strong> A toml::parse_result detailing the parsing outcome. /// A toml::table.
/// \conditional_return{Without exceptions}
/// A toml::parse_result.
template <typename Char> template <typename Char>
[[nodiscard]] [[nodiscard]]
inline parse_result parse(std::basic_istream<Char>& doc, std::string&& source_path) TOML_MAY_THROW inline parse_result parse(std::basic_istream<Char>& doc, std::string&& source_path) TOML_MAY_THROW
@ -600,6 +617,8 @@ TOML_NAMESPACE_START
/// \out /// \out
/// 3 /// 3
/// \eout /// \eout
///
/// \availability This overload is only available when #TOML_WINDOWS_COMPAT is enabled.
/// ///
/// \tparam Char The stream's underlying character type. Must be 1 byte in size. /// \tparam Char The stream's underlying character type. Must be 1 byte in size.
/// \param doc The TOML document to parse. Must be valid UTF-8. /// \param doc The TOML document to parse. Must be valid UTF-8.
@ -607,10 +626,10 @@ TOML_NAMESPACE_START
/// If you don't have a path (or you have no intention of using paths in diagnostics) /// If you don't have a path (or you have no intention of using paths in diagnostics)
/// then this parameter can safely be left blank. /// then this parameter can safely be left blank.
/// ///
/// \returns <strong><em>With exceptions:</em></strong> A toml::table. <br> /// \returns \conditional_return{With exceptions}
/// <strong><em>Without exceptions:</em></strong> A toml::parse_result detailing the parsing outcome. /// A toml::table.
/// /// \conditional_return{Without exceptions}
/// \attention This overload is only available when #TOML_WINDOWS_COMPAT is enabled. /// A toml::parse_result.
template <typename Char> template <typename Char>
[[nodiscard]] [[nodiscard]]
inline parse_result parse(std::basic_istream<Char>& doc, std::wstring_view source_path) TOML_MAY_THROW inline parse_result parse(std::basic_istream<Char>& doc, std::wstring_view source_path) TOML_MAY_THROW
@ -641,8 +660,10 @@ TOML_NAMESPACE_START
/// \tparam Char The path's character type. /// \tparam Char The path's character type.
/// \param file_path The TOML document to parse. Must be valid UTF-8. /// \param file_path The TOML document to parse. Must be valid UTF-8.
/// ///
/// \returns <strong><em>With exceptions:</em></strong> A toml::table. <br> /// \returns \conditional_return{With exceptions}
/// <strong><em>Without exceptions:</em></strong> A toml::parse_result detailing the parsing outcome. /// A toml::table.
/// \conditional_return{Without exceptions}
/// A toml::parse_result.
/// ///
/// \attention You must `#include <fstream>` to use this function (toml++ does not transitively include it for you). /// \attention You must `#include <fstream>` to use this function (toml++ does not transitively include it for you).
template <typename Char, typename StreamChar = char> template <typename Char, typename StreamChar = char>
@ -733,7 +754,7 @@ TOML_NAMESPACE_START
return parse_file(std::basic_string_view<Char>{ file_path }); return parse_file(std::basic_string_view<Char>{ file_path });
} }
TOML_ABI_NAMESPACE_END // TOML_EXCEPTIONS TOML_ABI_NAMESPACE_END; // TOML_EXCEPTIONS
inline namespace literals inline namespace literals
{ {
@ -756,8 +777,10 @@ TOML_NAMESPACE_START
/// \param str The string data. Must be valid UTF-8. /// \param str The string data. Must be valid UTF-8.
/// \param len The string length. /// \param len The string length.
/// ///
/// \returns <strong><em>With exceptions:</em></strong> A toml::table. <br> /// \returns \conditional_return{With exceptions}
/// <strong><em>Without exceptions:</em></strong> A toml::parse_result detailing the parsing outcome. /// A toml::table.
/// \conditional_return{Without exceptions}
/// A toml::parse_result.
[[nodiscard]] [[nodiscard]]
TOML_API TOML_API
parse_result operator"" _toml(const char* str, size_t len) TOML_MAY_THROW; parse_result operator"" _toml(const char* str, size_t len) TOML_MAY_THROW;
@ -781,17 +804,19 @@ TOML_NAMESPACE_START
/// \param str The string data. Must be valid UTF-8. /// \param str The string data. Must be valid UTF-8.
/// \param len The string length. /// \param len The string length.
/// ///
/// \returns <strong><em>With exceptions:</em></strong> A toml::table. <br> /// \returns \conditional_return{With exceptions}
/// <strong><em>Without exceptions:</em></strong> A toml::parse_result detailing the parsing outcome. /// A toml::table.
/// \conditional_return{Without exceptions}
/// A toml::parse_result.
[[nodiscard]] [[nodiscard]]
TOML_API TOML_API
parse_result operator"" _toml(const char8_t* str, size_t len) TOML_MAY_THROW; parse_result operator"" _toml(const char8_t* str, size_t len) TOML_MAY_THROW;
#endif // __cpp_lib_char8_t #endif // __cpp_lib_char8_t
TOML_ABI_NAMESPACE_END // TOML_EXCEPTIONS TOML_ABI_NAMESPACE_END; // TOML_EXCEPTIONS
} }
} }
TOML_NAMESPACE_END TOML_NAMESPACE_END;
#undef TOML_THROW_PARSE_ERROR #undef TOML_THROW_PARSE_ERROR

View File

@ -15,7 +15,7 @@
//# }} //# }}
#include "toml_parser.h" #include "toml_parser.h"
TOML_DISABLE_WARNINGS TOML_DISABLE_WARNINGS;
#include <cmath> #include <cmath>
#if TOML_INT_CHARCONV || TOML_FLOAT_CHARCONV #if TOML_INT_CHARCONV || TOML_FLOAT_CHARCONV
#include <charconv> #include <charconv>
@ -26,10 +26,10 @@ TOML_DISABLE_WARNINGS
#if !TOML_HEADER_ONLY #if !TOML_HEADER_ONLY
using namespace std::string_view_literals; using namespace std::string_view_literals;
#endif #endif
TOML_ENABLE_WARNINGS TOML_ENABLE_WARNINGS;
TOML_PUSH_WARNINGS TOML_PUSH_WARNINGS;
TOML_DISABLE_SWITCH_WARNINGS TOML_DISABLE_SWITCH_WARNINGS;
#if TOML_EXCEPTIONS && !defined(__INTELLISENSE__) #if TOML_EXCEPTIONS && !defined(__INTELLISENSE__)
#define TOML_RETURNS_BY_THROWING [[noreturn]] #define TOML_RETURNS_BY_THROWING [[noreturn]]
@ -328,7 +328,7 @@ TOML_ANON_NAMESPACE_START
}; };
} }
TOML_ANON_NAMESPACE_END TOML_ANON_NAMESPACE_END;
TOML_IMPL_NAMESPACE_START TOML_IMPL_NAMESPACE_START
{ {
@ -1118,9 +1118,9 @@ TOML_IMPL_NAMESPACE_START
: std::numeric_limits<double>::quiet_NaN(); : std::numeric_limits<double>::quiet_NaN();
} }
TOML_PUSH_WARNINGS TOML_PUSH_WARNINGS;
TOML_DISABLE_SWITCH_WARNINGS TOML_DISABLE_SWITCH_WARNINGS;
TOML_DISABLE_INIT_WARNINGS TOML_DISABLE_INIT_WARNINGS;
[[nodiscard]] [[nodiscard]]
double parse_float() TOML_MAY_THROW double parse_float() TOML_MAY_THROW
@ -1820,7 +1820,7 @@ TOML_IMPL_NAMESPACE_START
return { date, time, offset }; return { date, time, offset };
} }
TOML_POP_WARNINGS // TOML_DISABLE_SWITCH_WARNINGS, TOML_DISABLE_INIT_WARNINGS TOML_POP_WARNINGS; // TOML_DISABLE_SWITCH_WARNINGS, TOML_DISABLE_INIT_WARNINGS
[[nodiscard]] toml::array* parse_array() TOML_MAY_THROW; [[nodiscard]] toml::array* parse_array() TOML_MAY_THROW;
[[nodiscard]] toml::table* parse_inline_table() TOML_MAY_THROW; [[nodiscard]] toml::table* parse_inline_table() TOML_MAY_THROW;
@ -2826,8 +2826,8 @@ TOML_IMPL_NAMESPACE_START
update_region_ends(root); update_region_ends(root);
} }
TOML_PUSH_WARNINGS TOML_PUSH_WARNINGS;
TOML_DISABLE_INIT_WARNINGS TOML_DISABLE_INIT_WARNINGS;
[[nodiscard]] [[nodiscard]]
operator parse_result() && noexcept operator parse_result() && noexcept
@ -2847,7 +2847,7 @@ TOML_IMPL_NAMESPACE_START
} }
TOML_POP_WARNINGS TOML_POP_WARNINGS;
}; };
TOML_EXTERNAL_LINKAGE TOML_EXTERNAL_LINKAGE
@ -3008,7 +3008,7 @@ TOML_IMPL_NAMESPACE_START
return impl::parser{ std::move(reader) }; return impl::parser{ std::move(reader) };
} }
TOML_ABI_NAMESPACE_END // TOML_EXCEPTIONS TOML_ABI_NAMESPACE_END; // TOML_EXCEPTIONS
#undef push_parse_scope_2 #undef push_parse_scope_2
#undef push_parse_scope_1 #undef push_parse_scope_1
@ -3029,7 +3029,7 @@ TOML_IMPL_NAMESPACE_START
#undef advance_and_return_if_error_or_eof #undef advance_and_return_if_error_or_eof
#undef assert_or_assume #undef assert_or_assume
} }
TOML_IMPL_NAMESPACE_END TOML_IMPL_NAMESPACE_END;
TOML_NAMESPACE_START TOML_NAMESPACE_START
{ {
@ -3089,7 +3089,7 @@ TOML_NAMESPACE_START
#endif // __cpp_lib_char8_t #endif // __cpp_lib_char8_t
TOML_ABI_NAMESPACE_END // TOML_EXCEPTIONS TOML_ABI_NAMESPACE_END; // TOML_EXCEPTIONS
inline namespace literals inline namespace literals
{ {
@ -3113,9 +3113,9 @@ TOML_NAMESPACE_START
#endif // __cpp_lib_char8_t #endif // __cpp_lib_char8_t
TOML_ABI_NAMESPACE_END // TOML_EXCEPTIONS TOML_ABI_NAMESPACE_END; // TOML_EXCEPTIONS
} }
} }
TOML_NAMESPACE_END TOML_NAMESPACE_END;
TOML_POP_WARNINGS // TOML_DISABLE_SWITCH_WARNINGS TOML_POP_WARNINGS; // TOML_DISABLE_SWITCH_WARNINGS

View File

@ -52,21 +52,38 @@
#if TOML_CLANG #if TOML_CLANG
#define TOML_PUSH_WARNINGS _Pragma("clang diagnostic push") #define TOML_PUSH_WARNINGS _Pragma("clang diagnostic push") \
#define TOML_DISABLE_SWITCH_WARNINGS _Pragma("clang diagnostic ignored \"-Wswitch\"") static_assert(true)
#define TOML_DISABLE_INIT_WARNINGS _Pragma("clang diagnostic ignored \"-Wmissing-field-initializers\"")
#define TOML_DISABLE_SWITCH_WARNINGS _Pragma("clang diagnostic ignored \"-Wswitch\"") \
static_assert(true)
#define TOML_DISABLE_INIT_WARNINGS _Pragma("clang diagnostic ignored \"-Wmissing-field-initializers\"") \
static_assert(true)
#define TOML_DISABLE_ARITHMETIC_WARNINGS _Pragma("clang diagnostic ignored \"-Wfloat-equal\"") \ #define TOML_DISABLE_ARITHMETIC_WARNINGS _Pragma("clang diagnostic ignored \"-Wfloat-equal\"") \
_Pragma("clang diagnostic ignored \"-Wdouble-promotion\"") \ _Pragma("clang diagnostic ignored \"-Wdouble-promotion\"") \
_Pragma("clang diagnostic ignored \"-Wchar-subscripts\"") \ _Pragma("clang diagnostic ignored \"-Wchar-subscripts\"") \
_Pragma("clang diagnostic ignored \"-Wshift-sign-overflow\"") _Pragma("clang diagnostic ignored \"-Wshift-sign-overflow\"") \
#define TOML_DISABLE_SHADOW_WARNINGS _Pragma("clang diagnostic ignored \"-Wshadow\"") static_assert(true)
#define TOML_DISABLE_SHADOW_WARNINGS _Pragma("clang diagnostic ignored \"-Wshadow\"") \
static_assert(true)
#define TOML_DISABLE_SPAM_WARNINGS _Pragma("clang diagnostic ignored \"-Wweak-vtables\"") \ #define TOML_DISABLE_SPAM_WARNINGS _Pragma("clang diagnostic ignored \"-Wweak-vtables\"") \
_Pragma("clang diagnostic ignored \"-Wweak-template-vtables\"") \ _Pragma("clang diagnostic ignored \"-Wweak-template-vtables\"") \
_Pragma("clang diagnostic ignored \"-Wpadded\"") _Pragma("clang diagnostic ignored \"-Wpadded\"") \
#define TOML_POP_WARNINGS _Pragma("clang diagnostic pop") static_assert(true)
#define TOML_DISABLE_WARNINGS TOML_PUSH_WARNINGS \
_Pragma("clang diagnostic ignored \"-Weverything\"") #define TOML_POP_WARNINGS _Pragma("clang diagnostic pop") \
static_assert(true)
#define TOML_DISABLE_WARNINGS TOML_PUSH_WARNINGS; \
_Pragma("clang diagnostic ignored \"-Weverything\"") \
static_assert(true)
#define TOML_ENABLE_WARNINGS TOML_POP_WARNINGS #define TOML_ENABLE_WARNINGS TOML_POP_WARNINGS
#define TOML_ASSUME(cond) __builtin_assume(cond) #define TOML_ASSUME(cond) __builtin_assume(cond)
#define TOML_UNREACHABLE __builtin_unreachable() #define TOML_UNREACHABLE __builtin_unreachable()
#define TOML_ATTR(...) __attribute__((__VA_ARGS__)) #define TOML_ATTR(...) __attribute__((__VA_ARGS__))
@ -111,13 +128,29 @@
#if TOML_MSVC || TOML_ICC_CL #if TOML_MSVC || TOML_ICC_CL
#define TOML_CPP_VERSION _MSVC_LANG #define TOML_CPP_VERSION _MSVC_LANG
#define TOML_PUSH_WARNINGS __pragma(warning(push))
#if TOML_MSVC // !intel-cl #if TOML_MSVC // !intel-cl
#define TOML_PUSH_WARNINGS __pragma(warning(push))
#define TOML_DISABLE_SWITCH_WARNINGS __pragma(warning(disable: 4063)) #define TOML_PUSH_WARNINGS __pragma(warning(push)) \
#define TOML_POP_WARNINGS __pragma(warning(pop)) static_assert(true)
#define TOML_DISABLE_WARNINGS __pragma(warning(push, 0))
#define TOML_DISABLE_SWITCH_WARNINGS __pragma(warning(disable: 4063)) \
static_assert(true)
#define TOML_DISABLE_SPAM_WARNINGS __pragma(warning(disable: 4127)) /* conditional expr is constant */ \
__pragma(warning(disable: 4324)) /* structure was padded due to alignment specifier */ \
__pragma(warning(disable: 4348)) \
__pragma(warning(disable: 4505)) /* unreferenced local function removed */ \
__pragma(warning(disable: 26490)) /* cg: dont use reinterpret_cast */ \
static_assert(true)
#define TOML_POP_WARNINGS __pragma(warning(pop)) \
static_assert(true)
#define TOML_DISABLE_WARNINGS __pragma(warning(push, 0)) \
static_assert(true)
#define TOML_ENABLE_WARNINGS TOML_POP_WARNINGS #define TOML_ENABLE_WARNINGS TOML_POP_WARNINGS
#endif #endif
#ifndef TOML_ALWAYS_INLINE #ifndef TOML_ALWAYS_INLINE
#define TOML_ALWAYS_INLINE __forceinline #define TOML_ALWAYS_INLINE __forceinline
@ -136,14 +169,24 @@
#if TOML_ICC #if TOML_ICC
#define TOML_PUSH_WARNINGS __pragma(warning(push)) #define TOML_PUSH_WARNINGS __pragma(warning(push)) \
static_assert(true)
#define TOML_DISABLE_SPAM_WARNINGS __pragma(warning(disable: 82)) /* storage class is not first */ \ #define TOML_DISABLE_SPAM_WARNINGS __pragma(warning(disable: 82)) /* storage class is not first */ \
__pragma(warning(disable: 111)) /* statement unreachable (false-positive) */ \ __pragma(warning(disable: 111)) /* statement unreachable (false-positive) */ \
__pragma(warning(disable: 869)) /* unreferenced parameter */ \
__pragma(warning(disable: 1011)) /* missing return (false-positive) */ \ __pragma(warning(disable: 1011)) /* missing return (false-positive) */ \
__pragma(warning(disable: 2261)) /* assume expr side-effects discarded */ __pragma(warning(disable: 2261)) /* assume expr side-effects discarded */ \
#define TOML_POP_WARNINGS __pragma(warning(pop)) static_assert(true)
#define TOML_DISABLE_WARNINGS __pragma(warning(push, 0))
#define TOML_ENABLE_WARNINGS TOML_POP_WARNINGS #define TOML_POP_WARNINGS __pragma(warning(pop)) \
static_assert(true)
#define TOML_DISABLE_WARNINGS __pragma(warning(push, 0)) \
static_assert(true)
#define TOML_ENABLE_WARNINGS TOML_POP_WARNINGS \
static_assert(true)
#endif // icc #endif // icc
@ -153,34 +196,51 @@
#if TOML_GCC #if TOML_GCC
#define TOML_PUSH_WARNINGS _Pragma("GCC diagnostic push") #define TOML_PUSH_WARNINGS _Pragma("GCC diagnostic push") \
static_assert(true)
#define TOML_DISABLE_SWITCH_WARNINGS _Pragma("GCC diagnostic ignored \"-Wswitch\"") \ #define TOML_DISABLE_SWITCH_WARNINGS _Pragma("GCC diagnostic ignored \"-Wswitch\"") \
_Pragma("GCC diagnostic ignored \"-Wswitch-enum\"") \ _Pragma("GCC diagnostic ignored \"-Wswitch-enum\"") \
_Pragma("GCC diagnostic ignored \"-Wswitch-default\"") _Pragma("GCC diagnostic ignored \"-Wswitch-default\"") \
static_assert(true)
#define TOML_DISABLE_INIT_WARNINGS _Pragma("GCC diagnostic ignored \"-Wmissing-field-initializers\"") \ #define TOML_DISABLE_INIT_WARNINGS _Pragma("GCC diagnostic ignored \"-Wmissing-field-initializers\"") \
_Pragma("GCC diagnostic ignored \"-Wmaybe-uninitialized\"") \ _Pragma("GCC diagnostic ignored \"-Wmaybe-uninitialized\"") \
_Pragma("GCC diagnostic ignored \"-Wuninitialized\"") _Pragma("GCC diagnostic ignored \"-Wuninitialized\"") \
static_assert(true)
#define TOML_DISABLE_ARITHMETIC_WARNINGS _Pragma("GCC diagnostic ignored \"-Wfloat-equal\"") \ #define TOML_DISABLE_ARITHMETIC_WARNINGS _Pragma("GCC diagnostic ignored \"-Wfloat-equal\"") \
_Pragma("GCC diagnostic ignored \"-Wsign-conversion\"") \ _Pragma("GCC diagnostic ignored \"-Wsign-conversion\"") \
_Pragma("GCC diagnostic ignored \"-Wchar-subscripts\"") _Pragma("GCC diagnostic ignored \"-Wchar-subscripts\"") \
#define TOML_DISABLE_SHADOW_WARNINGS _Pragma("GCC diagnostic ignored \"-Wshadow\"") static_assert(true)
#define TOML_DISABLE_SHADOW_WARNINGS _Pragma("GCC diagnostic ignored \"-Wshadow\"") \
static_assert(true)
#define TOML_DISABLE_SPAM_WARNINGS _Pragma("GCC diagnostic ignored \"-Wpadded\"") \ #define TOML_DISABLE_SPAM_WARNINGS _Pragma("GCC diagnostic ignored \"-Wpadded\"") \
_Pragma("GCC diagnostic ignored \"-Wcast-align\"") \ _Pragma("GCC diagnostic ignored \"-Wcast-align\"") \
_Pragma("GCC diagnostic ignored \"-Wcomment\"") \ _Pragma("GCC diagnostic ignored \"-Wcomment\"") \
_Pragma("GCC diagnostic ignored \"-Wtype-limits\"") \ _Pragma("GCC diagnostic ignored \"-Wtype-limits\"") \
_Pragma("GCC diagnostic ignored \"-Wuseless-cast\"") \ _Pragma("GCC diagnostic ignored \"-Wuseless-cast\"") \
_Pragma("GCC diagnostic ignored \"-Wsuggest-attribute=const\"") \ _Pragma("GCC diagnostic ignored \"-Wsuggest-attribute=const\"") \
_Pragma("GCC diagnostic ignored \"-Wsuggest-attribute=pure\"") _Pragma("GCC diagnostic ignored \"-Wsuggest-attribute=pure\"") \
#define TOML_POP_WARNINGS _Pragma("GCC diagnostic pop") static_assert(true)
#define TOML_DISABLE_WARNINGS TOML_PUSH_WARNINGS \
#define TOML_POP_WARNINGS _Pragma("GCC diagnostic pop") \
static_assert(true)
#define TOML_DISABLE_WARNINGS TOML_PUSH_WARNINGS; \
_Pragma("GCC diagnostic ignored \"-Wall\"") \ _Pragma("GCC diagnostic ignored \"-Wall\"") \
_Pragma("GCC diagnostic ignored \"-Wextra\"") \ _Pragma("GCC diagnostic ignored \"-Wextra\"") \
_Pragma("GCC diagnostic ignored \"-Wpedantic\"") \ _Pragma("GCC diagnostic ignored \"-Wpedantic\"") \
TOML_DISABLE_SWITCH_WARNINGS \ TOML_DISABLE_SWITCH_WARNINGS; \
TOML_DISABLE_INIT_WARNINGS \ TOML_DISABLE_INIT_WARNINGS; \
TOML_DISABLE_ARITHMETIC_WARNINGS \ TOML_DISABLE_ARITHMETIC_WARNINGS; \
TOML_DISABLE_SHADOW_WARNINGS \ TOML_DISABLE_SHADOW_WARNINGS; \
TOML_DISABLE_SPAM_WARNINGS TOML_DISABLE_SPAM_WARNINGS; \
static_assert(true)
#define TOML_ENABLE_WARNINGS TOML_POP_WARNINGS #define TOML_ENABLE_WARNINGS TOML_POP_WARNINGS
#define TOML_ATTR(...) __attribute__((__VA_ARGS__)) #define TOML_ATTR(...) __attribute__((__VA_ARGS__))
@ -313,7 +373,7 @@ is no longer necessary.
#define TOML_EXCEPTIONS 0 #define TOML_EXCEPTIONS 0
#endif #endif
#if TOML_EXCEPTIONS #if defined(DOXYGEN) || TOML_EXCEPTIONS
#define TOML_MAY_THROW #define TOML_MAY_THROW
#else #else
#define TOML_MAY_THROW noexcept #define TOML_MAY_THROW noexcept
@ -343,31 +403,31 @@ is no longer necessary.
#endif #endif
#ifndef TOML_PUSH_WARNINGS #ifndef TOML_PUSH_WARNINGS
#define TOML_PUSH_WARNINGS #define TOML_PUSH_WARNINGS static_assert(true)
#endif #endif
#ifndef TOML_DISABLE_SWITCH_WARNINGS #ifndef TOML_DISABLE_SWITCH_WARNINGS
#define TOML_DISABLE_SWITCH_WARNINGS #define TOML_DISABLE_SWITCH_WARNINGS static_assert(true)
#endif #endif
#ifndef TOML_DISABLE_INIT_WARNINGS #ifndef TOML_DISABLE_INIT_WARNINGS
#define TOML_DISABLE_INIT_WARNINGS #define TOML_DISABLE_INIT_WARNINGS static_assert(true)
#endif #endif
#ifndef TOML_DISABLE_SPAM_WARNINGS #ifndef TOML_DISABLE_SPAM_WARNINGS
#define TOML_DISABLE_SPAM_WARNINGS #define TOML_DISABLE_SPAM_WARNINGS static_assert(true)
#endif #endif
#ifndef TOML_DISABLE_ARITHMETIC_WARNINGS #ifndef TOML_DISABLE_ARITHMETIC_WARNINGS
#define TOML_DISABLE_ARITHMETIC_WARNINGS #define TOML_DISABLE_ARITHMETIC_WARNINGS static_assert(true)
#endif #endif
#ifndef TOML_DISABLE_SHADOW_WARNINGS #ifndef TOML_DISABLE_SHADOW_WARNINGS
#define TOML_DISABLE_SHADOW_WARNINGS #define TOML_DISABLE_SHADOW_WARNINGS static_assert(true)
#endif #endif
#ifndef TOML_POP_WARNINGS #ifndef TOML_POP_WARNINGS
#define TOML_POP_WARNINGS #define TOML_POP_WARNINGS static_assert(true)
#endif #endif
#ifndef TOML_DISABLE_WARNINGS #ifndef TOML_DISABLE_WARNINGS
#define TOML_DISABLE_WARNINGS #define TOML_DISABLE_WARNINGS static_assert(true)
#endif #endif
#ifndef TOML_ENABLE_WARNINGS #ifndef TOML_ENABLE_WARNINGS
#define TOML_ENABLE_WARNINGS #define TOML_ENABLE_WARNINGS static_assert(true)
#endif #endif
#ifndef TOML_ATTR #ifndef TOML_ATTR
@ -440,7 +500,8 @@ is no longer necessary.
#define TOML_ASYMMETRICAL_EQUALITY_OPS(LHS, RHS, ...) \ #define TOML_ASYMMETRICAL_EQUALITY_OPS(LHS, RHS, ...) \
__VA_ARGS__ [[nodiscard]] friend bool operator == (RHS rhs, LHS lhs) noexcept { return lhs == rhs; } \ __VA_ARGS__ [[nodiscard]] friend bool operator == (RHS rhs, LHS lhs) noexcept { return lhs == rhs; } \
__VA_ARGS__ [[nodiscard]] friend bool operator != (LHS lhs, RHS rhs) noexcept { return !(lhs == rhs); } \ __VA_ARGS__ [[nodiscard]] friend bool operator != (LHS lhs, RHS rhs) noexcept { return !(lhs == rhs); } \
__VA_ARGS__ [[nodiscard]] friend bool operator != (RHS rhs, LHS lhs) noexcept { return !(lhs == rhs); } __VA_ARGS__ [[nodiscard]] friend bool operator != (RHS rhs, LHS lhs) noexcept { return !(lhs == rhs); } \
static_assert(true)
#ifndef TOML_SIMPLE_STATIC_ASSERT_MESSAGES #ifndef TOML_SIMPLE_STATIC_ASSERT_MESSAGES
#define TOML_SIMPLE_STATIC_ASSERT_MESSAGES 0 #define TOML_SIMPLE_STATIC_ASSERT_MESSAGES 0
@ -475,7 +536,8 @@ is no longer necessary.
constexpr type operator | (type lhs, type rhs) noexcept \ constexpr type operator | (type lhs, type rhs) noexcept \
{ \ { \
return static_cast<type>(::toml::impl::unwrap_enum(lhs) | ::toml::impl::unwrap_enum(rhs)); \ return static_cast<type>(::toml::impl::unwrap_enum(lhs) | ::toml::impl::unwrap_enum(rhs)); \
} } \
static_assert(true)
#ifndef TOML_LIFETIME_HOOKS #ifndef TOML_LIFETIME_HOOKS
#define TOML_LIFETIME_HOOKS 0 #define TOML_LIFETIME_HOOKS 0
@ -551,18 +613,18 @@ is no longer necessary.
#endif #endif
#if TOML_ABI_NAMESPACES #if TOML_ABI_NAMESPACES
#define TOML_NAMESPACE_START namespace toml { inline namespace TOML_CONCAT(v, TOML_LIB_MAJOR) #define TOML_NAMESPACE_START namespace toml { inline namespace TOML_CONCAT(v, TOML_LIB_MAJOR)
#define TOML_NAMESPACE_END } #define TOML_NAMESPACE_END } static_assert(true)
#define TOML_NAMESPACE ::toml::TOML_CONCAT(v, TOML_LIB_MAJOR) #define TOML_NAMESPACE ::toml::TOML_CONCAT(v, TOML_LIB_MAJOR)
#define TOML_ABI_NAMESPACE_START(name) inline namespace name { #define TOML_ABI_NAMESPACE_START(name) inline namespace name {
#define TOML_ABI_NAMESPACE_BOOL(cond, T, F) TOML_ABI_NAMESPACE_START(TOML_CONCAT(TOML_EVAL_BOOL_, cond)(T, F)) #define TOML_ABI_NAMESPACE_BOOL(cond, T, F) TOML_ABI_NAMESPACE_START(TOML_CONCAT(TOML_EVAL_BOOL_, cond)(T, F))
#define TOML_ABI_NAMESPACE_END } #define TOML_ABI_NAMESPACE_END } static_assert(true)
#else #else
#define TOML_NAMESPACE_START namespace toml #define TOML_NAMESPACE_START namespace toml
#define TOML_NAMESPACE_END #define TOML_NAMESPACE_END static_assert(true)
#define TOML_NAMESPACE toml #define TOML_NAMESPACE toml
#define TOML_ABI_NAMESPACE_START(...) #define TOML_ABI_NAMESPACE_START(...)
#define TOML_ABI_NAMESPACE_BOOL(...) #define TOML_ABI_NAMESPACE_BOOL(...)
#define TOML_ABI_NAMESPACE_END #define TOML_ABI_NAMESPACE_END static_assert(true)
#endif #endif
#define TOML_IMPL_NAMESPACE_START TOML_NAMESPACE_START { namespace impl #define TOML_IMPL_NAMESPACE_START TOML_NAMESPACE_START { namespace impl
#define TOML_IMPL_NAMESPACE_END } TOML_NAMESPACE_END #define TOML_IMPL_NAMESPACE_END } TOML_NAMESPACE_END
@ -575,9 +637,9 @@ is no longer necessary.
#define TOML_INTERNAL_LINKAGE inline #define TOML_INTERNAL_LINKAGE inline
#else #else
#define TOML_ANON_NAMESPACE_START namespace #define TOML_ANON_NAMESPACE_START namespace
#define TOML_ANON_NAMESPACE_END #define TOML_ANON_NAMESPACE_END static_assert(true)
#define TOML_ANON_NAMESPACE #define TOML_ANON_NAMESPACE
#define TOML_USING_ANON_NAMESPACE (void)0 #define TOML_USING_ANON_NAMESPACE static_cast<void>(0)
#define TOML_EXTERNAL_LINKAGE #define TOML_EXTERNAL_LINKAGE
#define TOML_INTERNAL_LINKAGE static #define TOML_INTERNAL_LINKAGE static
#endif #endif
@ -586,10 +648,10 @@ is no longer necessary.
//# ASSERT //# ASSERT
//#==================================================================================================================== //#====================================================================================================================
TOML_DISABLE_WARNINGS TOML_DISABLE_WARNINGS;
#ifndef TOML_ASSERT #ifndef TOML_ASSERT
#if defined(NDEBUG) || !defined(_DEBUG) #if defined(NDEBUG) || !defined(_DEBUG)
#define TOML_ASSERT(expr) (void)0 #define TOML_ASSERT(expr) static_cast<void>(0)
#else #else
#ifndef assert #ifndef assert
#include <cassert> #include <cassert>
@ -597,7 +659,7 @@ TOML_DISABLE_WARNINGS
#define TOML_ASSERT(expr) assert(expr) #define TOML_ASSERT(expr) assert(expr)
#endif #endif
#endif #endif
TOML_ENABLE_WARNINGS TOML_ENABLE_WARNINGS;
//#==================================================================================================================== //#====================================================================================================================
//# DOXYGEN SPAM //# DOXYGEN SPAM
@ -630,7 +692,6 @@ TOML_ENABLE_WARNINGS
/// \ecpp /// \ecpp
#define TOML_API
/// \def TOML_API /// \def TOML_API
/// \brief An annotation to add to public symbols. /// \brief An annotation to add to public symbols.
/// \detail Not defined by default. /// \detail Not defined by default.
@ -643,7 +704,6 @@ TOML_ENABLE_WARNINGS
/// \detail Defaults to the standard C `assert()`. /// \detail Defaults to the standard C `assert()`.
#define TOML_CONFIG_HEADER
/// \def TOML_CONFIG_HEADER /// \def TOML_CONFIG_HEADER
/// \brief An additional header to include before any other toml++ header files. /// \brief An additional header to include before any other toml++ header files.
/// \detail Not defined by default. /// \detail Not defined by default.
@ -685,8 +745,8 @@ TOML_ENABLE_WARNINGS
/// \def TOML_SMALL_FLOAT_TYPE /// \def TOML_SMALL_FLOAT_TYPE
/// \brief If your codebase has an additional 'small' float type (e.g. half-precision), this tells toml++ about it. /// \brief If your codebase has an additional 'small' float type (e.g. half-precision), this tells toml++ about it.
/// \detail Not defined by default. /// \detail Not defined by default.
/// \attention If you're building for a platform that has a built-in half precision float (e.g. `_Float16`), you don't /// \remark If you're building for a platform that has a built-in half precision float (e.g. `_Float16`), you don't
/// need to use this configuration option to make toml++ aware of it; the library comes with that built-in. /// need to use this configuration option to make toml++ aware of it; the library comes with that built-in.
#define TOML_SMALL_INT_TYPE #define TOML_SMALL_INT_TYPE
/// \def TOML_SMALL_INT_TYPE /// \def TOML_SMALL_INT_TYPE
@ -706,12 +766,12 @@ TOML_ENABLE_WARNINGS
/// when building for Windows. /// when building for Windows.
/// \detail Defaults to `1` when building for Windows, `0` otherwise. Has no effect when building for anything other /// \detail Defaults to `1` when building for Windows, `0` otherwise. Has no effect when building for anything other
/// than Windows. /// than Windows.
/// \attention This <strong>does not</strong> change the underlying string type used to represent TOML keys and string /// \remark This <strong>does not</strong> change the underlying string type used to represent TOML keys and string
/// values; that will still be std::string. This setting simply enables some narrow &lt;=&gt; wide string /// values; that will still be std::string. This setting simply enables some narrow &lt;=&gt; wide string
/// conversions when necessary at various interface boundaries. /// conversions when necessary at various interface boundaries.
/// <br><br> /// <br><br>
/// If you're building for Windows and you have no need for Windows' "Pretends-to-be-unicode" wide strings, /// If you're building for Windows and you have no need for Windows' "Pretends-to-be-unicode" wide strings,
/// you can safely set this to `0`. /// you can safely set this to `0`.
/// @} /// @}

View File

@ -5,7 +5,7 @@
#pragma once #pragma once
#include "toml_date_time.h" #include "toml_date_time.h"
TOML_DISABLE_WARNINGS TOML_DISABLE_WARNINGS;
#include <cmath> #include <cmath>
#if TOML_INT_CHARCONV || TOML_FLOAT_CHARCONV #if TOML_INT_CHARCONV || TOML_FLOAT_CHARCONV
#include <charconv> #include <charconv>
@ -16,10 +16,10 @@ TOML_DISABLE_WARNINGS
#if !TOML_INT_CHARCONV #if !TOML_INT_CHARCONV
#include <iomanip> #include <iomanip>
#endif #endif
TOML_ENABLE_WARNINGS TOML_ENABLE_WARNINGS;
TOML_PUSH_WARNINGS TOML_PUSH_WARNINGS;
TOML_DISABLE_SWITCH_WARNINGS TOML_DISABLE_SWITCH_WARNINGS;
TOML_IMPL_NAMESPACE_START TOML_IMPL_NAMESPACE_START
{ {
@ -377,8 +377,8 @@ TOML_IMPL_NAMESPACE_START
print_to_stream(*val.offset, stream); print_to_stream(*val.offset, stream);
} }
TOML_PUSH_WARNINGS TOML_PUSH_WARNINGS;
TOML_DISABLE_ARITHMETIC_WARNINGS TOML_DISABLE_ARITHMETIC_WARNINGS;
template <typename T, typename Char> template <typename T, typename Char>
void print_to_stream_with_escapes(T && str, std::basic_ostream<Char>& stream) void print_to_stream_with_escapes(T && str, std::basic_ostream<Char>& stream)
@ -399,9 +399,9 @@ TOML_IMPL_NAMESPACE_START
} }
} }
TOML_POP_WARNINGS // TOML_DISABLE_ARITHMETIC_WARNINGS TOML_POP_WARNINGS; // TOML_DISABLE_ARITHMETIC_WARNINGS
} }
TOML_IMPL_NAMESPACE_END TOML_IMPL_NAMESPACE_END;
TOML_NAMESPACE_START TOML_NAMESPACE_START
{ {
@ -481,6 +481,6 @@ TOML_NAMESPACE_START
extern template TOML_API std::ostream& operator << (std::ostream&, const source_region&); extern template TOML_API std::ostream& operator << (std::ostream&, const source_region&);
#endif #endif
} }
TOML_NAMESPACE_END TOML_NAMESPACE_END;
TOML_POP_WARNINGS // TOML_DISABLE_SWITCH_WARNINGS TOML_POP_WARNINGS; // TOML_DISABLE_SWITCH_WARNINGS

View File

@ -6,6 +6,7 @@
#pragma once #pragma once
#include "toml_array.h" #include "toml_array.h"
/// \cond
TOML_IMPL_NAMESPACE_START TOML_IMPL_NAMESPACE_START
{ {
template <bool IsConst> template <bool IsConst>
@ -135,7 +136,7 @@ TOML_IMPL_NAMESPACE_START
return lhs.raw_ != rhs.raw_; return lhs.raw_ != rhs.raw_;
} }
TOML_DISABLE_WARNINGS TOML_DISABLE_WARNINGS;
template <bool C = IsConst, typename = std::enable_if_t<!C>> template <bool C = IsConst, typename = std::enable_if_t<!C>>
operator table_iterator<true>() const noexcept operator table_iterator<true>() const noexcept
@ -143,7 +144,7 @@ TOML_IMPL_NAMESPACE_START
return table_iterator<true>{ raw_ }; return table_iterator<true>{ raw_ };
} }
TOML_ENABLE_WARNINGS TOML_ENABLE_WARNINGS;
}; };
struct table_init_pair final struct table_init_pair final
@ -192,7 +193,8 @@ TOML_IMPL_NAMESPACE_START
#endif #endif
}; };
} }
TOML_IMPL_NAMESPACE_END TOML_IMPL_NAMESPACE_END;
/// \endcond
TOML_NAMESPACE_START TOML_NAMESPACE_START
{ {
@ -214,6 +216,8 @@ TOML_NAMESPACE_START
private: private:
friend class TOML_PARSER_TYPENAME; friend class TOML_PARSER_TYPENAME;
/// \cond
impl::string_map<std::unique_ptr<node>> map; impl::string_map<std::unique_ptr<node>> map;
bool inline_ = false; bool inline_ = false;
@ -224,6 +228,8 @@ TOML_NAMESPACE_START
table(impl::table_init_pair*, size_t) noexcept; table(impl::table_init_pair*, size_t) noexcept;
/// \endcond
public: public:
/// \brief A BidirectionalIterator for iterating over key-value pairs in a toml::table. /// \brief A BidirectionalIterator for iterating over key-value pairs in a toml::table.
@ -291,13 +297,13 @@ TOML_NAMESPACE_START
#endif #endif
} }
/// \name Type checks
/// @{
[[nodiscard]] node_type type() const noexcept override; [[nodiscard]] node_type type() const noexcept override;
[[nodiscard]] bool is_table() const noexcept override; [[nodiscard]] bool is_table() const noexcept override;
[[nodiscard]] bool is_array() const noexcept override; [[nodiscard]] bool is_array() const noexcept override;
[[nodiscard]] bool is_value() const noexcept override; [[nodiscard]] bool is_value() const noexcept override;
[[nodiscard]] table* as_table() noexcept override;
[[nodiscard]] const table* as_table() const noexcept override;
[[nodiscard]] bool is_homogeneous(node_type ntype) const noexcept override; [[nodiscard]] bool is_homogeneous(node_type ntype) const noexcept override;
[[nodiscard]] bool is_homogeneous(node_type ntype, node*& first_nonmatch) noexcept override; [[nodiscard]] bool is_homogeneous(node_type ntype, node*& first_nonmatch) noexcept override;
[[nodiscard]] bool is_homogeneous(node_type ntype, const node*& first_nonmatch) const noexcept override; [[nodiscard]] bool is_homogeneous(node_type ntype, const node*& first_nonmatch) const noexcept override;
@ -315,6 +321,19 @@ TOML_NAMESPACE_START
return is_homogeneous(impl::node_type_of<type>); return is_homogeneous(impl::node_type_of<type>);
} }
/// @}
/// \name Type casts
/// @{
[[nodiscard]] table* as_table() noexcept override;
[[nodiscard]] const table* as_table() const noexcept override;
/// @}
/// \name Metadata
/// @{
/// \brief Returns true if this table is an inline table. /// \brief Returns true if this table is an inline table.
/// ///
/// \remarks Runtime-constructed tables (i.e. those not created during /// \remarks Runtime-constructed tables (i.e. those not created during
@ -362,6 +381,11 @@ TOML_NAMESPACE_START
/// \param val The new value for 'inline'. /// \param val The new value for 'inline'.
void is_inline(bool val) noexcept; void is_inline(bool val) noexcept;
/// @}
/// \name Node views
/// @{
/// \brief Gets a node_view for the selected key-value pair. /// \brief Gets a node_view for the selected key-value pair.
/// ///
/// \param key The key used for the lookup. /// \param key The key used for the lookup.
@ -392,6 +416,8 @@ TOML_NAMESPACE_START
/// \brief Gets a node_view for the selected key-value pair. /// \brief Gets a node_view for the selected key-value pair.
/// ///
/// \availability This overload is only available when #TOML_WINDOWS_COMPAT is enabled.
///
/// \param key The key used for the lookup. /// \param key The key used for the lookup.
/// ///
/// \returns A view of the value at the given key if one existed, or an empty node view. /// \returns A view of the value at the given key if one existed, or an empty node view.
@ -401,11 +427,11 @@ TOML_NAMESPACE_START
/// <strong>This is not an error.</strong> /// <strong>This is not an error.</strong>
/// ///
/// \see toml::node_view /// \see toml::node_view
///
/// \attention This overload is only available when #TOML_WINDOWS_COMPAT is enabled.
[[nodiscard]] node_view<node> operator[] (std::wstring_view key) noexcept; [[nodiscard]] node_view<node> operator[] (std::wstring_view key) noexcept;
/// \brief Gets a node_view for the selected key-value pair (const overload). /// \brief Gets a node_view for the selected key-value pair (const overload).
///
/// \availability This overload is only available when #TOML_WINDOWS_COMPAT is enabled.
/// ///
/// \param key The key used for the lookup. /// \param key The key used for the lookup.
/// ///
@ -416,12 +442,15 @@ TOML_NAMESPACE_START
/// <strong>This is not an error.</strong> /// <strong>This is not an error.</strong>
/// ///
/// \see toml::node_view /// \see toml::node_view
///
/// \attention This overload is only available when #TOML_WINDOWS_COMPAT is enabled.
[[nodiscard]] node_view<const node> operator[] (std::wstring_view key) const noexcept; [[nodiscard]] node_view<const node> operator[] (std::wstring_view key) const noexcept;
#endif // TOML_WINDOWS_COMPAT #endif // TOML_WINDOWS_COMPAT
/// @}
/// \name Table operations
/// @{
/// \brief Returns an iterator to the first key-value pair. /// \brief Returns an iterator to the first key-value pair.
[[nodiscard]] iterator begin() noexcept; [[nodiscard]] iterator begin() noexcept;
/// \brief Returns an iterator to the first key-value pair. /// \brief Returns an iterator to the first key-value pair.
@ -483,13 +512,13 @@ TOML_NAMESPACE_START
/// \param key The key at which to insert the new value. /// \param key The key at which to insert the new value.
/// \param val The new value to insert. /// \param val The new value to insert.
/// ///
/// \returns <strong><em>Valid input:</em></strong><br> /// \returns \conditional_return{Valid input}
/// <ul> /// <ul>
/// <li>An iterator to the insertion position (or the position of the value that prevented insertion) /// <li>An iterator to the insertion position (or the position of the value that prevented insertion)
/// <li>A boolean indicating if the insertion was successful. /// <li>A boolean indicating if the insertion was successful.
/// </ul> /// </ul>
/// <strong><em>`val` is an empty toml::node_view:</em></strong><br> /// \conditional_return{Input is an empty toml::node_view}
/// `{ end(), false }` /// `{ end(), false }`
/// ///
/// \attention The return value will always be `{ end(), false }` if the input value was an /// \attention The return value will always be `{ end(), false }` if the input value was an
/// empty toml::node_view, because no insertion can take place. This is the only circumstance /// empty toml::node_view, because no insertion can take place. This is the only circumstance
@ -628,13 +657,13 @@ TOML_NAMESPACE_START
/// \param key The key at which to insert or assign the value. /// \param key The key at which to insert or assign the value.
/// \param val The value to insert/assign. /// \param val The value to insert/assign.
/// ///
/// \returns <strong><em>Valid input:</em></strong><br> /// \returns \conditional_return{Valid input}
/// <ul> /// <ul>
/// <li>An iterator to the value's position /// <li>An iterator to the value's position
/// <li>`true` if the value was inserted, `false` if it was assigned. /// <li>`true` if the value was inserted, `false` if it was assigned.
/// </ul> /// </ul>
/// <strong><em>`val` is an empty toml::node_view:</em></strong><br> /// \conditional_return{Input is an empty toml::node_view}
/// `{ end(), false }` /// `{ end(), false }`
/// ///
/// \attention The return value will always be `{ end(), false }` if the input value was /// \attention The return value will always be `{ end(), false }` if the input value was
/// an empty toml::node_view, because no insertion or assignment can take place. /// an empty toml::node_view, because no insertion or assignment can take place.
@ -864,17 +893,65 @@ TOML_NAMESPACE_START
/// \brief Removes the value with the given key from the table. /// \brief Removes the value with the given key from the table.
/// ///
/// \availability This overload is only available when #TOML_WINDOWS_COMPAT is enabled.
///
/// \param key Key to erase. /// \param key Key to erase.
/// ///
/// \returns True if any values with matching keys were found and erased. /// \returns True if any values with matching keys were found and erased.
///
/// \attention This overload is only available when #TOML_WINDOWS_COMPAT is enabled.
bool erase(std::wstring_view key) noexcept; bool erase(std::wstring_view key) noexcept;
#endif #endif // TOML_WINDOWS_COMPAT
/// \brief Gets an iterator to the node at a specific key.
///
/// \param key The node's key.
///
/// \returns An iterator to the node at the specified key, or end().
[[nodiscard]] iterator find(std::string_view key) noexcept;
/// \brief Gets an iterator to the node at a specific key (const overload)
///
/// \param key The node's key.
///
/// \returns A const iterator to the node at the specified key, or cend().
[[nodiscard]] const_iterator find(std::string_view key) const noexcept;
/// \brief Returns true if the table contains a node at the given key.
[[nodiscard]] bool contains(std::string_view key) const noexcept;
#if TOML_WINDOWS_COMPAT
/// \brief Gets an iterator to the node at a specific key.
///
/// \availability This overload is only available when #TOML_WINDOWS_COMPAT is enabled.
///
/// \param key The node's key.
///
/// \returns An iterator to the node at the specified key, or end().
[[nodiscard]] iterator find(std::wstring_view key) noexcept;
/// \brief Gets an iterator to the node at a specific key (const overload).
///
/// \availability This overload is only available when #TOML_WINDOWS_COMPAT is enabled.
///
/// \param key The node's key.
///
/// \returns A const iterator to the node at the specified key, or cend().
[[nodiscard]] const_iterator find(std::wstring_view key) const noexcept;
/// \brief Returns true if the table contains a node at the given key.
///
/// \availability This overload is only available when #TOML_WINDOWS_COMPAT is enabled.
[[nodiscard]] bool contains(std::wstring_view key) const noexcept;
#endif // TOML_WINDOWS_COMPAT
/// @}
private: private:
/// \cond
template <typename Map, typename Key> template <typename Map, typename Key>
[[nodiscard]] [[nodiscard]]
static auto do_get(Map& vals, const Key& key) noexcept static auto do_get(Map& vals, const Key& key) noexcept
@ -917,8 +994,13 @@ TOML_NAMESPACE_START
return do_get(vals, key) != nullptr; return do_get(vals, key) != nullptr;
} }
/// \endcond
public: public:
/// \name Value retrieval
/// @{
/// \brief Gets the node at a specific key. /// \brief Gets the node at a specific key.
/// ///
/// \detail \cpp /// \detail \cpp
@ -953,66 +1035,26 @@ TOML_NAMESPACE_START
/// \returns A pointer to the node at the specified key, or nullptr. /// \returns A pointer to the node at the specified key, or nullptr.
[[nodiscard]] const node* get(std::string_view key) const noexcept; [[nodiscard]] const node* get(std::string_view key) const noexcept;
/// \brief Gets an iterator to the node at a specific key.
///
/// \param key The node's key.
///
/// \returns An iterator to the node at the specified key, or end().
[[nodiscard]] iterator find(std::string_view key) noexcept;
/// \brief Gets an iterator to the node at a specific key (const overload)
///
/// \param key The node's key.
///
/// \returns A const iterator to the node at the specified key, or cend().
[[nodiscard]] const_iterator find(std::string_view key) const noexcept;
/// \brief Returns true if the table contains a node at the given key.
[[nodiscard]] bool contains(std::string_view key) const noexcept;
#if TOML_WINDOWS_COMPAT #if TOML_WINDOWS_COMPAT
/// \brief Gets the node at a specific key. /// \brief Gets the node at a specific key.
/// ///
/// \availability This overload is only available when #TOML_WINDOWS_COMPAT is enabled.
///
/// \param key The node's key. /// \param key The node's key.
/// ///
/// \returns A pointer to the node at the specified key, or nullptr. /// \returns A pointer to the node at the specified key, or nullptr.
///
/// \attention This overload is only available when #TOML_WINDOWS_COMPAT is enabled.
[[nodiscard]] node* get(std::wstring_view key) noexcept; [[nodiscard]] node* get(std::wstring_view key) noexcept;
/// \brief Gets the node at a specific key (const overload). /// \brief Gets the node at a specific key (const overload).
/// ///
/// \availability This overload is only available when #TOML_WINDOWS_COMPAT is enabled.
///
/// \param key The node's key. /// \param key The node's key.
/// ///
/// \returns A pointer to the node at the specified key, or nullptr. /// \returns A pointer to the node at the specified key, or nullptr.
///
/// \attention This overload is only available when #TOML_WINDOWS_COMPAT is enabled.
[[nodiscard]] const node* get(std::wstring_view key) const noexcept; [[nodiscard]] const node* get(std::wstring_view key) const noexcept;
/// \brief Gets an iterator to the node at a specific key.
///
/// \param key The node's key.
///
/// \returns An iterator to the node at the specified key, or end().
///
/// \attention This overload is only available when #TOML_WINDOWS_COMPAT is enabled.
[[nodiscard]] iterator find(std::wstring_view key) noexcept;
/// \brief Gets an iterator to the node at a specific key (const overload).
///
/// \param key The node's key.
///
/// \returns A const iterator to the node at the specified key, or cend().
///
/// \attention This overload is only available when #TOML_WINDOWS_COMPAT is enabled.
[[nodiscard]] const_iterator find(std::wstring_view key) const noexcept;
/// \brief Returns true if the table contains a node at the given key.
///
/// \attention This overload is only available when #TOML_WINDOWS_COMPAT is enabled.
[[nodiscard]] bool contains(std::wstring_view key) const noexcept;
#endif // TOML_WINDOWS_COMPAT #endif // TOML_WINDOWS_COMPAT
/// \brief Gets the node at a specific key if it is a particular type. /// \brief Gets the node at a specific key if it is a particular type.
@ -1059,12 +1101,12 @@ TOML_NAMESPACE_START
/// \brief Gets the node at a specific key if it is a particular type. /// \brief Gets the node at a specific key if it is a particular type.
/// ///
/// \availability This overload is only available when #TOML_WINDOWS_COMPAT is enabled.
///
/// \tparam ValueType One of the TOML node or value types. /// \tparam ValueType One of the TOML node or value types.
/// \param key The node's key. /// \param key The node's key.
/// ///
/// \returns A pointer to the node at the specified key if it was of the given type, or nullptr. /// \returns A pointer to the node at the specified key if it was of the given type, or nullptr.
///
/// \attention This overload is only available when #TOML_WINDOWS_COMPAT is enabled.
template <typename ValueType> template <typename ValueType>
[[nodiscard]] [[nodiscard]]
impl::wrap_node<ValueType>* get_as(std::wstring_view key) noexcept impl::wrap_node<ValueType>* get_as(std::wstring_view key) noexcept
@ -1074,12 +1116,12 @@ TOML_NAMESPACE_START
/// \brief Gets the node at a specific key if it is a particular type (const overload). /// \brief Gets the node at a specific key if it is a particular type (const overload).
/// ///
/// \availability This overload is only available when #TOML_WINDOWS_COMPAT is enabled.
///
/// \tparam ValueType One of the TOML node or value types. /// \tparam ValueType One of the TOML node or value types.
/// \param key The node's key. /// \param key The node's key.
/// ///
/// \returns A pointer to the node at the specified key if it was of the given type, or nullptr. /// \returns A pointer to the node at the specified key if it was of the given type, or nullptr.
///
/// \attention This overload is only available when #TOML_WINDOWS_COMPAT is enabled.
template <typename ValueType> template <typename ValueType>
[[nodiscard]] [[nodiscard]]
const impl::wrap_node<ValueType>* get_as(std::wstring_view key) const noexcept const impl::wrap_node<ValueType>* get_as(std::wstring_view key) const noexcept
@ -1089,6 +1131,11 @@ TOML_NAMESPACE_START
#endif // TOML_WINDOWS_COMPAT #endif // TOML_WINDOWS_COMPAT
/// @}
/// \name Equality
/// @{
/// \brief Equality operator. /// \brief Equality operator.
/// ///
/// \param lhs The LHS table. /// \param lhs The LHS table.
@ -1109,12 +1156,12 @@ TOML_NAMESPACE_START
template <typename Char> template <typename Char>
friend std::basic_ostream<Char>& operator << (std::basic_ostream<Char>&, const table&); friend std::basic_ostream<Char>& operator << (std::basic_ostream<Char>&, const table&);
// implemented in toml_default_formatter.h // implemented in toml_default_formatter.h
/// @}
}; };
#ifndef DOXYGEN #ifndef DOXYGEN
//template <typename T> //template <typename T>
//inline std::vector<T> node::select_exact() const noexcept //inline std::vector<T> node::select_exact() const noexcept
//{ //{
@ -1154,4 +1201,4 @@ TOML_NAMESPACE_START
#endif // !DOXYGEN #endif // !DOXYGEN
} }
TOML_NAMESPACE_END TOML_NAMESPACE_END;

View File

@ -352,5 +352,5 @@ TOML_NAMESPACE_START
return !(lhs == rhs); return !(lhs == rhs);
} }
} }
TOML_NAMESPACE_END TOML_NAMESPACE_END;

View File

@ -4,8 +4,8 @@
// SPDX-License-Identifier: MIT // SPDX-License-Identifier: MIT
#pragma once #pragma once
#ifndef DOXYGEN
/// \cond
TOML_IMPL_NAMESPACE_START TOML_IMPL_NAMESPACE_START
{ {
[[nodiscard]] [[nodiscard]]
@ -964,6 +964,5 @@ TOML_IMPL_NAMESPACE_START
} }
}; };
} }
TOML_IMPL_NAMESPACE_END TOML_IMPL_NAMESPACE_END;
/// \endcond
#endif // !DOXYGEN

View File

@ -13,6 +13,7 @@
#include "toml_utf8.h" #include "toml_utf8.h"
#include "toml_parse_error.h" #include "toml_parse_error.h"
/// \cond
TOML_IMPL_NAMESPACE_START TOML_IMPL_NAMESPACE_START
{ {
template <typename T> template <typename T>
@ -162,7 +163,7 @@ TOML_IMPL_NAMESPACE_START
static_assert(std::is_trivial_v<utf8_codepoint>); static_assert(std::is_trivial_v<utf8_codepoint>);
static_assert(std::is_standard_layout_v<utf8_codepoint>); static_assert(std::is_standard_layout_v<utf8_codepoint>);
TOML_ABI_NAMESPACE_END // TOML_LARGE_FILES TOML_ABI_NAMESPACE_END; // TOML_LARGE_FILES
TOML_ABI_NAMESPACE_BOOL(TOML_EXCEPTIONS, ex, noex) TOML_ABI_NAMESPACE_BOOL(TOML_EXCEPTIONS, ex, noex)
@ -376,6 +377,7 @@ TOML_IMPL_NAMESPACE_START
#endif #endif
}; };
TOML_ABI_NAMESPACE_END // TOML_EXCEPTIONS TOML_ABI_NAMESPACE_END; // TOML_EXCEPTIONS
} }
TOML_IMPL_NAMESPACE_END TOML_IMPL_NAMESPACE_END;
/// \endcond

View File

@ -102,9 +102,9 @@ TOML_IMPL_NAMESPACE_START
} }
#endif #endif
TOML_ABI_NAMESPACE_END // TOML_EXCEPTIONS TOML_ABI_NAMESPACE_END; // TOML_EXCEPTIONS
} }
TOML_IMPL_NAMESPACE_END TOML_IMPL_NAMESPACE_END;
#undef TOML_ERROR_CHECK #undef TOML_ERROR_CHECK
#undef TOML_ERROR #undef TOML_ERROR

View File

@ -66,9 +66,10 @@
TOML_SA_LIST_END TOML_SA_LIST_END
#endif // !DOXYGEN #endif // !DOXYGEN
TOML_PUSH_WARNINGS TOML_PUSH_WARNINGS;
TOML_DISABLE_ARITHMETIC_WARNINGS TOML_DISABLE_ARITHMETIC_WARNINGS;
/// \cond
TOML_IMPL_NAMESPACE_START TOML_IMPL_NAMESPACE_START
{ {
template <typename T, typename...> template <typename T, typename...>
@ -161,7 +162,8 @@ TOML_IMPL_NAMESPACE_START
return { static_cast<T>(val) }; return { static_cast<T>(val) };
} }
} }
TOML_IMPL_NAMESPACE_END TOML_IMPL_NAMESPACE_END;
/// \endcond
TOML_NAMESPACE_START TOML_NAMESPACE_START
{ {
@ -187,6 +189,8 @@ TOML_NAMESPACE_START
private: private:
friend class TOML_PARSER_TYPENAME; friend class TOML_PARSER_TYPENAME;
/// \cond
template <typename T, typename U> template <typename T, typename U>
[[nodiscard]] [[nodiscard]]
TOML_ALWAYS_INLINE TOML_ALWAYS_INLINE
@ -214,6 +218,8 @@ TOML_NAMESPACE_START
} }
#endif #endif
/// \endcond
public: public:
/// \brief The value's underlying data type. /// \brief The value's underlying data type.
@ -299,6 +305,9 @@ TOML_NAMESPACE_START
} }
#endif #endif
/// \name Type checks
/// @{
/// \brief Returns the value's node type identifier. /// \brief Returns the value's node type identifier.
/// ///
/// \returns One of: /// \returns One of:
@ -324,22 +333,6 @@ TOML_NAMESPACE_START
[[nodiscard]] bool is_time() const noexcept override { return std::is_same_v<value_type, time>; } [[nodiscard]] bool is_time() const noexcept override { return std::is_same_v<value_type, time>; }
[[nodiscard]] bool is_date_time() const noexcept override { return std::is_same_v<value_type, date_time>; } [[nodiscard]] bool is_date_time() const noexcept override { return std::is_same_v<value_type, date_time>; }
[[nodiscard]] value<std::string>* as_string() noexcept override { return as_value<std::string>(this); }
[[nodiscard]] value<int64_t>* as_integer() noexcept override { return as_value<int64_t>(this); }
[[nodiscard]] value<double>* as_floating_point() noexcept override { return as_value<double>(this); }
[[nodiscard]] value<bool>* as_boolean() noexcept override { return as_value<bool>(this); }
[[nodiscard]] value<date>* as_date() noexcept override { return as_value<date>(this); }
[[nodiscard]] value<time>* as_time() noexcept override { return as_value<time>(this); }
[[nodiscard]] value<date_time>* as_date_time() noexcept override { return as_value<date_time>(this); }
[[nodiscard]] const value<std::string>* as_string() const noexcept override { return as_value<std::string>(this); }
[[nodiscard]] const value<int64_t>* as_integer() const noexcept override { return as_value<int64_t>(this); }
[[nodiscard]] const value<double>* as_floating_point() const noexcept override { return as_value<double>(this); }
[[nodiscard]] const value<bool>* as_boolean() const noexcept override { return as_value<bool>(this); }
[[nodiscard]] const value<date>* as_date() const noexcept override { return as_value<date>(this); }
[[nodiscard]] const value<time>* as_time() const noexcept override { return as_value<time>(this); }
[[nodiscard]] const value<date_time>* as_date_time() const noexcept override { return as_value<date_time>(this); }
[[nodiscard]] [[nodiscard]]
bool is_homogeneous(node_type ntype) const noexcept override bool is_homogeneous(node_type ntype) const noexcept override
{ {
@ -384,6 +377,32 @@ TOML_NAMESPACE_START
return impl::node_type_of<type> == impl::node_type_of<value_type>; return impl::node_type_of<type> == impl::node_type_of<value_type>;
} }
/// @}
/// \name Type casts
/// @{
[[nodiscard]] value<std::string>* as_string() noexcept override { return as_value<std::string>(this); }
[[nodiscard]] value<int64_t>* as_integer() noexcept override { return as_value<int64_t>(this); }
[[nodiscard]] value<double>* as_floating_point() noexcept override { return as_value<double>(this); }
[[nodiscard]] value<bool>* as_boolean() noexcept override { return as_value<bool>(this); }
[[nodiscard]] value<date>* as_date() noexcept override { return as_value<date>(this); }
[[nodiscard]] value<time>* as_time() noexcept override { return as_value<time>(this); }
[[nodiscard]] value<date_time>* as_date_time() noexcept override { return as_value<date_time>(this); }
[[nodiscard]] const value<std::string>* as_string() const noexcept override { return as_value<std::string>(this); }
[[nodiscard]] const value<int64_t>* as_integer() const noexcept override { return as_value<int64_t>(this); }
[[nodiscard]] const value<double>* as_floating_point() const noexcept override { return as_value<double>(this); }
[[nodiscard]] const value<bool>* as_boolean() const noexcept override { return as_value<bool>(this); }
[[nodiscard]] const value<date>* as_date() const noexcept override { return as_value<date>(this); }
[[nodiscard]] const value<time>* as_time() const noexcept override { return as_value<time>(this); }
[[nodiscard]] const value<date_time>* as_date_time() const noexcept override { return as_value<date_time>(this); }
/// @}
/// \name Value retrieval
/// @{
/// \brief Returns a reference to the underlying value. /// \brief Returns a reference to the underlying value.
[[nodiscard]] value_type& get() & noexcept { return val_; } [[nodiscard]] value_type& get() & noexcept { return val_; }
/// \brief Returns a reference to the underlying value (rvalue overload). /// \brief Returns a reference to the underlying value (rvalue overload).
@ -405,6 +424,11 @@ TOML_NAMESPACE_START
/// \brief Returns a reference to the underlying value (const overload). /// \brief Returns a reference to the underlying value (const overload).
[[nodiscard]] explicit operator const value_type& () const& noexcept { return val_; } [[nodiscard]] explicit operator const value_type& () const& noexcept { return val_; }
/// @}
/// \name Metadata
/// @{
/// \brief Returns the metadata flags associated with this value. /// \brief Returns the metadata flags associated with this value.
[[nodiscard]] value_flags flags() const noexcept [[nodiscard]] value_flags flags() const noexcept
{ {
@ -419,6 +443,8 @@ TOML_NAMESPACE_START
return *this; return *this;
} }
/// @}
/// \brief Prints the value out to a stream as formatted TOML. /// \brief Prints the value out to a stream as formatted TOML.
template <typename Char, typename T> template <typename Char, typename T>
friend std::basic_ostream<Char>& operator << (std::basic_ostream<Char>& lhs, const value<T>& rhs); friend std::basic_ostream<Char>& operator << (std::basic_ostream<Char>& lhs, const value<T>& rhs);
@ -441,6 +467,9 @@ TOML_NAMESPACE_START
return *this; return *this;
} }
/// \name Equality
/// @{
/// \brief Value equality operator. /// \brief Value equality operator.
[[nodiscard]] [[nodiscard]]
friend bool operator == (const value& lhs, value_arg rhs) noexcept friend bool operator == (const value& lhs, value_arg rhs) noexcept
@ -456,7 +485,7 @@ TOML_NAMESPACE_START
} }
return lhs.val_ == rhs; return lhs.val_ == rhs;
} }
TOML_ASYMMETRICAL_EQUALITY_OPS(const value&, value_arg, ) TOML_ASYMMETRICAL_EQUALITY_OPS(const value&, value_arg, );
/// \brief Value less-than operator. /// \brief Value less-than operator.
[[nodiscard]] friend bool operator < (const value& lhs, value_arg rhs) noexcept { return lhs.val_ < rhs; } [[nodiscard]] friend bool operator < (const value& lhs, value_arg rhs) noexcept { return lhs.val_ < rhs; }
@ -510,8 +539,10 @@ TOML_NAMESPACE_START
/// \param lhs The LHS toml::value. /// \param lhs The LHS toml::value.
/// \param rhs The RHS toml::value. /// \param rhs The RHS toml::value.
/// ///
/// \returns <strong><em>Same value types:</em></strong> `lhs.get() < rhs.get()` <br> /// \returns \conditional_return{Same value types}
/// <strong><em>Different value types:</em></strong> `lhs.type() < rhs.type()` /// `lhs.get() < rhs.get()`
/// \conditional_return{Different value types}
/// `lhs.type() < rhs.type()`
template <typename T> template <typename T>
[[nodiscard]] [[nodiscard]]
friend bool operator < (const value& lhs, const value<T>& rhs) noexcept friend bool operator < (const value& lhs, const value<T>& rhs) noexcept
@ -527,8 +558,10 @@ TOML_NAMESPACE_START
/// \param lhs The LHS toml::value. /// \param lhs The LHS toml::value.
/// \param rhs The RHS toml::value. /// \param rhs The RHS toml::value.
/// ///
/// \returns <strong><em>Same value types:</em></strong> `lhs.get() <= rhs.get()` <br> /// \returns \conditional_return{Same value types}
/// <strong><em>Different value types:</em></strong> `lhs.type() <= rhs.type()` /// `lhs.get() <= rhs.get()`
/// \conditional_return{Different value types}
/// `lhs.type() <= rhs.type()`
template <typename T> template <typename T>
[[nodiscard]] [[nodiscard]]
friend bool operator <= (const value& lhs, const value<T>& rhs) noexcept friend bool operator <= (const value& lhs, const value<T>& rhs) noexcept
@ -544,8 +577,10 @@ TOML_NAMESPACE_START
/// \param lhs The LHS toml::value. /// \param lhs The LHS toml::value.
/// \param rhs The RHS toml::value. /// \param rhs The RHS toml::value.
/// ///
/// \returns <strong><em>Same value types:</em></strong> `lhs.get() > rhs.get()` <br> /// \returns \conditional_return{Same value types}
/// <strong><em>Different value types:</em></strong> `lhs.type() > rhs.type()` /// `lhs.get() > rhs.get()`
/// \conditional_return{Different value types}
/// `lhs.type() > rhs.type()`
template <typename T> template <typename T>
[[nodiscard]] [[nodiscard]]
friend bool operator > (const value& lhs, const value<T>& rhs) noexcept friend bool operator > (const value& lhs, const value<T>& rhs) noexcept
@ -561,8 +596,10 @@ TOML_NAMESPACE_START
/// \param lhs The LHS toml::value. /// \param lhs The LHS toml::value.
/// \param rhs The RHS toml::value. /// \param rhs The RHS toml::value.
/// ///
/// \returns <strong><em>Same value types:</em></strong> `lhs.get() >= rhs.get()` <br> /// \returns \conditional_return{Same value types}
/// <strong><em>Different value types:</em></strong> `lhs.type() >= rhs.type()` /// `lhs.get() >= rhs.get()`
/// \conditional_return{Different value types}
/// `lhs.type() >= rhs.type()`
template <typename T> template <typename T>
[[nodiscard]] [[nodiscard]]
friend bool operator >= (const value& lhs, const value<T>& rhs) noexcept friend bool operator >= (const value& lhs, const value<T>& rhs) noexcept
@ -572,14 +609,17 @@ TOML_NAMESPACE_START
else else
return impl::node_type_of<value_type> >= impl::node_type_of<T>; return impl::node_type_of<value_type> >= impl::node_type_of<T>;
} }
/// @}
}; };
/// \cond
template <typename T> template <typename T>
value(T) -> value<impl::native_type_of<impl::remove_cvref_t<T>>>; value(T) -> value<impl::native_type_of<impl::remove_cvref_t<T>>>;
#ifndef DOXYGEN TOML_PUSH_WARNINGS;
TOML_PUSH_WARNINGS TOML_DISABLE_INIT_WARNINGS;
TOML_DISABLE_INIT_WARNINGS TOML_DISABLE_SWITCH_WARNINGS;
TOML_DISABLE_SWITCH_WARNINGS
#if !TOML_HEADER_ONLY #if !TOML_HEADER_ONLY
extern template class TOML_API value<std::string>; extern template class TOML_API value<std::string>;
@ -924,9 +964,9 @@ TOML_NAMESPACE_START
#endif // !TOML_HEADER_ONLY #endif // !TOML_HEADER_ONLY
TOML_POP_WARNINGS // TOML_DISABLE_INIT_WARNINGS, TOML_DISABLE_SWITCH_WARNINGS TOML_POP_WARNINGS; // TOML_DISABLE_INIT_WARNINGS, TOML_DISABLE_SWITCH_WARNINGS
#endif // !DOXYGEN /// \endcond
} }
TOML_NAMESPACE_END TOML_NAMESPACE_END;
TOML_POP_WARNINGS // TOML_DISABLE_ARITHMETIC_WARNINGS TOML_POP_WARNINGS; // TOML_DISABLE_ARITHMETIC_WARNINGS

View File

@ -43,7 +43,7 @@ is_windows = host_machine.system() == 'windows'
is_x64 = host_machine.cpu_family() == 'x86_64' is_x64 = host_machine.cpu_family() == 'x86_64'
is_subproject = meson.is_subproject() is_subproject = meson.is_subproject()
has_exceptions = get_option('cpp_eh') != 'none' has_exceptions = get_option('cpp_eh') != 'none'
include_dirs = include_directories('include', 'extern') include_dirs = include_directories('include', 'external')
overrides = [] overrides = []
additional_arguments = [] additional_arguments = []
@ -62,6 +62,8 @@ message(['has_exceptions', has_exceptions])
if is_gcc or is_clang if is_gcc or is_clang
add_project_arguments( add_project_arguments(
'-march=native', '-march=native',
'-fvisibility=hidden',
'-fvisibility-inlines-hidden',
language : 'cpp' language : 'cpp'
) )
if is_release if is_release
@ -70,6 +72,7 @@ if is_gcc or is_clang
'-ffunction-sections', '-ffunction-sections',
'-Wl,--gc-sections', '-Wl,--gc-sections',
'-Wl,-s', '-Wl,-s',
'-mfma',
language : 'cpp' language : 'cpp'
) )
endif endif
@ -483,8 +486,8 @@ endif
build_tests = get_option('build_tests') and not is_subproject build_tests = get_option('build_tests') and not is_subproject
if build_tests if build_tests
run_command('git', 'submodule', 'update', '--init', 'extern/Catch2') run_command('git', 'submodule', 'update', '--init', '--depth', '1', 'external/Catch2')
run_command('git', 'submodule', 'update', '--init', 'extern/tloptional') run_command('git', 'submodule', 'update', '--init', '--depth', '1', 'external/tloptional')
subdir('tests') subdir('tests')
endif endif

File diff suppressed because it is too large Load Diff

View File

@ -1,7 +0,0 @@
requests
bs4
pyyaml
python-dateutil
jinja2
pygments
html5lib

View File

@ -1,202 +0,0 @@
#!/usr/bin/env python3
# This file is a part of toml++ and is subject to the the terms of the MIT license.
# Copyright (c) Mark Gillard <mark.gillard@outlook.com.au>
# See https://github.com/marzer/tomlplusplus/blob/master/LICENSE for the full license text.
# SPDX-License-Identifier: MIT
import sys
import os
import os.path as path
import subprocess
import traceback
import shutil
import fnmatch
import requests
import hashlib
def is_tool(name):
return shutil.which(name) is not None
__script_folder = None
def get_script_folder():
global __script_folder
if __script_folder is None:
__script_folder = path.dirname(path.realpath(sys.argv[0]))
return __script_folder
def read_all_text_from_file(path, fallback_url=None, encoding='utf-8'):
try:
print("Reading {}".format(path))
with open(path, 'r', encoding=encoding) as f:
text = f.read()
return text
except:
if fallback_url is not None:
print("Couldn't read file locally, downloading from {}...".format(fallback_url))
response = requests.get(
fallback_url,
timeout=1
)
text = response.text
with open(path, 'w', encoding='utf-8', newline='\n') as f:
print(text, end='', file=f)
return text
else:
raise
def run_python_script(script_path, *args):
subprocess.check_call(
['py' if is_tool('py') else 'python3', script_path] + [arg for arg in args]
)
def repeat_pattern(pattern, count):
if len(pattern) == 1:
return pattern * count
text = ''
for i in range(0, count):
text = text + pattern[i % len(pattern)]
return text
def delete_directory(dir_path):
if (path.exists(dir_path)):
print('Deleting {}'.format(dir_path))
shutil.rmtree(dir_path)
def is_collection(val):
if isinstance(val, (list, tuple, dict, set, range)):
return True
return False
def is_pow2(v):
return v & (v-1) == 0
def next_power_of_2(n):
if n == 0:
return 1
if n & (n - 1) == 0:
return n
while n & (n - 1) > 0:
n &= (n - 1)
return n << 1
def get_all_files(dir, all=None, any=None):
files = [f for f in [path.join(dir, f) for f in os.listdir(dir)] if path.isfile(f)]
if (files and all is not None):
if (not is_collection(all)):
all = (all,)
all = [f for f in all if f is not None]
for fil in all:
files = fnmatch.filter(files, fil)
if (files and any is not None):
if (not is_collection(any)):
any = (any,)
any = [f for f in any if f is not None]
if any:
results = set()
for fil in any:
results.update(fnmatch.filter(files, fil))
files = [f for f in results]
files.sort()
return files
def make_divider(text = None, text_col = 40, pattern = '-', line_length = 120):
if (text is None):
return "//" + repeat_pattern(pattern, line_length-2)
else:
text = "//{} {} ".format(repeat_pattern(pattern, text_col - 2), text);
if (len(text) < line_length):
return text + repeat_pattern(pattern, line_length - len(text))
else:
return text
def __hash_combine_32(current_hash, next_hash):
current_hash = current_hash & 0xFFFFFFFF
next_hash = next_hash & 0xFFFFFFFF
current_hash = current_hash ^ (next_hash + 0x9E3779B9 + (current_hash << 6) + (current_hash >> 2))
return current_hash & 0xFFFFFFFF
def __hash_combine_64(current_hash, next_hash):
current_hash = current_hash & 0xFFFFFFFFFFFFFFFF
next_hash = next_hash & 0xFFFFFFFFFFFFFFFF
current_hash = current_hash ^ (next_hash + 0x9E3779B97F4A7C15 + (current_hash << 12) + (current_hash >> 4))
return current_hash & 0xFFFFFFFFFFFFFFFF
__hash_combine_func = None
if sys.hash_info.width == 64:
__hash_combine_func = __hash_combine_64
elif sys.hash_info.width == 32:
__hash_combine_func = __hash_combine_32
def hash_combine(current_hash, next_hash, *nexts):
global __hash_combine_func
current_hash = __hash_combine_func(current_hash, next_hash)
if nexts:
for n in nexts:
current_hash = __hash_combine_func(current_hash, n)
return current_hash
def multi_hash(obj, *objs):
assert obj is not None
h = hash(obj)
if objs:
for o in objs:
assert o is not None
h = hash_combine(h, hash(o))
return h
def multi_sha256(*objs):
assert objs
h = hashlib.sha256()
for o in objs:
assert o is not None
h.update(str(o).encode('utf-8'))
return h.hexdigest()
def run(main_func):
try:
result = main_func()
if result is None:
sys.exit(0)
else:
sys.exit(int(result))
except Exception as err:
print(
'Fatal error: [{}] {}'.format(
type(err).__name__,
str(err)
),
file=sys.stderr
)
traceback.print_exc(file=sys.stderr)
sys.exit(-1)

View File

@ -20,7 +20,7 @@
#if __has_include(<Catch2/single_include/catch2/catch.hpp>) #if __has_include(<Catch2/single_include/catch2/catch.hpp>)
#include <Catch2/single_include/catch2/catch.hpp> #include <Catch2/single_include/catch2/catch.hpp>
#else #else
#error Catch2 is missing! You probably need to fetch submodules ("git submodule update --init extern/Catch2") #error Catch2 is missing! You probably need to fetch submodules ("git submodule update --init --depth 1 external/Catch2")
#endif #endif
#ifdef __clang__ #ifdef __clang__

View File

@ -8,7 +8,7 @@
#include "tests.h" #include "tests.h"
using namespace toml::impl; using namespace toml::impl;
TOML_DISABLE_WARNINGS // unused variable spam TOML_DISABLE_WARNINGS; // unused variable spam
namespace namespace
{ {
@ -121,7 +121,7 @@ answer = 42)"sv;
])"sv; ])"sv;
} }
TOML_ENABLE_WARNINGS TOML_ENABLE_WARNINGS;
TEST_CASE("conformance - burntsushi/invalid") TEST_CASE("conformance - burntsushi/invalid")
{ {

View File

@ -8,7 +8,7 @@
#include "tests.h" #include "tests.h"
using namespace toml::impl; using namespace toml::impl;
TOML_DISABLE_WARNINGS // unused variable spam TOML_DISABLE_WARNINGS; // unused variable spam
namespace namespace
{ {
@ -261,7 +261,7 @@ answer8 = "\U000003B4")"sv;
#endif // UNICODE_LITERALS_OK #endif // UNICODE_LITERALS_OK
} }
TOML_ENABLE_WARNINGS TOML_ENABLE_WARNINGS;
TEST_CASE("conformance - burntsushi/valid") TEST_CASE("conformance - burntsushi/valid")
{ {

View File

@ -8,7 +8,7 @@
#include "tests.h" #include "tests.h"
using namespace toml::impl; using namespace toml::impl;
TOML_DISABLE_WARNINGS // unused variable spam TOML_DISABLE_WARNINGS; // unused variable spam
namespace namespace
{ {
@ -131,7 +131,7 @@ fruit = []
color = "green")"sv; color = "green")"sv;
} }
TOML_ENABLE_WARNINGS TOML_ENABLE_WARNINGS;
TEST_CASE("conformance - iarna/invalid") TEST_CASE("conformance - iarna/invalid")
{ {

View File

@ -8,7 +8,7 @@
#include "tests.h" #include "tests.h"
using namespace toml::impl; using namespace toml::impl;
TOML_DISABLE_WARNINGS // unused variable spam TOML_DISABLE_WARNINGS; // unused variable spam
namespace namespace
{ {
@ -265,7 +265,7 @@ smooth = true)"sv;
static constexpr auto spec_time_1 = R"(lt1 = 07:32:00)"sv; static constexpr auto spec_time_1 = R"(lt1 = 07:32:00)"sv;
} }
TOML_ENABLE_WARNINGS TOML_ENABLE_WARNINGS;
TEST_CASE("conformance - iarna/valid") TEST_CASE("conformance - iarna/valid")
{ {

1
tests/cpp.hint Normal file
View File

@ -0,0 +1 @@
#define TEST_CASE(...) void func()

View File

@ -6,12 +6,12 @@
#include "tests.h" #include "tests.h"
#ifdef _WIN32 #ifdef _WIN32
TOML_DISABLE_WARNINGS TOML_DISABLE_WARNINGS;
#include <windows.h> #include <windows.h>
TOML_ENABLE_WARNINGS TOML_ENABLE_WARNINGS;
#endif #endif
TOML_DISABLE_SPAM_WARNINGS TOML_DISABLE_SPAM_WARNINGS;
template <typename T> template <typename T>
static constexpr T one = static_cast<T>(1); static constexpr T one = static_cast<T>(1);

View File

@ -5,8 +5,8 @@
#include "tests.h" #include "tests.h"
TOML_PUSH_WARNINGS TOML_PUSH_WARNINGS;
TOML_DISABLE_INIT_WARNINGS TOML_DISABLE_INIT_WARNINGS;
TEST_CASE("parsing - dates and times") TEST_CASE("parsing - dates and times")
{ {
@ -162,5 +162,3 @@ TEST_CASE("parsing - dates and times")
parsing_should_fail(FILE_LINE_ARGS, "val = 1987-03-16 10"sv); parsing_should_fail(FILE_LINE_ARGS, "val = 1987-03-16 10"sv);
parsing_should_fail(FILE_LINE_ARGS, "val = 1987-03-16 1"sv); parsing_should_fail(FILE_LINE_ARGS, "val = 1987-03-16 1"sv);
} }
TOML_POP_WARNINGS

View File

@ -5,8 +5,8 @@
#include "tests.h" #include "tests.h"
TOML_PUSH_WARNINGS TOML_PUSH_WARNINGS;
TOML_DISABLE_INIT_WARNINGS TOML_DISABLE_INIT_WARNINGS;
TEST_CASE("parsing - TOML spec example") TEST_CASE("parsing - TOML spec example")
{ {
@ -95,4 +95,4 @@ TEST_CASE("parsing - TOML spec example")
); );
} }
TOML_POP_WARNINGS TOML_POP_WARNINGS;

View File

@ -46,15 +46,15 @@
#define UNICODE_LITERALS_OK 1 #define UNICODE_LITERALS_OK 1
#endif #endif
TOML_DISABLE_ARITHMETIC_WARNINGS TOML_DISABLE_ARITHMETIC_WARNINGS;
TOML_DISABLE_WARNINGS TOML_DISABLE_WARNINGS;
#include "catch2.h" #include "catch2.h"
#include <sstream> #include <sstream>
namespace toml {} namespace toml {}
using namespace Catch::literals; using namespace Catch::literals;
using namespace toml; using namespace toml;
TOML_ENABLE_WARNINGS TOML_ENABLE_WARNINGS;
#define FILE_LINE_ARGS std::string_view{ __FILE__ }, __LINE__ #define FILE_LINE_ARGS std::string_view{ __FILE__ }, __LINE__
#define BOM_PREFIX "\xEF\xBB\xBF" #define BOM_PREFIX "\xEF\xBB\xBF"

View File

@ -19,7 +19,7 @@
#if __has_include(<tloptional/include/tl/optional.hpp>) #if __has_include(<tloptional/include/tl/optional.hpp>)
#include <tloptional/include/tl/optional.hpp> #include <tloptional/include/tl/optional.hpp>
#else #else
#error TartanLlama/optional is missing! You probably need to fetch submodules ("git submodule update --init extern/tloptional") #error TartanLlama/optional is missing! You probably need to fetch submodules ("git submodule update --init --depth 1 external/tloptional")
#endif #endif
#ifdef __clang__ #ifdef __clang__

View File

@ -1,8 +1,8 @@
#include "tests.h" #include "tests.h"
TOML_DISABLE_WARNINGS TOML_DISABLE_WARNINGS;
#include <algorithm> #include <algorithm>
TOML_ENABLE_WARNINGS TOML_ENABLE_WARNINGS;
TEST_CASE("using iterators") TEST_CASE("using iterators")
{ {

View File

@ -30,7 +30,7 @@
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props"
Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup> </ImportGroup>
<Import Project="../toml++.props" /> <Import Project="../../toml++.props" />
<ItemDefinitionGroup> <ItemDefinitionGroup>
<ClCompile> <ClCompile>
<AdditionalIncludeDirectories>..\tests;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> <AdditionalIncludeDirectories>..\tests;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
@ -47,53 +47,54 @@
</ClCompile> </ClCompile>
</ItemDefinitionGroup> </ItemDefinitionGroup>
<PropertyGroup> <PropertyGroup>
<LocalDebuggerWorkingDirectory>..\..\tests\</LocalDebuggerWorkingDirectory> <LocalDebuggerWorkingDirectory>$(ProjectDir)..\</LocalDebuggerWorkingDirectory>
</PropertyGroup> </PropertyGroup>
<ItemGroup> <ItemGroup>
<ClCompile Include="..\..\tests\conformance_burntsushi_invalid.cpp" /> <ClCompile Include="..\conformance_burntsushi_invalid.cpp" />
<ClCompile Include="..\..\tests\conformance_burntsushi_valid.cpp" /> <ClCompile Include="..\conformance_burntsushi_valid.cpp" />
<ClCompile Include="..\..\tests\conformance_iarna_invalid.cpp" /> <ClCompile Include="..\conformance_iarna_invalid.cpp" />
<ClCompile Include="..\..\tests\conformance_iarna_valid.cpp" /> <ClCompile Include="..\conformance_iarna_valid.cpp" />
<ClCompile Include="..\..\tests\impl_catch2.cpp"> <ClCompile Include="..\impl_catch2.cpp">
<PrecompiledHeader>NotUsing</PrecompiledHeader> <PrecompiledHeader>NotUsing</PrecompiledHeader>
</ClCompile> </ClCompile>
<ClCompile Include="..\..\tests\impl_toml.cpp"> <ClCompile Include="..\impl_toml.cpp">
<PrecompiledHeader>NotUsing</PrecompiledHeader> <PrecompiledHeader>NotUsing</PrecompiledHeader>
</ClCompile> </ClCompile>
<ClCompile Include="..\..\tests\manipulating_arrays.cpp" /> <ClCompile Include="..\manipulating_arrays.cpp" />
<ClCompile Include="..\..\tests\manipulating_tables.cpp" /> <ClCompile Include="..\manipulating_tables.cpp" />
<ClCompile Include="..\..\tests\manipulating_parse_result.cpp" /> <ClCompile Include="..\manipulating_parse_result.cpp" />
<ClCompile Include="..\..\tests\manipulating_values.cpp" /> <ClCompile Include="..\manipulating_values.cpp" />
<ClCompile Include="..\..\tests\parsing_arrays.cpp" /> <ClCompile Include="..\parsing_arrays.cpp" />
<ClCompile Include="..\..\tests\parsing_booleans.cpp" /> <ClCompile Include="..\parsing_booleans.cpp" />
<ClCompile Include="..\..\tests\parsing_comments.cpp" /> <ClCompile Include="..\parsing_comments.cpp" />
<ClCompile Include="..\..\tests\parsing_dates_and_times.cpp" /> <ClCompile Include="..\parsing_dates_and_times.cpp" />
<ClCompile Include="..\..\tests\parsing_floats.cpp" /> <ClCompile Include="..\parsing_floats.cpp" />
<ClCompile Include="..\..\tests\parsing_integers.cpp" /> <ClCompile Include="..\parsing_integers.cpp" />
<ClCompile Include="..\..\tests\parsing_key_value_pairs.cpp" /> <ClCompile Include="..\parsing_key_value_pairs.cpp" />
<ClCompile Include="..\..\tests\parsing_spec_example.cpp" /> <ClCompile Include="..\parsing_spec_example.cpp" />
<ClCompile Include="..\..\tests\parsing_strings.cpp" /> <ClCompile Include="..\parsing_strings.cpp" />
<ClCompile Include="..\..\tests\parsing_tables.cpp" /> <ClCompile Include="..\parsing_tables.cpp" />
<ClCompile Include="..\..\tests\tests.cpp"> <ClCompile Include="..\tests.cpp">
<PrecompiledHeader>Create</PrecompiledHeader> <PrecompiledHeader>Create</PrecompiledHeader>
</ClCompile> </ClCompile>
<ClCompile Include="..\..\tests\unicode.cpp" /> <ClCompile Include="..\unicode.cpp" />
<ClCompile Include="..\..\tests\user_feedback.cpp" /> <ClCompile Include="..\user_feedback.cpp" />
<ClCompile Include="..\..\tests\using_iterators.cpp" /> <ClCompile Include="..\using_iterators.cpp" />
<ClCompile Include="..\..\tests\windows_compat.cpp" /> <ClCompile Include="..\windows_compat.cpp" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<Natvis Include="..\toml++.natvis" /> <Natvis Include="..\..\toml++.natvis" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<ClInclude Include="..\..\tests\catch2.h" /> <ClInclude Include="..\catch2.h" />
<ClInclude Include="..\..\tests\leakproof.h" /> <ClInclude Include="..\leakproof.h" />
<ClInclude Include="..\..\tests\settings.h" /> <ClInclude Include="..\settings.h" />
<ClInclude Include="..\..\tests\tests.h" /> <ClInclude Include="..\tests.h" />
<ClInclude Include="..\..\tests\tloptional.h" /> <ClInclude Include="..\tloptional.h" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<None Include="..\..\tests\meson.build" /> <None Include="..\cpp.hint" />
<None Include="..\meson.build" />
</ItemGroup> </ItemGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" /> <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
</Project> </Project>

View File

@ -30,7 +30,7 @@
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props"
Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup> </ImportGroup>
<Import Project="../toml++.props" /> <Import Project="../../toml++.props" />
<ItemDefinitionGroup> <ItemDefinitionGroup>
<ClCompile> <ClCompile>
<AdditionalIncludeDirectories>..\tests;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> <AdditionalIncludeDirectories>..\tests;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
@ -47,53 +47,54 @@
</ClCompile> </ClCompile>
</ItemDefinitionGroup> </ItemDefinitionGroup>
<PropertyGroup> <PropertyGroup>
<LocalDebuggerWorkingDirectory>..\..\tests\</LocalDebuggerWorkingDirectory> <LocalDebuggerWorkingDirectory>$(ProjectDir)..\</LocalDebuggerWorkingDirectory>
</PropertyGroup> </PropertyGroup>
<ItemGroup> <ItemGroup>
<ClCompile Include="..\..\tests\conformance_burntsushi_invalid.cpp" /> <ClCompile Include="..\conformance_burntsushi_invalid.cpp" />
<ClCompile Include="..\..\tests\conformance_burntsushi_valid.cpp" /> <ClCompile Include="..\conformance_burntsushi_valid.cpp" />
<ClCompile Include="..\..\tests\conformance_iarna_invalid.cpp" /> <ClCompile Include="..\conformance_iarna_invalid.cpp" />
<ClCompile Include="..\..\tests\conformance_iarna_valid.cpp" /> <ClCompile Include="..\conformance_iarna_valid.cpp" />
<ClCompile Include="..\..\tests\impl_catch2.cpp"> <ClCompile Include="..\impl_catch2.cpp">
<PrecompiledHeader>NotUsing</PrecompiledHeader> <PrecompiledHeader>NotUsing</PrecompiledHeader>
</ClCompile> </ClCompile>
<ClCompile Include="..\..\tests\impl_toml.cpp"> <ClCompile Include="..\impl_toml.cpp">
<PrecompiledHeader>NotUsing</PrecompiledHeader> <PrecompiledHeader>NotUsing</PrecompiledHeader>
</ClCompile> </ClCompile>
<ClCompile Include="..\..\tests\manipulating_arrays.cpp" /> <ClCompile Include="..\manipulating_arrays.cpp" />
<ClCompile Include="..\..\tests\manipulating_tables.cpp" /> <ClCompile Include="..\manipulating_tables.cpp" />
<ClCompile Include="..\..\tests\manipulating_parse_result.cpp" /> <ClCompile Include="..\manipulating_parse_result.cpp" />
<ClCompile Include="..\..\tests\manipulating_values.cpp" /> <ClCompile Include="..\manipulating_values.cpp" />
<ClCompile Include="..\..\tests\parsing_arrays.cpp" /> <ClCompile Include="..\parsing_arrays.cpp" />
<ClCompile Include="..\..\tests\parsing_booleans.cpp" /> <ClCompile Include="..\parsing_booleans.cpp" />
<ClCompile Include="..\..\tests\parsing_comments.cpp" /> <ClCompile Include="..\parsing_comments.cpp" />
<ClCompile Include="..\..\tests\parsing_dates_and_times.cpp" /> <ClCompile Include="..\parsing_dates_and_times.cpp" />
<ClCompile Include="..\..\tests\parsing_floats.cpp" /> <ClCompile Include="..\parsing_floats.cpp" />
<ClCompile Include="..\..\tests\parsing_integers.cpp" /> <ClCompile Include="..\parsing_integers.cpp" />
<ClCompile Include="..\..\tests\parsing_key_value_pairs.cpp" /> <ClCompile Include="..\parsing_key_value_pairs.cpp" />
<ClCompile Include="..\..\tests\parsing_spec_example.cpp" /> <ClCompile Include="..\parsing_spec_example.cpp" />
<ClCompile Include="..\..\tests\parsing_strings.cpp" /> <ClCompile Include="..\parsing_strings.cpp" />
<ClCompile Include="..\..\tests\parsing_tables.cpp" /> <ClCompile Include="..\parsing_tables.cpp" />
<ClCompile Include="..\..\tests\tests.cpp"> <ClCompile Include="..\tests.cpp">
<PrecompiledHeader>Create</PrecompiledHeader> <PrecompiledHeader>Create</PrecompiledHeader>
</ClCompile> </ClCompile>
<ClCompile Include="..\..\tests\unicode.cpp" /> <ClCompile Include="..\unicode.cpp" />
<ClCompile Include="..\..\tests\user_feedback.cpp" /> <ClCompile Include="..\user_feedback.cpp" />
<ClCompile Include="..\..\tests\using_iterators.cpp" /> <ClCompile Include="..\using_iterators.cpp" />
<ClCompile Include="..\..\tests\windows_compat.cpp" /> <ClCompile Include="..\windows_compat.cpp" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<Natvis Include="..\toml++.natvis" /> <Natvis Include="..\..\toml++.natvis" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<ClInclude Include="..\..\tests\catch2.h" /> <ClInclude Include="..\catch2.h" />
<ClInclude Include="..\..\tests\leakproof.h" /> <ClInclude Include="..\leakproof.h" />
<ClInclude Include="..\..\tests\settings.h" /> <ClInclude Include="..\settings.h" />
<ClInclude Include="..\..\tests\tests.h" /> <ClInclude Include="..\tests.h" />
<ClInclude Include="..\..\tests\tloptional.h" /> <ClInclude Include="..\tloptional.h" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<None Include="..\..\tests\meson.build" /> <None Include="..\cpp.hint" />
<None Include="..\meson.build" />
</ItemGroup> </ItemGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" /> <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
</Project> </Project>

View File

@ -30,7 +30,7 @@
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props"
Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup> </ImportGroup>
<Import Project="../toml++.props" /> <Import Project="../../toml++.props" />
<ItemDefinitionGroup> <ItemDefinitionGroup>
<ClCompile> <ClCompile>
<AdditionalIncludeDirectories>..\tests;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> <AdditionalIncludeDirectories>..\tests;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
@ -47,53 +47,54 @@
</ClCompile> </ClCompile>
</ItemDefinitionGroup> </ItemDefinitionGroup>
<PropertyGroup> <PropertyGroup>
<LocalDebuggerWorkingDirectory>..\..\tests\</LocalDebuggerWorkingDirectory> <LocalDebuggerWorkingDirectory>$(ProjectDir)..\</LocalDebuggerWorkingDirectory>
</PropertyGroup> </PropertyGroup>
<ItemGroup> <ItemGroup>
<ClCompile Include="..\..\tests\conformance_burntsushi_invalid.cpp" /> <ClCompile Include="..\conformance_burntsushi_invalid.cpp" />
<ClCompile Include="..\..\tests\conformance_burntsushi_valid.cpp" /> <ClCompile Include="..\conformance_burntsushi_valid.cpp" />
<ClCompile Include="..\..\tests\conformance_iarna_invalid.cpp" /> <ClCompile Include="..\conformance_iarna_invalid.cpp" />
<ClCompile Include="..\..\tests\conformance_iarna_valid.cpp" /> <ClCompile Include="..\conformance_iarna_valid.cpp" />
<ClCompile Include="..\..\tests\impl_catch2.cpp"> <ClCompile Include="..\impl_catch2.cpp">
<PrecompiledHeader>NotUsing</PrecompiledHeader> <PrecompiledHeader>NotUsing</PrecompiledHeader>
</ClCompile> </ClCompile>
<ClCompile Include="..\..\tests\impl_toml.cpp"> <ClCompile Include="..\impl_toml.cpp">
<PrecompiledHeader>NotUsing</PrecompiledHeader> <PrecompiledHeader>NotUsing</PrecompiledHeader>
</ClCompile> </ClCompile>
<ClCompile Include="..\..\tests\manipulating_arrays.cpp" /> <ClCompile Include="..\manipulating_arrays.cpp" />
<ClCompile Include="..\..\tests\manipulating_tables.cpp" /> <ClCompile Include="..\manipulating_tables.cpp" />
<ClCompile Include="..\..\tests\manipulating_parse_result.cpp" /> <ClCompile Include="..\manipulating_parse_result.cpp" />
<ClCompile Include="..\..\tests\manipulating_values.cpp" /> <ClCompile Include="..\manipulating_values.cpp" />
<ClCompile Include="..\..\tests\parsing_arrays.cpp" /> <ClCompile Include="..\parsing_arrays.cpp" />
<ClCompile Include="..\..\tests\parsing_booleans.cpp" /> <ClCompile Include="..\parsing_booleans.cpp" />
<ClCompile Include="..\..\tests\parsing_comments.cpp" /> <ClCompile Include="..\parsing_comments.cpp" />
<ClCompile Include="..\..\tests\parsing_dates_and_times.cpp" /> <ClCompile Include="..\parsing_dates_and_times.cpp" />
<ClCompile Include="..\..\tests\parsing_floats.cpp" /> <ClCompile Include="..\parsing_floats.cpp" />
<ClCompile Include="..\..\tests\parsing_integers.cpp" /> <ClCompile Include="..\parsing_integers.cpp" />
<ClCompile Include="..\..\tests\parsing_key_value_pairs.cpp" /> <ClCompile Include="..\parsing_key_value_pairs.cpp" />
<ClCompile Include="..\..\tests\parsing_spec_example.cpp" /> <ClCompile Include="..\parsing_spec_example.cpp" />
<ClCompile Include="..\..\tests\parsing_strings.cpp" /> <ClCompile Include="..\parsing_strings.cpp" />
<ClCompile Include="..\..\tests\parsing_tables.cpp" /> <ClCompile Include="..\parsing_tables.cpp" />
<ClCompile Include="..\..\tests\tests.cpp"> <ClCompile Include="..\tests.cpp">
<PrecompiledHeader>Create</PrecompiledHeader> <PrecompiledHeader>Create</PrecompiledHeader>
</ClCompile> </ClCompile>
<ClCompile Include="..\..\tests\unicode.cpp" /> <ClCompile Include="..\unicode.cpp" />
<ClCompile Include="..\..\tests\user_feedback.cpp" /> <ClCompile Include="..\user_feedback.cpp" />
<ClCompile Include="..\..\tests\using_iterators.cpp" /> <ClCompile Include="..\using_iterators.cpp" />
<ClCompile Include="..\..\tests\windows_compat.cpp" /> <ClCompile Include="..\windows_compat.cpp" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<Natvis Include="..\toml++.natvis" /> <Natvis Include="..\..\toml++.natvis" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<ClInclude Include="..\..\tests\catch2.h" /> <ClInclude Include="..\catch2.h" />
<ClInclude Include="..\..\tests\leakproof.h" /> <ClInclude Include="..\leakproof.h" />
<ClInclude Include="..\..\tests\settings.h" /> <ClInclude Include="..\settings.h" />
<ClInclude Include="..\..\tests\tests.h" /> <ClInclude Include="..\tests.h" />
<ClInclude Include="..\..\tests\tloptional.h" /> <ClInclude Include="..\tloptional.h" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<None Include="..\..\tests\meson.build" /> <None Include="..\cpp.hint" />
<None Include="..\meson.build" />
</ItemGroup> </ItemGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" /> <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
</Project> </Project>

View File

@ -30,7 +30,7 @@
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props"
Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup> </ImportGroup>
<Import Project="../toml++.props" /> <Import Project="../../toml++.props" />
<ItemDefinitionGroup> <ItemDefinitionGroup>
<ClCompile> <ClCompile>
<AdditionalIncludeDirectories>..\tests;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> <AdditionalIncludeDirectories>..\tests;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
@ -47,53 +47,54 @@
</ClCompile> </ClCompile>
</ItemDefinitionGroup> </ItemDefinitionGroup>
<PropertyGroup> <PropertyGroup>
<LocalDebuggerWorkingDirectory>..\..\tests\</LocalDebuggerWorkingDirectory> <LocalDebuggerWorkingDirectory>$(ProjectDir)..\</LocalDebuggerWorkingDirectory>
</PropertyGroup> </PropertyGroup>
<ItemGroup> <ItemGroup>
<ClCompile Include="..\..\tests\conformance_burntsushi_invalid.cpp" /> <ClCompile Include="..\conformance_burntsushi_invalid.cpp" />
<ClCompile Include="..\..\tests\conformance_burntsushi_valid.cpp" /> <ClCompile Include="..\conformance_burntsushi_valid.cpp" />
<ClCompile Include="..\..\tests\conformance_iarna_invalid.cpp" /> <ClCompile Include="..\conformance_iarna_invalid.cpp" />
<ClCompile Include="..\..\tests\conformance_iarna_valid.cpp" /> <ClCompile Include="..\conformance_iarna_valid.cpp" />
<ClCompile Include="..\..\tests\impl_catch2.cpp"> <ClCompile Include="..\impl_catch2.cpp">
<PrecompiledHeader>NotUsing</PrecompiledHeader> <PrecompiledHeader>NotUsing</PrecompiledHeader>
</ClCompile> </ClCompile>
<ClCompile Include="..\..\tests\impl_toml.cpp"> <ClCompile Include="..\impl_toml.cpp">
<PrecompiledHeader>NotUsing</PrecompiledHeader> <PrecompiledHeader>NotUsing</PrecompiledHeader>
</ClCompile> </ClCompile>
<ClCompile Include="..\..\tests\manipulating_arrays.cpp" /> <ClCompile Include="..\manipulating_arrays.cpp" />
<ClCompile Include="..\..\tests\manipulating_tables.cpp" /> <ClCompile Include="..\manipulating_tables.cpp" />
<ClCompile Include="..\..\tests\manipulating_parse_result.cpp" /> <ClCompile Include="..\manipulating_parse_result.cpp" />
<ClCompile Include="..\..\tests\manipulating_values.cpp" /> <ClCompile Include="..\manipulating_values.cpp" />
<ClCompile Include="..\..\tests\parsing_arrays.cpp" /> <ClCompile Include="..\parsing_arrays.cpp" />
<ClCompile Include="..\..\tests\parsing_booleans.cpp" /> <ClCompile Include="..\parsing_booleans.cpp" />
<ClCompile Include="..\..\tests\parsing_comments.cpp" /> <ClCompile Include="..\parsing_comments.cpp" />
<ClCompile Include="..\..\tests\parsing_dates_and_times.cpp" /> <ClCompile Include="..\parsing_dates_and_times.cpp" />
<ClCompile Include="..\..\tests\parsing_floats.cpp" /> <ClCompile Include="..\parsing_floats.cpp" />
<ClCompile Include="..\..\tests\parsing_integers.cpp" /> <ClCompile Include="..\parsing_integers.cpp" />
<ClCompile Include="..\..\tests\parsing_key_value_pairs.cpp" /> <ClCompile Include="..\parsing_key_value_pairs.cpp" />
<ClCompile Include="..\..\tests\parsing_spec_example.cpp" /> <ClCompile Include="..\parsing_spec_example.cpp" />
<ClCompile Include="..\..\tests\parsing_strings.cpp" /> <ClCompile Include="..\parsing_strings.cpp" />
<ClCompile Include="..\..\tests\parsing_tables.cpp" /> <ClCompile Include="..\parsing_tables.cpp" />
<ClCompile Include="..\..\tests\tests.cpp"> <ClCompile Include="..\tests.cpp">
<PrecompiledHeader>Create</PrecompiledHeader> <PrecompiledHeader>Create</PrecompiledHeader>
</ClCompile> </ClCompile>
<ClCompile Include="..\..\tests\unicode.cpp" /> <ClCompile Include="..\unicode.cpp" />
<ClCompile Include="..\..\tests\user_feedback.cpp" /> <ClCompile Include="..\user_feedback.cpp" />
<ClCompile Include="..\..\tests\using_iterators.cpp" /> <ClCompile Include="..\using_iterators.cpp" />
<ClCompile Include="..\..\tests\windows_compat.cpp" /> <ClCompile Include="..\windows_compat.cpp" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<Natvis Include="..\toml++.natvis" /> <Natvis Include="..\..\toml++.natvis" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<ClInclude Include="..\..\tests\catch2.h" /> <ClInclude Include="..\catch2.h" />
<ClInclude Include="..\..\tests\leakproof.h" /> <ClInclude Include="..\leakproof.h" />
<ClInclude Include="..\..\tests\settings.h" /> <ClInclude Include="..\settings.h" />
<ClInclude Include="..\..\tests\tests.h" /> <ClInclude Include="..\tests.h" />
<ClInclude Include="..\..\tests\tloptional.h" /> <ClInclude Include="..\tloptional.h" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<None Include="..\..\tests\meson.build" /> <None Include="..\cpp.hint" />
<None Include="..\meson.build" />
</ItemGroup> </ItemGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" /> <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
</Project> </Project>

View File

@ -30,7 +30,7 @@
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props"
Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup> </ImportGroup>
<Import Project="../toml++.props" /> <Import Project="../../toml++.props" />
<ItemDefinitionGroup> <ItemDefinitionGroup>
<ClCompile> <ClCompile>
<AdditionalIncludeDirectories>..\tests;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> <AdditionalIncludeDirectories>..\tests;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
@ -47,53 +47,54 @@
</ClCompile> </ClCompile>
</ItemDefinitionGroup> </ItemDefinitionGroup>
<PropertyGroup> <PropertyGroup>
<LocalDebuggerWorkingDirectory>..\..\tests\</LocalDebuggerWorkingDirectory> <LocalDebuggerWorkingDirectory>$(ProjectDir)..\</LocalDebuggerWorkingDirectory>
</PropertyGroup> </PropertyGroup>
<ItemGroup> <ItemGroup>
<ClCompile Include="..\..\tests\conformance_burntsushi_invalid.cpp" /> <ClCompile Include="..\conformance_burntsushi_invalid.cpp" />
<ClCompile Include="..\..\tests\conformance_burntsushi_valid.cpp" /> <ClCompile Include="..\conformance_burntsushi_valid.cpp" />
<ClCompile Include="..\..\tests\conformance_iarna_invalid.cpp" /> <ClCompile Include="..\conformance_iarna_invalid.cpp" />
<ClCompile Include="..\..\tests\conformance_iarna_valid.cpp" /> <ClCompile Include="..\conformance_iarna_valid.cpp" />
<ClCompile Include="..\..\tests\impl_catch2.cpp"> <ClCompile Include="..\impl_catch2.cpp">
<PrecompiledHeader>NotUsing</PrecompiledHeader> <PrecompiledHeader>NotUsing</PrecompiledHeader>
</ClCompile> </ClCompile>
<ClCompile Include="..\..\tests\impl_toml.cpp"> <ClCompile Include="..\impl_toml.cpp">
<PrecompiledHeader>NotUsing</PrecompiledHeader> <PrecompiledHeader>NotUsing</PrecompiledHeader>
</ClCompile> </ClCompile>
<ClCompile Include="..\..\tests\manipulating_arrays.cpp" /> <ClCompile Include="..\manipulating_arrays.cpp" />
<ClCompile Include="..\..\tests\manipulating_tables.cpp" /> <ClCompile Include="..\manipulating_tables.cpp" />
<ClCompile Include="..\..\tests\manipulating_parse_result.cpp" /> <ClCompile Include="..\manipulating_parse_result.cpp" />
<ClCompile Include="..\..\tests\manipulating_values.cpp" /> <ClCompile Include="..\manipulating_values.cpp" />
<ClCompile Include="..\..\tests\parsing_arrays.cpp" /> <ClCompile Include="..\parsing_arrays.cpp" />
<ClCompile Include="..\..\tests\parsing_booleans.cpp" /> <ClCompile Include="..\parsing_booleans.cpp" />
<ClCompile Include="..\..\tests\parsing_comments.cpp" /> <ClCompile Include="..\parsing_comments.cpp" />
<ClCompile Include="..\..\tests\parsing_dates_and_times.cpp" /> <ClCompile Include="..\parsing_dates_and_times.cpp" />
<ClCompile Include="..\..\tests\parsing_floats.cpp" /> <ClCompile Include="..\parsing_floats.cpp" />
<ClCompile Include="..\..\tests\parsing_integers.cpp" /> <ClCompile Include="..\parsing_integers.cpp" />
<ClCompile Include="..\..\tests\parsing_key_value_pairs.cpp" /> <ClCompile Include="..\parsing_key_value_pairs.cpp" />
<ClCompile Include="..\..\tests\parsing_spec_example.cpp" /> <ClCompile Include="..\parsing_spec_example.cpp" />
<ClCompile Include="..\..\tests\parsing_strings.cpp" /> <ClCompile Include="..\parsing_strings.cpp" />
<ClCompile Include="..\..\tests\parsing_tables.cpp" /> <ClCompile Include="..\parsing_tables.cpp" />
<ClCompile Include="..\..\tests\tests.cpp"> <ClCompile Include="..\tests.cpp">
<PrecompiledHeader>Create</PrecompiledHeader> <PrecompiledHeader>Create</PrecompiledHeader>
</ClCompile> </ClCompile>
<ClCompile Include="..\..\tests\unicode.cpp" /> <ClCompile Include="..\unicode.cpp" />
<ClCompile Include="..\..\tests\user_feedback.cpp" /> <ClCompile Include="..\user_feedback.cpp" />
<ClCompile Include="..\..\tests\using_iterators.cpp" /> <ClCompile Include="..\using_iterators.cpp" />
<ClCompile Include="..\..\tests\windows_compat.cpp" /> <ClCompile Include="..\windows_compat.cpp" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<Natvis Include="..\toml++.natvis" /> <Natvis Include="..\..\toml++.natvis" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<ClInclude Include="..\..\tests\catch2.h" /> <ClInclude Include="..\catch2.h" />
<ClInclude Include="..\..\tests\leakproof.h" /> <ClInclude Include="..\leakproof.h" />
<ClInclude Include="..\..\tests\settings.h" /> <ClInclude Include="..\settings.h" />
<ClInclude Include="..\..\tests\tests.h" /> <ClInclude Include="..\tests.h" />
<ClInclude Include="..\..\tests\tloptional.h" /> <ClInclude Include="..\tloptional.h" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<None Include="..\..\tests\meson.build" /> <None Include="..\cpp.hint" />
<None Include="..\meson.build" />
</ItemGroup> </ItemGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" /> <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
</Project> </Project>

View File

@ -30,7 +30,7 @@
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props"
Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup> </ImportGroup>
<Import Project="../toml++.props" /> <Import Project="../../toml++.props" />
<ItemDefinitionGroup> <ItemDefinitionGroup>
<ClCompile> <ClCompile>
<AdditionalIncludeDirectories>..\tests;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> <AdditionalIncludeDirectories>..\tests;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
@ -47,53 +47,54 @@
</ClCompile> </ClCompile>
</ItemDefinitionGroup> </ItemDefinitionGroup>
<PropertyGroup> <PropertyGroup>
<LocalDebuggerWorkingDirectory>..\..\tests\</LocalDebuggerWorkingDirectory> <LocalDebuggerWorkingDirectory>$(ProjectDir)..\</LocalDebuggerWorkingDirectory>
</PropertyGroup> </PropertyGroup>
<ItemGroup> <ItemGroup>
<ClCompile Include="..\..\tests\conformance_burntsushi_invalid.cpp" /> <ClCompile Include="..\conformance_burntsushi_invalid.cpp" />
<ClCompile Include="..\..\tests\conformance_burntsushi_valid.cpp" /> <ClCompile Include="..\conformance_burntsushi_valid.cpp" />
<ClCompile Include="..\..\tests\conformance_iarna_invalid.cpp" /> <ClCompile Include="..\conformance_iarna_invalid.cpp" />
<ClCompile Include="..\..\tests\conformance_iarna_valid.cpp" /> <ClCompile Include="..\conformance_iarna_valid.cpp" />
<ClCompile Include="..\..\tests\impl_catch2.cpp"> <ClCompile Include="..\impl_catch2.cpp">
<PrecompiledHeader>NotUsing</PrecompiledHeader> <PrecompiledHeader>NotUsing</PrecompiledHeader>
</ClCompile> </ClCompile>
<ClCompile Include="..\..\tests\impl_toml.cpp"> <ClCompile Include="..\impl_toml.cpp">
<PrecompiledHeader>NotUsing</PrecompiledHeader> <PrecompiledHeader>NotUsing</PrecompiledHeader>
</ClCompile> </ClCompile>
<ClCompile Include="..\..\tests\manipulating_arrays.cpp" /> <ClCompile Include="..\manipulating_arrays.cpp" />
<ClCompile Include="..\..\tests\manipulating_tables.cpp" /> <ClCompile Include="..\manipulating_tables.cpp" />
<ClCompile Include="..\..\tests\manipulating_parse_result.cpp" /> <ClCompile Include="..\manipulating_parse_result.cpp" />
<ClCompile Include="..\..\tests\manipulating_values.cpp" /> <ClCompile Include="..\manipulating_values.cpp" />
<ClCompile Include="..\..\tests\parsing_arrays.cpp" /> <ClCompile Include="..\parsing_arrays.cpp" />
<ClCompile Include="..\..\tests\parsing_booleans.cpp" /> <ClCompile Include="..\parsing_booleans.cpp" />
<ClCompile Include="..\..\tests\parsing_comments.cpp" /> <ClCompile Include="..\parsing_comments.cpp" />
<ClCompile Include="..\..\tests\parsing_dates_and_times.cpp" /> <ClCompile Include="..\parsing_dates_and_times.cpp" />
<ClCompile Include="..\..\tests\parsing_floats.cpp" /> <ClCompile Include="..\parsing_floats.cpp" />
<ClCompile Include="..\..\tests\parsing_integers.cpp" /> <ClCompile Include="..\parsing_integers.cpp" />
<ClCompile Include="..\..\tests\parsing_key_value_pairs.cpp" /> <ClCompile Include="..\parsing_key_value_pairs.cpp" />
<ClCompile Include="..\..\tests\parsing_spec_example.cpp" /> <ClCompile Include="..\parsing_spec_example.cpp" />
<ClCompile Include="..\..\tests\parsing_strings.cpp" /> <ClCompile Include="..\parsing_strings.cpp" />
<ClCompile Include="..\..\tests\parsing_tables.cpp" /> <ClCompile Include="..\parsing_tables.cpp" />
<ClCompile Include="..\..\tests\tests.cpp"> <ClCompile Include="..\tests.cpp">
<PrecompiledHeader>Create</PrecompiledHeader> <PrecompiledHeader>Create</PrecompiledHeader>
</ClCompile> </ClCompile>
<ClCompile Include="..\..\tests\unicode.cpp" /> <ClCompile Include="..\unicode.cpp" />
<ClCompile Include="..\..\tests\user_feedback.cpp" /> <ClCompile Include="..\user_feedback.cpp" />
<ClCompile Include="..\..\tests\using_iterators.cpp" /> <ClCompile Include="..\using_iterators.cpp" />
<ClCompile Include="..\..\tests\windows_compat.cpp" /> <ClCompile Include="..\windows_compat.cpp" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<Natvis Include="..\toml++.natvis" /> <Natvis Include="..\..\toml++.natvis" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<ClInclude Include="..\..\tests\catch2.h" /> <ClInclude Include="..\catch2.h" />
<ClInclude Include="..\..\tests\leakproof.h" /> <ClInclude Include="..\leakproof.h" />
<ClInclude Include="..\..\tests\settings.h" /> <ClInclude Include="..\settings.h" />
<ClInclude Include="..\..\tests\tests.h" /> <ClInclude Include="..\tests.h" />
<ClInclude Include="..\..\tests\tloptional.h" /> <ClInclude Include="..\tloptional.h" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<None Include="..\..\tests\meson.build" /> <None Include="..\cpp.hint" />
<None Include="..\meson.build" />
</ItemGroup> </ItemGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" /> <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
</Project> </Project>

View File

@ -30,7 +30,7 @@
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props"
Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup> </ImportGroup>
<Import Project="../toml++.props" /> <Import Project="../../toml++.props" />
<ItemDefinitionGroup> <ItemDefinitionGroup>
<ClCompile> <ClCompile>
<AdditionalIncludeDirectories>..\tests;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> <AdditionalIncludeDirectories>..\tests;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
@ -47,53 +47,54 @@
</ClCompile> </ClCompile>
</ItemDefinitionGroup> </ItemDefinitionGroup>
<PropertyGroup> <PropertyGroup>
<LocalDebuggerWorkingDirectory>..\..\tests\</LocalDebuggerWorkingDirectory> <LocalDebuggerWorkingDirectory>$(ProjectDir)..\</LocalDebuggerWorkingDirectory>
</PropertyGroup> </PropertyGroup>
<ItemGroup> <ItemGroup>
<ClCompile Include="..\..\tests\conformance_burntsushi_invalid.cpp" /> <ClCompile Include="..\conformance_burntsushi_invalid.cpp" />
<ClCompile Include="..\..\tests\conformance_burntsushi_valid.cpp" /> <ClCompile Include="..\conformance_burntsushi_valid.cpp" />
<ClCompile Include="..\..\tests\conformance_iarna_invalid.cpp" /> <ClCompile Include="..\conformance_iarna_invalid.cpp" />
<ClCompile Include="..\..\tests\conformance_iarna_valid.cpp" /> <ClCompile Include="..\conformance_iarna_valid.cpp" />
<ClCompile Include="..\..\tests\impl_catch2.cpp"> <ClCompile Include="..\impl_catch2.cpp">
<PrecompiledHeader>NotUsing</PrecompiledHeader> <PrecompiledHeader>NotUsing</PrecompiledHeader>
</ClCompile> </ClCompile>
<ClCompile Include="..\..\tests\impl_toml.cpp"> <ClCompile Include="..\impl_toml.cpp">
<PrecompiledHeader>NotUsing</PrecompiledHeader> <PrecompiledHeader>NotUsing</PrecompiledHeader>
</ClCompile> </ClCompile>
<ClCompile Include="..\..\tests\manipulating_arrays.cpp" /> <ClCompile Include="..\manipulating_arrays.cpp" />
<ClCompile Include="..\..\tests\manipulating_tables.cpp" /> <ClCompile Include="..\manipulating_tables.cpp" />
<ClCompile Include="..\..\tests\manipulating_parse_result.cpp" /> <ClCompile Include="..\manipulating_parse_result.cpp" />
<ClCompile Include="..\..\tests\manipulating_values.cpp" /> <ClCompile Include="..\manipulating_values.cpp" />
<ClCompile Include="..\..\tests\parsing_arrays.cpp" /> <ClCompile Include="..\parsing_arrays.cpp" />
<ClCompile Include="..\..\tests\parsing_booleans.cpp" /> <ClCompile Include="..\parsing_booleans.cpp" />
<ClCompile Include="..\..\tests\parsing_comments.cpp" /> <ClCompile Include="..\parsing_comments.cpp" />
<ClCompile Include="..\..\tests\parsing_dates_and_times.cpp" /> <ClCompile Include="..\parsing_dates_and_times.cpp" />
<ClCompile Include="..\..\tests\parsing_floats.cpp" /> <ClCompile Include="..\parsing_floats.cpp" />
<ClCompile Include="..\..\tests\parsing_integers.cpp" /> <ClCompile Include="..\parsing_integers.cpp" />
<ClCompile Include="..\..\tests\parsing_key_value_pairs.cpp" /> <ClCompile Include="..\parsing_key_value_pairs.cpp" />
<ClCompile Include="..\..\tests\parsing_spec_example.cpp" /> <ClCompile Include="..\parsing_spec_example.cpp" />
<ClCompile Include="..\..\tests\parsing_strings.cpp" /> <ClCompile Include="..\parsing_strings.cpp" />
<ClCompile Include="..\..\tests\parsing_tables.cpp" /> <ClCompile Include="..\parsing_tables.cpp" />
<ClCompile Include="..\..\tests\tests.cpp"> <ClCompile Include="..\tests.cpp">
<PrecompiledHeader>Create</PrecompiledHeader> <PrecompiledHeader>Create</PrecompiledHeader>
</ClCompile> </ClCompile>
<ClCompile Include="..\..\tests\unicode.cpp" /> <ClCompile Include="..\unicode.cpp" />
<ClCompile Include="..\..\tests\user_feedback.cpp" /> <ClCompile Include="..\user_feedback.cpp" />
<ClCompile Include="..\..\tests\using_iterators.cpp" /> <ClCompile Include="..\using_iterators.cpp" />
<ClCompile Include="..\..\tests\windows_compat.cpp" /> <ClCompile Include="..\windows_compat.cpp" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<Natvis Include="..\toml++.natvis" /> <Natvis Include="..\..\toml++.natvis" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<ClInclude Include="..\..\tests\catch2.h" /> <ClInclude Include="..\catch2.h" />
<ClInclude Include="..\..\tests\leakproof.h" /> <ClInclude Include="..\leakproof.h" />
<ClInclude Include="..\..\tests\settings.h" /> <ClInclude Include="..\settings.h" />
<ClInclude Include="..\..\tests\tests.h" /> <ClInclude Include="..\tests.h" />
<ClInclude Include="..\..\tests\tloptional.h" /> <ClInclude Include="..\tloptional.h" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<None Include="..\..\tests\meson.build" /> <None Include="..\cpp.hint" />
<None Include="..\meson.build" />
</ItemGroup> </ItemGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" /> <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
</Project> </Project>

View File

@ -30,7 +30,7 @@
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props"
Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup> </ImportGroup>
<Import Project="../toml++.props" /> <Import Project="../../toml++.props" />
<ItemDefinitionGroup> <ItemDefinitionGroup>
<ClCompile> <ClCompile>
<AdditionalIncludeDirectories>..\tests;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> <AdditionalIncludeDirectories>..\tests;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
@ -47,53 +47,54 @@
</ClCompile> </ClCompile>
</ItemDefinitionGroup> </ItemDefinitionGroup>
<PropertyGroup> <PropertyGroup>
<LocalDebuggerWorkingDirectory>..\..\tests\</LocalDebuggerWorkingDirectory> <LocalDebuggerWorkingDirectory>$(ProjectDir)..\</LocalDebuggerWorkingDirectory>
</PropertyGroup> </PropertyGroup>
<ItemGroup> <ItemGroup>
<ClCompile Include="..\..\tests\conformance_burntsushi_invalid.cpp" /> <ClCompile Include="..\conformance_burntsushi_invalid.cpp" />
<ClCompile Include="..\..\tests\conformance_burntsushi_valid.cpp" /> <ClCompile Include="..\conformance_burntsushi_valid.cpp" />
<ClCompile Include="..\..\tests\conformance_iarna_invalid.cpp" /> <ClCompile Include="..\conformance_iarna_invalid.cpp" />
<ClCompile Include="..\..\tests\conformance_iarna_valid.cpp" /> <ClCompile Include="..\conformance_iarna_valid.cpp" />
<ClCompile Include="..\..\tests\impl_catch2.cpp"> <ClCompile Include="..\impl_catch2.cpp">
<PrecompiledHeader>NotUsing</PrecompiledHeader> <PrecompiledHeader>NotUsing</PrecompiledHeader>
</ClCompile> </ClCompile>
<ClCompile Include="..\..\tests\impl_toml.cpp"> <ClCompile Include="..\impl_toml.cpp">
<PrecompiledHeader>NotUsing</PrecompiledHeader> <PrecompiledHeader>NotUsing</PrecompiledHeader>
</ClCompile> </ClCompile>
<ClCompile Include="..\..\tests\manipulating_arrays.cpp" /> <ClCompile Include="..\manipulating_arrays.cpp" />
<ClCompile Include="..\..\tests\manipulating_tables.cpp" /> <ClCompile Include="..\manipulating_tables.cpp" />
<ClCompile Include="..\..\tests\manipulating_parse_result.cpp" /> <ClCompile Include="..\manipulating_parse_result.cpp" />
<ClCompile Include="..\..\tests\manipulating_values.cpp" /> <ClCompile Include="..\manipulating_values.cpp" />
<ClCompile Include="..\..\tests\parsing_arrays.cpp" /> <ClCompile Include="..\parsing_arrays.cpp" />
<ClCompile Include="..\..\tests\parsing_booleans.cpp" /> <ClCompile Include="..\parsing_booleans.cpp" />
<ClCompile Include="..\..\tests\parsing_comments.cpp" /> <ClCompile Include="..\parsing_comments.cpp" />
<ClCompile Include="..\..\tests\parsing_dates_and_times.cpp" /> <ClCompile Include="..\parsing_dates_and_times.cpp" />
<ClCompile Include="..\..\tests\parsing_floats.cpp" /> <ClCompile Include="..\parsing_floats.cpp" />
<ClCompile Include="..\..\tests\parsing_integers.cpp" /> <ClCompile Include="..\parsing_integers.cpp" />
<ClCompile Include="..\..\tests\parsing_key_value_pairs.cpp" /> <ClCompile Include="..\parsing_key_value_pairs.cpp" />
<ClCompile Include="..\..\tests\parsing_spec_example.cpp" /> <ClCompile Include="..\parsing_spec_example.cpp" />
<ClCompile Include="..\..\tests\parsing_strings.cpp" /> <ClCompile Include="..\parsing_strings.cpp" />
<ClCompile Include="..\..\tests\parsing_tables.cpp" /> <ClCompile Include="..\parsing_tables.cpp" />
<ClCompile Include="..\..\tests\tests.cpp"> <ClCompile Include="..\tests.cpp">
<PrecompiledHeader>Create</PrecompiledHeader> <PrecompiledHeader>Create</PrecompiledHeader>
</ClCompile> </ClCompile>
<ClCompile Include="..\..\tests\unicode.cpp" /> <ClCompile Include="..\unicode.cpp" />
<ClCompile Include="..\..\tests\user_feedback.cpp" /> <ClCompile Include="..\user_feedback.cpp" />
<ClCompile Include="..\..\tests\using_iterators.cpp" /> <ClCompile Include="..\using_iterators.cpp" />
<ClCompile Include="..\..\tests\windows_compat.cpp" /> <ClCompile Include="..\windows_compat.cpp" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<Natvis Include="..\toml++.natvis" /> <Natvis Include="..\..\toml++.natvis" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<ClInclude Include="..\..\tests\catch2.h" /> <ClInclude Include="..\catch2.h" />
<ClInclude Include="..\..\tests\leakproof.h" /> <ClInclude Include="..\leakproof.h" />
<ClInclude Include="..\..\tests\settings.h" /> <ClInclude Include="..\settings.h" />
<ClInclude Include="..\..\tests\tests.h" /> <ClInclude Include="..\tests.h" />
<ClInclude Include="..\..\tests\tloptional.h" /> <ClInclude Include="..\tloptional.h" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<None Include="..\..\tests\meson.build" /> <None Include="..\cpp.hint" />
<None Include="..\meson.build" />
</ItemGroup> </ItemGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" /> <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
</Project> </Project>

View File

@ -30,7 +30,7 @@
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props"
Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup> </ImportGroup>
<Import Project="../toml++.props" /> <Import Project="../../toml++.props" />
<ItemDefinitionGroup> <ItemDefinitionGroup>
<ClCompile> <ClCompile>
<AdditionalIncludeDirectories>..\tests;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> <AdditionalIncludeDirectories>..\tests;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
@ -47,53 +47,54 @@
</ClCompile> </ClCompile>
</ItemDefinitionGroup> </ItemDefinitionGroup>
<PropertyGroup> <PropertyGroup>
<LocalDebuggerWorkingDirectory>..\..\tests\</LocalDebuggerWorkingDirectory> <LocalDebuggerWorkingDirectory>$(ProjectDir)..\</LocalDebuggerWorkingDirectory>
</PropertyGroup> </PropertyGroup>
<ItemGroup> <ItemGroup>
<ClCompile Include="..\..\tests\conformance_burntsushi_invalid.cpp" /> <ClCompile Include="..\conformance_burntsushi_invalid.cpp" />
<ClCompile Include="..\..\tests\conformance_burntsushi_valid.cpp" /> <ClCompile Include="..\conformance_burntsushi_valid.cpp" />
<ClCompile Include="..\..\tests\conformance_iarna_invalid.cpp" /> <ClCompile Include="..\conformance_iarna_invalid.cpp" />
<ClCompile Include="..\..\tests\conformance_iarna_valid.cpp" /> <ClCompile Include="..\conformance_iarna_valid.cpp" />
<ClCompile Include="..\..\tests\impl_catch2.cpp"> <ClCompile Include="..\impl_catch2.cpp">
<PrecompiledHeader>NotUsing</PrecompiledHeader> <PrecompiledHeader>NotUsing</PrecompiledHeader>
</ClCompile> </ClCompile>
<ClCompile Include="..\..\tests\impl_toml.cpp"> <ClCompile Include="..\impl_toml.cpp">
<PrecompiledHeader>NotUsing</PrecompiledHeader> <PrecompiledHeader>NotUsing</PrecompiledHeader>
</ClCompile> </ClCompile>
<ClCompile Include="..\..\tests\manipulating_arrays.cpp" /> <ClCompile Include="..\manipulating_arrays.cpp" />
<ClCompile Include="..\..\tests\manipulating_tables.cpp" /> <ClCompile Include="..\manipulating_tables.cpp" />
<ClCompile Include="..\..\tests\manipulating_parse_result.cpp" /> <ClCompile Include="..\manipulating_parse_result.cpp" />
<ClCompile Include="..\..\tests\manipulating_values.cpp" /> <ClCompile Include="..\manipulating_values.cpp" />
<ClCompile Include="..\..\tests\parsing_arrays.cpp" /> <ClCompile Include="..\parsing_arrays.cpp" />
<ClCompile Include="..\..\tests\parsing_booleans.cpp" /> <ClCompile Include="..\parsing_booleans.cpp" />
<ClCompile Include="..\..\tests\parsing_comments.cpp" /> <ClCompile Include="..\parsing_comments.cpp" />
<ClCompile Include="..\..\tests\parsing_dates_and_times.cpp" /> <ClCompile Include="..\parsing_dates_and_times.cpp" />
<ClCompile Include="..\..\tests\parsing_floats.cpp" /> <ClCompile Include="..\parsing_floats.cpp" />
<ClCompile Include="..\..\tests\parsing_integers.cpp" /> <ClCompile Include="..\parsing_integers.cpp" />
<ClCompile Include="..\..\tests\parsing_key_value_pairs.cpp" /> <ClCompile Include="..\parsing_key_value_pairs.cpp" />
<ClCompile Include="..\..\tests\parsing_spec_example.cpp" /> <ClCompile Include="..\parsing_spec_example.cpp" />
<ClCompile Include="..\..\tests\parsing_strings.cpp" /> <ClCompile Include="..\parsing_strings.cpp" />
<ClCompile Include="..\..\tests\parsing_tables.cpp" /> <ClCompile Include="..\parsing_tables.cpp" />
<ClCompile Include="..\..\tests\tests.cpp"> <ClCompile Include="..\tests.cpp">
<PrecompiledHeader>Create</PrecompiledHeader> <PrecompiledHeader>Create</PrecompiledHeader>
</ClCompile> </ClCompile>
<ClCompile Include="..\..\tests\unicode.cpp" /> <ClCompile Include="..\unicode.cpp" />
<ClCompile Include="..\..\tests\user_feedback.cpp" /> <ClCompile Include="..\user_feedback.cpp" />
<ClCompile Include="..\..\tests\using_iterators.cpp" /> <ClCompile Include="..\using_iterators.cpp" />
<ClCompile Include="..\..\tests\windows_compat.cpp" /> <ClCompile Include="..\windows_compat.cpp" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<Natvis Include="..\toml++.natvis" /> <Natvis Include="..\..\toml++.natvis" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<ClInclude Include="..\..\tests\catch2.h" /> <ClInclude Include="..\catch2.h" />
<ClInclude Include="..\..\tests\leakproof.h" /> <ClInclude Include="..\leakproof.h" />
<ClInclude Include="..\..\tests\settings.h" /> <ClInclude Include="..\settings.h" />
<ClInclude Include="..\..\tests\tests.h" /> <ClInclude Include="..\tests.h" />
<ClInclude Include="..\..\tests\tloptional.h" /> <ClInclude Include="..\tloptional.h" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<None Include="..\..\tests\meson.build" /> <None Include="..\cpp.hint" />
<None Include="..\meson.build" />
</ItemGroup> </ItemGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" /> <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
</Project> </Project>

View File

@ -30,7 +30,7 @@
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props"
Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup> </ImportGroup>
<Import Project="../toml++.props" /> <Import Project="../../toml++.props" />
<ItemDefinitionGroup> <ItemDefinitionGroup>
<ClCompile> <ClCompile>
<AdditionalIncludeDirectories>..\tests;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> <AdditionalIncludeDirectories>..\tests;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
@ -47,53 +47,54 @@
</ClCompile> </ClCompile>
</ItemDefinitionGroup> </ItemDefinitionGroup>
<PropertyGroup> <PropertyGroup>
<LocalDebuggerWorkingDirectory>..\..\tests\</LocalDebuggerWorkingDirectory> <LocalDebuggerWorkingDirectory>$(ProjectDir)..\</LocalDebuggerWorkingDirectory>
</PropertyGroup> </PropertyGroup>
<ItemGroup> <ItemGroup>
<ClCompile Include="..\..\tests\conformance_burntsushi_invalid.cpp" /> <ClCompile Include="..\conformance_burntsushi_invalid.cpp" />
<ClCompile Include="..\..\tests\conformance_burntsushi_valid.cpp" /> <ClCompile Include="..\conformance_burntsushi_valid.cpp" />
<ClCompile Include="..\..\tests\conformance_iarna_invalid.cpp" /> <ClCompile Include="..\conformance_iarna_invalid.cpp" />
<ClCompile Include="..\..\tests\conformance_iarna_valid.cpp" /> <ClCompile Include="..\conformance_iarna_valid.cpp" />
<ClCompile Include="..\..\tests\impl_catch2.cpp"> <ClCompile Include="..\impl_catch2.cpp">
<PrecompiledHeader>NotUsing</PrecompiledHeader> <PrecompiledHeader>NotUsing</PrecompiledHeader>
</ClCompile> </ClCompile>
<ClCompile Include="..\..\tests\impl_toml.cpp"> <ClCompile Include="..\impl_toml.cpp">
<PrecompiledHeader>NotUsing</PrecompiledHeader> <PrecompiledHeader>NotUsing</PrecompiledHeader>
</ClCompile> </ClCompile>
<ClCompile Include="..\..\tests\manipulating_arrays.cpp" /> <ClCompile Include="..\manipulating_arrays.cpp" />
<ClCompile Include="..\..\tests\manipulating_tables.cpp" /> <ClCompile Include="..\manipulating_tables.cpp" />
<ClCompile Include="..\..\tests\manipulating_parse_result.cpp" /> <ClCompile Include="..\manipulating_parse_result.cpp" />
<ClCompile Include="..\..\tests\manipulating_values.cpp" /> <ClCompile Include="..\manipulating_values.cpp" />
<ClCompile Include="..\..\tests\parsing_arrays.cpp" /> <ClCompile Include="..\parsing_arrays.cpp" />
<ClCompile Include="..\..\tests\parsing_booleans.cpp" /> <ClCompile Include="..\parsing_booleans.cpp" />
<ClCompile Include="..\..\tests\parsing_comments.cpp" /> <ClCompile Include="..\parsing_comments.cpp" />
<ClCompile Include="..\..\tests\parsing_dates_and_times.cpp" /> <ClCompile Include="..\parsing_dates_and_times.cpp" />
<ClCompile Include="..\..\tests\parsing_floats.cpp" /> <ClCompile Include="..\parsing_floats.cpp" />
<ClCompile Include="..\..\tests\parsing_integers.cpp" /> <ClCompile Include="..\parsing_integers.cpp" />
<ClCompile Include="..\..\tests\parsing_key_value_pairs.cpp" /> <ClCompile Include="..\parsing_key_value_pairs.cpp" />
<ClCompile Include="..\..\tests\parsing_spec_example.cpp" /> <ClCompile Include="..\parsing_spec_example.cpp" />
<ClCompile Include="..\..\tests\parsing_strings.cpp" /> <ClCompile Include="..\parsing_strings.cpp" />
<ClCompile Include="..\..\tests\parsing_tables.cpp" /> <ClCompile Include="..\parsing_tables.cpp" />
<ClCompile Include="..\..\tests\tests.cpp"> <ClCompile Include="..\tests.cpp">
<PrecompiledHeader>Create</PrecompiledHeader> <PrecompiledHeader>Create</PrecompiledHeader>
</ClCompile> </ClCompile>
<ClCompile Include="..\..\tests\unicode.cpp" /> <ClCompile Include="..\unicode.cpp" />
<ClCompile Include="..\..\tests\user_feedback.cpp" /> <ClCompile Include="..\user_feedback.cpp" />
<ClCompile Include="..\..\tests\using_iterators.cpp" /> <ClCompile Include="..\using_iterators.cpp" />
<ClCompile Include="..\..\tests\windows_compat.cpp" /> <ClCompile Include="..\windows_compat.cpp" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<Natvis Include="..\toml++.natvis" /> <Natvis Include="..\..\toml++.natvis" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<ClInclude Include="..\..\tests\catch2.h" /> <ClInclude Include="..\catch2.h" />
<ClInclude Include="..\..\tests\leakproof.h" /> <ClInclude Include="..\leakproof.h" />
<ClInclude Include="..\..\tests\settings.h" /> <ClInclude Include="..\settings.h" />
<ClInclude Include="..\..\tests\tests.h" /> <ClInclude Include="..\tests.h" />
<ClInclude Include="..\..\tests\tloptional.h" /> <ClInclude Include="..\tloptional.h" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<None Include="..\..\tests\meson.build" /> <None Include="..\cpp.hint" />
<None Include="..\meson.build" />
</ItemGroup> </ItemGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" /> <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
</Project> </Project>

View File

@ -30,7 +30,7 @@
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props"
Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup> </ImportGroup>
<Import Project="../toml++.props" /> <Import Project="../../toml++.props" />
<ItemDefinitionGroup> <ItemDefinitionGroup>
<ClCompile> <ClCompile>
<AdditionalIncludeDirectories>..\tests;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> <AdditionalIncludeDirectories>..\tests;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
@ -47,53 +47,54 @@
</ClCompile> </ClCompile>
</ItemDefinitionGroup> </ItemDefinitionGroup>
<PropertyGroup> <PropertyGroup>
<LocalDebuggerWorkingDirectory>..\..\tests\</LocalDebuggerWorkingDirectory> <LocalDebuggerWorkingDirectory>$(ProjectDir)..\</LocalDebuggerWorkingDirectory>
</PropertyGroup> </PropertyGroup>
<ItemGroup> <ItemGroup>
<ClCompile Include="..\..\tests\conformance_burntsushi_invalid.cpp" /> <ClCompile Include="..\conformance_burntsushi_invalid.cpp" />
<ClCompile Include="..\..\tests\conformance_burntsushi_valid.cpp" /> <ClCompile Include="..\conformance_burntsushi_valid.cpp" />
<ClCompile Include="..\..\tests\conformance_iarna_invalid.cpp" /> <ClCompile Include="..\conformance_iarna_invalid.cpp" />
<ClCompile Include="..\..\tests\conformance_iarna_valid.cpp" /> <ClCompile Include="..\conformance_iarna_valid.cpp" />
<ClCompile Include="..\..\tests\impl_catch2.cpp"> <ClCompile Include="..\impl_catch2.cpp">
<PrecompiledHeader>NotUsing</PrecompiledHeader> <PrecompiledHeader>NotUsing</PrecompiledHeader>
</ClCompile> </ClCompile>
<ClCompile Include="..\..\tests\impl_toml.cpp"> <ClCompile Include="..\impl_toml.cpp">
<PrecompiledHeader>NotUsing</PrecompiledHeader> <PrecompiledHeader>NotUsing</PrecompiledHeader>
</ClCompile> </ClCompile>
<ClCompile Include="..\..\tests\manipulating_arrays.cpp" /> <ClCompile Include="..\manipulating_arrays.cpp" />
<ClCompile Include="..\..\tests\manipulating_tables.cpp" /> <ClCompile Include="..\manipulating_tables.cpp" />
<ClCompile Include="..\..\tests\manipulating_parse_result.cpp" /> <ClCompile Include="..\manipulating_parse_result.cpp" />
<ClCompile Include="..\..\tests\manipulating_values.cpp" /> <ClCompile Include="..\manipulating_values.cpp" />
<ClCompile Include="..\..\tests\parsing_arrays.cpp" /> <ClCompile Include="..\parsing_arrays.cpp" />
<ClCompile Include="..\..\tests\parsing_booleans.cpp" /> <ClCompile Include="..\parsing_booleans.cpp" />
<ClCompile Include="..\..\tests\parsing_comments.cpp" /> <ClCompile Include="..\parsing_comments.cpp" />
<ClCompile Include="..\..\tests\parsing_dates_and_times.cpp" /> <ClCompile Include="..\parsing_dates_and_times.cpp" />
<ClCompile Include="..\..\tests\parsing_floats.cpp" /> <ClCompile Include="..\parsing_floats.cpp" />
<ClCompile Include="..\..\tests\parsing_integers.cpp" /> <ClCompile Include="..\parsing_integers.cpp" />
<ClCompile Include="..\..\tests\parsing_key_value_pairs.cpp" /> <ClCompile Include="..\parsing_key_value_pairs.cpp" />
<ClCompile Include="..\..\tests\parsing_spec_example.cpp" /> <ClCompile Include="..\parsing_spec_example.cpp" />
<ClCompile Include="..\..\tests\parsing_strings.cpp" /> <ClCompile Include="..\parsing_strings.cpp" />
<ClCompile Include="..\..\tests\parsing_tables.cpp" /> <ClCompile Include="..\parsing_tables.cpp" />
<ClCompile Include="..\..\tests\tests.cpp"> <ClCompile Include="..\tests.cpp">
<PrecompiledHeader>Create</PrecompiledHeader> <PrecompiledHeader>Create</PrecompiledHeader>
</ClCompile> </ClCompile>
<ClCompile Include="..\..\tests\unicode.cpp" /> <ClCompile Include="..\unicode.cpp" />
<ClCompile Include="..\..\tests\user_feedback.cpp" /> <ClCompile Include="..\user_feedback.cpp" />
<ClCompile Include="..\..\tests\using_iterators.cpp" /> <ClCompile Include="..\using_iterators.cpp" />
<ClCompile Include="..\..\tests\windows_compat.cpp" /> <ClCompile Include="..\windows_compat.cpp" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<Natvis Include="..\toml++.natvis" /> <Natvis Include="..\..\toml++.natvis" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<ClInclude Include="..\..\tests\catch2.h" /> <ClInclude Include="..\catch2.h" />
<ClInclude Include="..\..\tests\leakproof.h" /> <ClInclude Include="..\leakproof.h" />
<ClInclude Include="..\..\tests\settings.h" /> <ClInclude Include="..\settings.h" />
<ClInclude Include="..\..\tests\tests.h" /> <ClInclude Include="..\tests.h" />
<ClInclude Include="..\..\tests\tloptional.h" /> <ClInclude Include="..\tloptional.h" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<None Include="..\..\tests\meson.build" /> <None Include="..\cpp.hint" />
<None Include="..\meson.build" />
</ItemGroup> </ItemGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" /> <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
</Project> </Project>

View File

@ -30,7 +30,7 @@
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props"
Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup> </ImportGroup>
<Import Project="../toml++.props" /> <Import Project="../../toml++.props" />
<ItemDefinitionGroup> <ItemDefinitionGroup>
<ClCompile> <ClCompile>
<AdditionalIncludeDirectories>..\tests;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> <AdditionalIncludeDirectories>..\tests;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
@ -47,53 +47,54 @@
</ClCompile> </ClCompile>
</ItemDefinitionGroup> </ItemDefinitionGroup>
<PropertyGroup> <PropertyGroup>
<LocalDebuggerWorkingDirectory>..\..\tests\</LocalDebuggerWorkingDirectory> <LocalDebuggerWorkingDirectory>$(ProjectDir)..\</LocalDebuggerWorkingDirectory>
</PropertyGroup> </PropertyGroup>
<ItemGroup> <ItemGroup>
<ClCompile Include="..\..\tests\conformance_burntsushi_invalid.cpp" /> <ClCompile Include="..\conformance_burntsushi_invalid.cpp" />
<ClCompile Include="..\..\tests\conformance_burntsushi_valid.cpp" /> <ClCompile Include="..\conformance_burntsushi_valid.cpp" />
<ClCompile Include="..\..\tests\conformance_iarna_invalid.cpp" /> <ClCompile Include="..\conformance_iarna_invalid.cpp" />
<ClCompile Include="..\..\tests\conformance_iarna_valid.cpp" /> <ClCompile Include="..\conformance_iarna_valid.cpp" />
<ClCompile Include="..\..\tests\impl_catch2.cpp"> <ClCompile Include="..\impl_catch2.cpp">
<PrecompiledHeader>NotUsing</PrecompiledHeader> <PrecompiledHeader>NotUsing</PrecompiledHeader>
</ClCompile> </ClCompile>
<ClCompile Include="..\..\tests\impl_toml.cpp"> <ClCompile Include="..\impl_toml.cpp">
<PrecompiledHeader>NotUsing</PrecompiledHeader> <PrecompiledHeader>NotUsing</PrecompiledHeader>
</ClCompile> </ClCompile>
<ClCompile Include="..\..\tests\manipulating_arrays.cpp" /> <ClCompile Include="..\manipulating_arrays.cpp" />
<ClCompile Include="..\..\tests\manipulating_tables.cpp" /> <ClCompile Include="..\manipulating_tables.cpp" />
<ClCompile Include="..\..\tests\manipulating_parse_result.cpp" /> <ClCompile Include="..\manipulating_parse_result.cpp" />
<ClCompile Include="..\..\tests\manipulating_values.cpp" /> <ClCompile Include="..\manipulating_values.cpp" />
<ClCompile Include="..\..\tests\parsing_arrays.cpp" /> <ClCompile Include="..\parsing_arrays.cpp" />
<ClCompile Include="..\..\tests\parsing_booleans.cpp" /> <ClCompile Include="..\parsing_booleans.cpp" />
<ClCompile Include="..\..\tests\parsing_comments.cpp" /> <ClCompile Include="..\parsing_comments.cpp" />
<ClCompile Include="..\..\tests\parsing_dates_and_times.cpp" /> <ClCompile Include="..\parsing_dates_and_times.cpp" />
<ClCompile Include="..\..\tests\parsing_floats.cpp" /> <ClCompile Include="..\parsing_floats.cpp" />
<ClCompile Include="..\..\tests\parsing_integers.cpp" /> <ClCompile Include="..\parsing_integers.cpp" />
<ClCompile Include="..\..\tests\parsing_key_value_pairs.cpp" /> <ClCompile Include="..\parsing_key_value_pairs.cpp" />
<ClCompile Include="..\..\tests\parsing_spec_example.cpp" /> <ClCompile Include="..\parsing_spec_example.cpp" />
<ClCompile Include="..\..\tests\parsing_strings.cpp" /> <ClCompile Include="..\parsing_strings.cpp" />
<ClCompile Include="..\..\tests\parsing_tables.cpp" /> <ClCompile Include="..\parsing_tables.cpp" />
<ClCompile Include="..\..\tests\tests.cpp"> <ClCompile Include="..\tests.cpp">
<PrecompiledHeader>Create</PrecompiledHeader> <PrecompiledHeader>Create</PrecompiledHeader>
</ClCompile> </ClCompile>
<ClCompile Include="..\..\tests\unicode.cpp" /> <ClCompile Include="..\unicode.cpp" />
<ClCompile Include="..\..\tests\user_feedback.cpp" /> <ClCompile Include="..\user_feedback.cpp" />
<ClCompile Include="..\..\tests\using_iterators.cpp" /> <ClCompile Include="..\using_iterators.cpp" />
<ClCompile Include="..\..\tests\windows_compat.cpp" /> <ClCompile Include="..\windows_compat.cpp" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<Natvis Include="..\toml++.natvis" /> <Natvis Include="..\..\toml++.natvis" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<ClInclude Include="..\..\tests\catch2.h" /> <ClInclude Include="..\catch2.h" />
<ClInclude Include="..\..\tests\leakproof.h" /> <ClInclude Include="..\leakproof.h" />
<ClInclude Include="..\..\tests\settings.h" /> <ClInclude Include="..\settings.h" />
<ClInclude Include="..\..\tests\tests.h" /> <ClInclude Include="..\tests.h" />
<ClInclude Include="..\..\tests\tloptional.h" /> <ClInclude Include="..\tloptional.h" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<None Include="..\..\tests\meson.build" /> <None Include="..\cpp.hint" />
<None Include="..\meson.build" />
</ItemGroup> </ItemGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" /> <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
</Project> </Project>

View File

@ -30,7 +30,7 @@
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props"
Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup> </ImportGroup>
<Import Project="../toml++.props" /> <Import Project="../../toml++.props" />
<ItemDefinitionGroup> <ItemDefinitionGroup>
<ClCompile> <ClCompile>
<AdditionalIncludeDirectories>..\tests;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> <AdditionalIncludeDirectories>..\tests;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
@ -47,53 +47,54 @@
</ClCompile> </ClCompile>
</ItemDefinitionGroup> </ItemDefinitionGroup>
<PropertyGroup> <PropertyGroup>
<LocalDebuggerWorkingDirectory>..\..\tests\</LocalDebuggerWorkingDirectory> <LocalDebuggerWorkingDirectory>$(ProjectDir)..\</LocalDebuggerWorkingDirectory>
</PropertyGroup> </PropertyGroup>
<ItemGroup> <ItemGroup>
<ClCompile Include="..\..\tests\conformance_burntsushi_invalid.cpp" /> <ClCompile Include="..\conformance_burntsushi_invalid.cpp" />
<ClCompile Include="..\..\tests\conformance_burntsushi_valid.cpp" /> <ClCompile Include="..\conformance_burntsushi_valid.cpp" />
<ClCompile Include="..\..\tests\conformance_iarna_invalid.cpp" /> <ClCompile Include="..\conformance_iarna_invalid.cpp" />
<ClCompile Include="..\..\tests\conformance_iarna_valid.cpp" /> <ClCompile Include="..\conformance_iarna_valid.cpp" />
<ClCompile Include="..\..\tests\impl_catch2.cpp"> <ClCompile Include="..\impl_catch2.cpp">
<PrecompiledHeader>NotUsing</PrecompiledHeader> <PrecompiledHeader>NotUsing</PrecompiledHeader>
</ClCompile> </ClCompile>
<ClCompile Include="..\..\tests\impl_toml.cpp"> <ClCompile Include="..\impl_toml.cpp">
<PrecompiledHeader>NotUsing</PrecompiledHeader> <PrecompiledHeader>NotUsing</PrecompiledHeader>
</ClCompile> </ClCompile>
<ClCompile Include="..\..\tests\manipulating_arrays.cpp" /> <ClCompile Include="..\manipulating_arrays.cpp" />
<ClCompile Include="..\..\tests\manipulating_tables.cpp" /> <ClCompile Include="..\manipulating_tables.cpp" />
<ClCompile Include="..\..\tests\manipulating_parse_result.cpp" /> <ClCompile Include="..\manipulating_parse_result.cpp" />
<ClCompile Include="..\..\tests\manipulating_values.cpp" /> <ClCompile Include="..\manipulating_values.cpp" />
<ClCompile Include="..\..\tests\parsing_arrays.cpp" /> <ClCompile Include="..\parsing_arrays.cpp" />
<ClCompile Include="..\..\tests\parsing_booleans.cpp" /> <ClCompile Include="..\parsing_booleans.cpp" />
<ClCompile Include="..\..\tests\parsing_comments.cpp" /> <ClCompile Include="..\parsing_comments.cpp" />
<ClCompile Include="..\..\tests\parsing_dates_and_times.cpp" /> <ClCompile Include="..\parsing_dates_and_times.cpp" />
<ClCompile Include="..\..\tests\parsing_floats.cpp" /> <ClCompile Include="..\parsing_floats.cpp" />
<ClCompile Include="..\..\tests\parsing_integers.cpp" /> <ClCompile Include="..\parsing_integers.cpp" />
<ClCompile Include="..\..\tests\parsing_key_value_pairs.cpp" /> <ClCompile Include="..\parsing_key_value_pairs.cpp" />
<ClCompile Include="..\..\tests\parsing_spec_example.cpp" /> <ClCompile Include="..\parsing_spec_example.cpp" />
<ClCompile Include="..\..\tests\parsing_strings.cpp" /> <ClCompile Include="..\parsing_strings.cpp" />
<ClCompile Include="..\..\tests\parsing_tables.cpp" /> <ClCompile Include="..\parsing_tables.cpp" />
<ClCompile Include="..\..\tests\tests.cpp"> <ClCompile Include="..\tests.cpp">
<PrecompiledHeader>Create</PrecompiledHeader> <PrecompiledHeader>Create</PrecompiledHeader>
</ClCompile> </ClCompile>
<ClCompile Include="..\..\tests\unicode.cpp" /> <ClCompile Include="..\unicode.cpp" />
<ClCompile Include="..\..\tests\user_feedback.cpp" /> <ClCompile Include="..\user_feedback.cpp" />
<ClCompile Include="..\..\tests\using_iterators.cpp" /> <ClCompile Include="..\using_iterators.cpp" />
<ClCompile Include="..\..\tests\windows_compat.cpp" /> <ClCompile Include="..\windows_compat.cpp" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<Natvis Include="..\toml++.natvis" /> <Natvis Include="..\..\toml++.natvis" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<ClInclude Include="..\..\tests\catch2.h" /> <ClInclude Include="..\catch2.h" />
<ClInclude Include="..\..\tests\leakproof.h" /> <ClInclude Include="..\leakproof.h" />
<ClInclude Include="..\..\tests\settings.h" /> <ClInclude Include="..\settings.h" />
<ClInclude Include="..\..\tests\tests.h" /> <ClInclude Include="..\tests.h" />
<ClInclude Include="..\..\tests\tloptional.h" /> <ClInclude Include="..\tloptional.h" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<None Include="..\..\tests\meson.build" /> <None Include="..\cpp.hint" />
<None Include="..\meson.build" />
</ItemGroup> </ItemGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" /> <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
</Project> </Project>

View File

@ -30,7 +30,7 @@
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props"
Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup> </ImportGroup>
<Import Project="../toml++.props" /> <Import Project="../../toml++.props" />
<ItemDefinitionGroup> <ItemDefinitionGroup>
<ClCompile> <ClCompile>
<AdditionalIncludeDirectories>..\tests;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> <AdditionalIncludeDirectories>..\tests;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
@ -47,53 +47,54 @@
</ClCompile> </ClCompile>
</ItemDefinitionGroup> </ItemDefinitionGroup>
<PropertyGroup> <PropertyGroup>
<LocalDebuggerWorkingDirectory>..\..\tests\</LocalDebuggerWorkingDirectory> <LocalDebuggerWorkingDirectory>$(ProjectDir)..\</LocalDebuggerWorkingDirectory>
</PropertyGroup> </PropertyGroup>
<ItemGroup> <ItemGroup>
<ClCompile Include="..\..\tests\conformance_burntsushi_invalid.cpp" /> <ClCompile Include="..\conformance_burntsushi_invalid.cpp" />
<ClCompile Include="..\..\tests\conformance_burntsushi_valid.cpp" /> <ClCompile Include="..\conformance_burntsushi_valid.cpp" />
<ClCompile Include="..\..\tests\conformance_iarna_invalid.cpp" /> <ClCompile Include="..\conformance_iarna_invalid.cpp" />
<ClCompile Include="..\..\tests\conformance_iarna_valid.cpp" /> <ClCompile Include="..\conformance_iarna_valid.cpp" />
<ClCompile Include="..\..\tests\impl_catch2.cpp"> <ClCompile Include="..\impl_catch2.cpp">
<PrecompiledHeader>NotUsing</PrecompiledHeader> <PrecompiledHeader>NotUsing</PrecompiledHeader>
</ClCompile> </ClCompile>
<ClCompile Include="..\..\tests\impl_toml.cpp"> <ClCompile Include="..\impl_toml.cpp">
<PrecompiledHeader>NotUsing</PrecompiledHeader> <PrecompiledHeader>NotUsing</PrecompiledHeader>
</ClCompile> </ClCompile>
<ClCompile Include="..\..\tests\manipulating_arrays.cpp" /> <ClCompile Include="..\manipulating_arrays.cpp" />
<ClCompile Include="..\..\tests\manipulating_tables.cpp" /> <ClCompile Include="..\manipulating_tables.cpp" />
<ClCompile Include="..\..\tests\manipulating_parse_result.cpp" /> <ClCompile Include="..\manipulating_parse_result.cpp" />
<ClCompile Include="..\..\tests\manipulating_values.cpp" /> <ClCompile Include="..\manipulating_values.cpp" />
<ClCompile Include="..\..\tests\parsing_arrays.cpp" /> <ClCompile Include="..\parsing_arrays.cpp" />
<ClCompile Include="..\..\tests\parsing_booleans.cpp" /> <ClCompile Include="..\parsing_booleans.cpp" />
<ClCompile Include="..\..\tests\parsing_comments.cpp" /> <ClCompile Include="..\parsing_comments.cpp" />
<ClCompile Include="..\..\tests\parsing_dates_and_times.cpp" /> <ClCompile Include="..\parsing_dates_and_times.cpp" />
<ClCompile Include="..\..\tests\parsing_floats.cpp" /> <ClCompile Include="..\parsing_floats.cpp" />
<ClCompile Include="..\..\tests\parsing_integers.cpp" /> <ClCompile Include="..\parsing_integers.cpp" />
<ClCompile Include="..\..\tests\parsing_key_value_pairs.cpp" /> <ClCompile Include="..\parsing_key_value_pairs.cpp" />
<ClCompile Include="..\..\tests\parsing_spec_example.cpp" /> <ClCompile Include="..\parsing_spec_example.cpp" />
<ClCompile Include="..\..\tests\parsing_strings.cpp" /> <ClCompile Include="..\parsing_strings.cpp" />
<ClCompile Include="..\..\tests\parsing_tables.cpp" /> <ClCompile Include="..\parsing_tables.cpp" />
<ClCompile Include="..\..\tests\tests.cpp"> <ClCompile Include="..\tests.cpp">
<PrecompiledHeader>Create</PrecompiledHeader> <PrecompiledHeader>Create</PrecompiledHeader>
</ClCompile> </ClCompile>
<ClCompile Include="..\..\tests\unicode.cpp" /> <ClCompile Include="..\unicode.cpp" />
<ClCompile Include="..\..\tests\user_feedback.cpp" /> <ClCompile Include="..\user_feedback.cpp" />
<ClCompile Include="..\..\tests\using_iterators.cpp" /> <ClCompile Include="..\using_iterators.cpp" />
<ClCompile Include="..\..\tests\windows_compat.cpp" /> <ClCompile Include="..\windows_compat.cpp" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<Natvis Include="..\toml++.natvis" /> <Natvis Include="..\..\toml++.natvis" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<ClInclude Include="..\..\tests\catch2.h" /> <ClInclude Include="..\catch2.h" />
<ClInclude Include="..\..\tests\leakproof.h" /> <ClInclude Include="..\leakproof.h" />
<ClInclude Include="..\..\tests\settings.h" /> <ClInclude Include="..\settings.h" />
<ClInclude Include="..\..\tests\tests.h" /> <ClInclude Include="..\tests.h" />
<ClInclude Include="..\..\tests\tloptional.h" /> <ClInclude Include="..\tloptional.h" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<None Include="..\..\tests\meson.build" /> <None Include="..\cpp.hint" />
<None Include="..\meson.build" />
</ItemGroup> </ItemGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" /> <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
</Project> </Project>

View File

@ -30,7 +30,7 @@
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props"
Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup> </ImportGroup>
<Import Project="../toml++.props" /> <Import Project="../../toml++.props" />
<ItemDefinitionGroup> <ItemDefinitionGroup>
<ClCompile> <ClCompile>
<AdditionalIncludeDirectories>..\tests;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> <AdditionalIncludeDirectories>..\tests;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
@ -47,53 +47,54 @@
</ClCompile> </ClCompile>
</ItemDefinitionGroup> </ItemDefinitionGroup>
<PropertyGroup> <PropertyGroup>
<LocalDebuggerWorkingDirectory>..\..\tests\</LocalDebuggerWorkingDirectory> <LocalDebuggerWorkingDirectory>$(ProjectDir)..\</LocalDebuggerWorkingDirectory>
</PropertyGroup> </PropertyGroup>
<ItemGroup> <ItemGroup>
<ClCompile Include="..\..\tests\conformance_burntsushi_invalid.cpp" /> <ClCompile Include="..\conformance_burntsushi_invalid.cpp" />
<ClCompile Include="..\..\tests\conformance_burntsushi_valid.cpp" /> <ClCompile Include="..\conformance_burntsushi_valid.cpp" />
<ClCompile Include="..\..\tests\conformance_iarna_invalid.cpp" /> <ClCompile Include="..\conformance_iarna_invalid.cpp" />
<ClCompile Include="..\..\tests\conformance_iarna_valid.cpp" /> <ClCompile Include="..\conformance_iarna_valid.cpp" />
<ClCompile Include="..\..\tests\impl_catch2.cpp"> <ClCompile Include="..\impl_catch2.cpp">
<PrecompiledHeader>NotUsing</PrecompiledHeader> <PrecompiledHeader>NotUsing</PrecompiledHeader>
</ClCompile> </ClCompile>
<ClCompile Include="..\..\tests\impl_toml.cpp"> <ClCompile Include="..\impl_toml.cpp">
<PrecompiledHeader>NotUsing</PrecompiledHeader> <PrecompiledHeader>NotUsing</PrecompiledHeader>
</ClCompile> </ClCompile>
<ClCompile Include="..\..\tests\manipulating_arrays.cpp" /> <ClCompile Include="..\manipulating_arrays.cpp" />
<ClCompile Include="..\..\tests\manipulating_tables.cpp" /> <ClCompile Include="..\manipulating_tables.cpp" />
<ClCompile Include="..\..\tests\manipulating_parse_result.cpp" /> <ClCompile Include="..\manipulating_parse_result.cpp" />
<ClCompile Include="..\..\tests\manipulating_values.cpp" /> <ClCompile Include="..\manipulating_values.cpp" />
<ClCompile Include="..\..\tests\parsing_arrays.cpp" /> <ClCompile Include="..\parsing_arrays.cpp" />
<ClCompile Include="..\..\tests\parsing_booleans.cpp" /> <ClCompile Include="..\parsing_booleans.cpp" />
<ClCompile Include="..\..\tests\parsing_comments.cpp" /> <ClCompile Include="..\parsing_comments.cpp" />
<ClCompile Include="..\..\tests\parsing_dates_and_times.cpp" /> <ClCompile Include="..\parsing_dates_and_times.cpp" />
<ClCompile Include="..\..\tests\parsing_floats.cpp" /> <ClCompile Include="..\parsing_floats.cpp" />
<ClCompile Include="..\..\tests\parsing_integers.cpp" /> <ClCompile Include="..\parsing_integers.cpp" />
<ClCompile Include="..\..\tests\parsing_key_value_pairs.cpp" /> <ClCompile Include="..\parsing_key_value_pairs.cpp" />
<ClCompile Include="..\..\tests\parsing_spec_example.cpp" /> <ClCompile Include="..\parsing_spec_example.cpp" />
<ClCompile Include="..\..\tests\parsing_strings.cpp" /> <ClCompile Include="..\parsing_strings.cpp" />
<ClCompile Include="..\..\tests\parsing_tables.cpp" /> <ClCompile Include="..\parsing_tables.cpp" />
<ClCompile Include="..\..\tests\tests.cpp"> <ClCompile Include="..\tests.cpp">
<PrecompiledHeader>Create</PrecompiledHeader> <PrecompiledHeader>Create</PrecompiledHeader>
</ClCompile> </ClCompile>
<ClCompile Include="..\..\tests\unicode.cpp" /> <ClCompile Include="..\unicode.cpp" />
<ClCompile Include="..\..\tests\user_feedback.cpp" /> <ClCompile Include="..\user_feedback.cpp" />
<ClCompile Include="..\..\tests\using_iterators.cpp" /> <ClCompile Include="..\using_iterators.cpp" />
<ClCompile Include="..\..\tests\windows_compat.cpp" /> <ClCompile Include="..\windows_compat.cpp" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<Natvis Include="..\toml++.natvis" /> <Natvis Include="..\..\toml++.natvis" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<ClInclude Include="..\..\tests\catch2.h" /> <ClInclude Include="..\catch2.h" />
<ClInclude Include="..\..\tests\leakproof.h" /> <ClInclude Include="..\leakproof.h" />
<ClInclude Include="..\..\tests\settings.h" /> <ClInclude Include="..\settings.h" />
<ClInclude Include="..\..\tests\tests.h" /> <ClInclude Include="..\tests.h" />
<ClInclude Include="..\..\tests\tloptional.h" /> <ClInclude Include="..\tloptional.h" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<None Include="..\..\tests\meson.build" /> <None Include="..\cpp.hint" />
<None Include="..\meson.build" />
</ItemGroup> </ItemGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" /> <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
</Project> </Project>

View File

@ -30,7 +30,7 @@
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props"
Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup> </ImportGroup>
<Import Project="../toml++.props" /> <Import Project="../../toml++.props" />
<ItemDefinitionGroup> <ItemDefinitionGroup>
<ClCompile> <ClCompile>
<AdditionalIncludeDirectories>..\tests;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> <AdditionalIncludeDirectories>..\tests;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
@ -47,53 +47,54 @@
</ClCompile> </ClCompile>
</ItemDefinitionGroup> </ItemDefinitionGroup>
<PropertyGroup> <PropertyGroup>
<LocalDebuggerWorkingDirectory>..\..\tests\</LocalDebuggerWorkingDirectory> <LocalDebuggerWorkingDirectory>$(ProjectDir)..\</LocalDebuggerWorkingDirectory>
</PropertyGroup> </PropertyGroup>
<ItemGroup> <ItemGroup>
<ClCompile Include="..\..\tests\conformance_burntsushi_invalid.cpp" /> <ClCompile Include="..\conformance_burntsushi_invalid.cpp" />
<ClCompile Include="..\..\tests\conformance_burntsushi_valid.cpp" /> <ClCompile Include="..\conformance_burntsushi_valid.cpp" />
<ClCompile Include="..\..\tests\conformance_iarna_invalid.cpp" /> <ClCompile Include="..\conformance_iarna_invalid.cpp" />
<ClCompile Include="..\..\tests\conformance_iarna_valid.cpp" /> <ClCompile Include="..\conformance_iarna_valid.cpp" />
<ClCompile Include="..\..\tests\impl_catch2.cpp"> <ClCompile Include="..\impl_catch2.cpp">
<PrecompiledHeader>NotUsing</PrecompiledHeader> <PrecompiledHeader>NotUsing</PrecompiledHeader>
</ClCompile> </ClCompile>
<ClCompile Include="..\..\tests\impl_toml.cpp"> <ClCompile Include="..\impl_toml.cpp">
<PrecompiledHeader>NotUsing</PrecompiledHeader> <PrecompiledHeader>NotUsing</PrecompiledHeader>
</ClCompile> </ClCompile>
<ClCompile Include="..\..\tests\manipulating_arrays.cpp" /> <ClCompile Include="..\manipulating_arrays.cpp" />
<ClCompile Include="..\..\tests\manipulating_tables.cpp" /> <ClCompile Include="..\manipulating_tables.cpp" />
<ClCompile Include="..\..\tests\manipulating_parse_result.cpp" /> <ClCompile Include="..\manipulating_parse_result.cpp" />
<ClCompile Include="..\..\tests\manipulating_values.cpp" /> <ClCompile Include="..\manipulating_values.cpp" />
<ClCompile Include="..\..\tests\parsing_arrays.cpp" /> <ClCompile Include="..\parsing_arrays.cpp" />
<ClCompile Include="..\..\tests\parsing_booleans.cpp" /> <ClCompile Include="..\parsing_booleans.cpp" />
<ClCompile Include="..\..\tests\parsing_comments.cpp" /> <ClCompile Include="..\parsing_comments.cpp" />
<ClCompile Include="..\..\tests\parsing_dates_and_times.cpp" /> <ClCompile Include="..\parsing_dates_and_times.cpp" />
<ClCompile Include="..\..\tests\parsing_floats.cpp" /> <ClCompile Include="..\parsing_floats.cpp" />
<ClCompile Include="..\..\tests\parsing_integers.cpp" /> <ClCompile Include="..\parsing_integers.cpp" />
<ClCompile Include="..\..\tests\parsing_key_value_pairs.cpp" /> <ClCompile Include="..\parsing_key_value_pairs.cpp" />
<ClCompile Include="..\..\tests\parsing_spec_example.cpp" /> <ClCompile Include="..\parsing_spec_example.cpp" />
<ClCompile Include="..\..\tests\parsing_strings.cpp" /> <ClCompile Include="..\parsing_strings.cpp" />
<ClCompile Include="..\..\tests\parsing_tables.cpp" /> <ClCompile Include="..\parsing_tables.cpp" />
<ClCompile Include="..\..\tests\tests.cpp"> <ClCompile Include="..\tests.cpp">
<PrecompiledHeader>Create</PrecompiledHeader> <PrecompiledHeader>Create</PrecompiledHeader>
</ClCompile> </ClCompile>
<ClCompile Include="..\..\tests\unicode.cpp" /> <ClCompile Include="..\unicode.cpp" />
<ClCompile Include="..\..\tests\user_feedback.cpp" /> <ClCompile Include="..\user_feedback.cpp" />
<ClCompile Include="..\..\tests\using_iterators.cpp" /> <ClCompile Include="..\using_iterators.cpp" />
<ClCompile Include="..\..\tests\windows_compat.cpp" /> <ClCompile Include="..\windows_compat.cpp" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<Natvis Include="..\toml++.natvis" /> <Natvis Include="..\..\toml++.natvis" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<ClInclude Include="..\..\tests\catch2.h" /> <ClInclude Include="..\catch2.h" />
<ClInclude Include="..\..\tests\leakproof.h" /> <ClInclude Include="..\leakproof.h" />
<ClInclude Include="..\..\tests\settings.h" /> <ClInclude Include="..\settings.h" />
<ClInclude Include="..\..\tests\tests.h" /> <ClInclude Include="..\tests.h" />
<ClInclude Include="..\..\tests\tloptional.h" /> <ClInclude Include="..\tloptional.h" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<None Include="..\..\tests\meson.build" /> <None Include="..\cpp.hint" />
<None Include="..\meson.build" />
</ItemGroup> </ItemGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" /> <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
</Project> </Project>

View File

@ -30,7 +30,7 @@
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props"
Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup> </ImportGroup>
<Import Project="../toml++.props" /> <Import Project="../../toml++.props" />
<ItemDefinitionGroup> <ItemDefinitionGroup>
<ClCompile> <ClCompile>
<AdditionalIncludeDirectories>..\tests;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> <AdditionalIncludeDirectories>..\tests;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
@ -47,53 +47,54 @@
</ClCompile> </ClCompile>
</ItemDefinitionGroup> </ItemDefinitionGroup>
<PropertyGroup> <PropertyGroup>
<LocalDebuggerWorkingDirectory>..\..\tests\</LocalDebuggerWorkingDirectory> <LocalDebuggerWorkingDirectory>$(ProjectDir)..\</LocalDebuggerWorkingDirectory>
</PropertyGroup> </PropertyGroup>
<ItemGroup> <ItemGroup>
<ClCompile Include="..\..\tests\conformance_burntsushi_invalid.cpp" /> <ClCompile Include="..\conformance_burntsushi_invalid.cpp" />
<ClCompile Include="..\..\tests\conformance_burntsushi_valid.cpp" /> <ClCompile Include="..\conformance_burntsushi_valid.cpp" />
<ClCompile Include="..\..\tests\conformance_iarna_invalid.cpp" /> <ClCompile Include="..\conformance_iarna_invalid.cpp" />
<ClCompile Include="..\..\tests\conformance_iarna_valid.cpp" /> <ClCompile Include="..\conformance_iarna_valid.cpp" />
<ClCompile Include="..\..\tests\impl_catch2.cpp"> <ClCompile Include="..\impl_catch2.cpp">
<PrecompiledHeader>NotUsing</PrecompiledHeader> <PrecompiledHeader>NotUsing</PrecompiledHeader>
</ClCompile> </ClCompile>
<ClCompile Include="..\..\tests\impl_toml.cpp"> <ClCompile Include="..\impl_toml.cpp">
<PrecompiledHeader>NotUsing</PrecompiledHeader> <PrecompiledHeader>NotUsing</PrecompiledHeader>
</ClCompile> </ClCompile>
<ClCompile Include="..\..\tests\manipulating_arrays.cpp" /> <ClCompile Include="..\manipulating_arrays.cpp" />
<ClCompile Include="..\..\tests\manipulating_tables.cpp" /> <ClCompile Include="..\manipulating_tables.cpp" />
<ClCompile Include="..\..\tests\manipulating_parse_result.cpp" /> <ClCompile Include="..\manipulating_parse_result.cpp" />
<ClCompile Include="..\..\tests\manipulating_values.cpp" /> <ClCompile Include="..\manipulating_values.cpp" />
<ClCompile Include="..\..\tests\parsing_arrays.cpp" /> <ClCompile Include="..\parsing_arrays.cpp" />
<ClCompile Include="..\..\tests\parsing_booleans.cpp" /> <ClCompile Include="..\parsing_booleans.cpp" />
<ClCompile Include="..\..\tests\parsing_comments.cpp" /> <ClCompile Include="..\parsing_comments.cpp" />
<ClCompile Include="..\..\tests\parsing_dates_and_times.cpp" /> <ClCompile Include="..\parsing_dates_and_times.cpp" />
<ClCompile Include="..\..\tests\parsing_floats.cpp" /> <ClCompile Include="..\parsing_floats.cpp" />
<ClCompile Include="..\..\tests\parsing_integers.cpp" /> <ClCompile Include="..\parsing_integers.cpp" />
<ClCompile Include="..\..\tests\parsing_key_value_pairs.cpp" /> <ClCompile Include="..\parsing_key_value_pairs.cpp" />
<ClCompile Include="..\..\tests\parsing_spec_example.cpp" /> <ClCompile Include="..\parsing_spec_example.cpp" />
<ClCompile Include="..\..\tests\parsing_strings.cpp" /> <ClCompile Include="..\parsing_strings.cpp" />
<ClCompile Include="..\..\tests\parsing_tables.cpp" /> <ClCompile Include="..\parsing_tables.cpp" />
<ClCompile Include="..\..\tests\tests.cpp"> <ClCompile Include="..\tests.cpp">
<PrecompiledHeader>Create</PrecompiledHeader> <PrecompiledHeader>Create</PrecompiledHeader>
</ClCompile> </ClCompile>
<ClCompile Include="..\..\tests\unicode.cpp" /> <ClCompile Include="..\unicode.cpp" />
<ClCompile Include="..\..\tests\user_feedback.cpp" /> <ClCompile Include="..\user_feedback.cpp" />
<ClCompile Include="..\..\tests\using_iterators.cpp" /> <ClCompile Include="..\using_iterators.cpp" />
<ClCompile Include="..\..\tests\windows_compat.cpp" /> <ClCompile Include="..\windows_compat.cpp" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<Natvis Include="..\toml++.natvis" /> <Natvis Include="..\..\toml++.natvis" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<ClInclude Include="..\..\tests\catch2.h" /> <ClInclude Include="..\catch2.h" />
<ClInclude Include="..\..\tests\leakproof.h" /> <ClInclude Include="..\leakproof.h" />
<ClInclude Include="..\..\tests\settings.h" /> <ClInclude Include="..\settings.h" />
<ClInclude Include="..\..\tests\tests.h" /> <ClInclude Include="..\tests.h" />
<ClInclude Include="..\..\tests\tloptional.h" /> <ClInclude Include="..\tloptional.h" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<None Include="..\..\tests\meson.build" /> <None Include="..\cpp.hint" />
<None Include="..\meson.build" />
</ItemGroup> </ItemGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" /> <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
</Project> </Project>

View File

@ -30,7 +30,7 @@
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props"
Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup> </ImportGroup>
<Import Project="../toml++.props" /> <Import Project="../../toml++.props" />
<ItemDefinitionGroup> <ItemDefinitionGroup>
<ClCompile> <ClCompile>
<AdditionalIncludeDirectories>..\tests;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> <AdditionalIncludeDirectories>..\tests;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
@ -47,53 +47,54 @@
</ClCompile> </ClCompile>
</ItemDefinitionGroup> </ItemDefinitionGroup>
<PropertyGroup> <PropertyGroup>
<LocalDebuggerWorkingDirectory>..\..\tests\</LocalDebuggerWorkingDirectory> <LocalDebuggerWorkingDirectory>$(ProjectDir)..\</LocalDebuggerWorkingDirectory>
</PropertyGroup> </PropertyGroup>
<ItemGroup> <ItemGroup>
<ClCompile Include="..\..\tests\conformance_burntsushi_invalid.cpp" /> <ClCompile Include="..\conformance_burntsushi_invalid.cpp" />
<ClCompile Include="..\..\tests\conformance_burntsushi_valid.cpp" /> <ClCompile Include="..\conformance_burntsushi_valid.cpp" />
<ClCompile Include="..\..\tests\conformance_iarna_invalid.cpp" /> <ClCompile Include="..\conformance_iarna_invalid.cpp" />
<ClCompile Include="..\..\tests\conformance_iarna_valid.cpp" /> <ClCompile Include="..\conformance_iarna_valid.cpp" />
<ClCompile Include="..\..\tests\impl_catch2.cpp"> <ClCompile Include="..\impl_catch2.cpp">
<PrecompiledHeader>NotUsing</PrecompiledHeader> <PrecompiledHeader>NotUsing</PrecompiledHeader>
</ClCompile> </ClCompile>
<ClCompile Include="..\..\tests\impl_toml.cpp"> <ClCompile Include="..\impl_toml.cpp">
<PrecompiledHeader>NotUsing</PrecompiledHeader> <PrecompiledHeader>NotUsing</PrecompiledHeader>
</ClCompile> </ClCompile>
<ClCompile Include="..\..\tests\manipulating_arrays.cpp" /> <ClCompile Include="..\manipulating_arrays.cpp" />
<ClCompile Include="..\..\tests\manipulating_tables.cpp" /> <ClCompile Include="..\manipulating_tables.cpp" />
<ClCompile Include="..\..\tests\manipulating_parse_result.cpp" /> <ClCompile Include="..\manipulating_parse_result.cpp" />
<ClCompile Include="..\..\tests\manipulating_values.cpp" /> <ClCompile Include="..\manipulating_values.cpp" />
<ClCompile Include="..\..\tests\parsing_arrays.cpp" /> <ClCompile Include="..\parsing_arrays.cpp" />
<ClCompile Include="..\..\tests\parsing_booleans.cpp" /> <ClCompile Include="..\parsing_booleans.cpp" />
<ClCompile Include="..\..\tests\parsing_comments.cpp" /> <ClCompile Include="..\parsing_comments.cpp" />
<ClCompile Include="..\..\tests\parsing_dates_and_times.cpp" /> <ClCompile Include="..\parsing_dates_and_times.cpp" />
<ClCompile Include="..\..\tests\parsing_floats.cpp" /> <ClCompile Include="..\parsing_floats.cpp" />
<ClCompile Include="..\..\tests\parsing_integers.cpp" /> <ClCompile Include="..\parsing_integers.cpp" />
<ClCompile Include="..\..\tests\parsing_key_value_pairs.cpp" /> <ClCompile Include="..\parsing_key_value_pairs.cpp" />
<ClCompile Include="..\..\tests\parsing_spec_example.cpp" /> <ClCompile Include="..\parsing_spec_example.cpp" />
<ClCompile Include="..\..\tests\parsing_strings.cpp" /> <ClCompile Include="..\parsing_strings.cpp" />
<ClCompile Include="..\..\tests\parsing_tables.cpp" /> <ClCompile Include="..\parsing_tables.cpp" />
<ClCompile Include="..\..\tests\tests.cpp"> <ClCompile Include="..\tests.cpp">
<PrecompiledHeader>Create</PrecompiledHeader> <PrecompiledHeader>Create</PrecompiledHeader>
</ClCompile> </ClCompile>
<ClCompile Include="..\..\tests\unicode.cpp" /> <ClCompile Include="..\unicode.cpp" />
<ClCompile Include="..\..\tests\user_feedback.cpp" /> <ClCompile Include="..\user_feedback.cpp" />
<ClCompile Include="..\..\tests\using_iterators.cpp" /> <ClCompile Include="..\using_iterators.cpp" />
<ClCompile Include="..\..\tests\windows_compat.cpp" /> <ClCompile Include="..\windows_compat.cpp" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<Natvis Include="..\toml++.natvis" /> <Natvis Include="..\..\toml++.natvis" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<ClInclude Include="..\..\tests\catch2.h" /> <ClInclude Include="..\catch2.h" />
<ClInclude Include="..\..\tests\leakproof.h" /> <ClInclude Include="..\leakproof.h" />
<ClInclude Include="..\..\tests\settings.h" /> <ClInclude Include="..\settings.h" />
<ClInclude Include="..\..\tests\tests.h" /> <ClInclude Include="..\tests.h" />
<ClInclude Include="..\..\tests\tloptional.h" /> <ClInclude Include="..\tloptional.h" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<None Include="..\..\tests\meson.build" /> <None Include="..\cpp.hint" />
<None Include="..\meson.build" />
</ItemGroup> </ItemGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" /> <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
</Project> </Project>

View File

@ -30,7 +30,7 @@
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props"
Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup> </ImportGroup>
<Import Project="../toml++.props" /> <Import Project="../../toml++.props" />
<ItemDefinitionGroup> <ItemDefinitionGroup>
<ClCompile> <ClCompile>
<AdditionalIncludeDirectories>..\tests;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> <AdditionalIncludeDirectories>..\tests;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
@ -47,53 +47,54 @@
</ClCompile> </ClCompile>
</ItemDefinitionGroup> </ItemDefinitionGroup>
<PropertyGroup> <PropertyGroup>
<LocalDebuggerWorkingDirectory>..\..\tests\</LocalDebuggerWorkingDirectory> <LocalDebuggerWorkingDirectory>$(ProjectDir)..\</LocalDebuggerWorkingDirectory>
</PropertyGroup> </PropertyGroup>
<ItemGroup> <ItemGroup>
<ClCompile Include="..\..\tests\conformance_burntsushi_invalid.cpp" /> <ClCompile Include="..\conformance_burntsushi_invalid.cpp" />
<ClCompile Include="..\..\tests\conformance_burntsushi_valid.cpp" /> <ClCompile Include="..\conformance_burntsushi_valid.cpp" />
<ClCompile Include="..\..\tests\conformance_iarna_invalid.cpp" /> <ClCompile Include="..\conformance_iarna_invalid.cpp" />
<ClCompile Include="..\..\tests\conformance_iarna_valid.cpp" /> <ClCompile Include="..\conformance_iarna_valid.cpp" />
<ClCompile Include="..\..\tests\impl_catch2.cpp"> <ClCompile Include="..\impl_catch2.cpp">
<PrecompiledHeader>NotUsing</PrecompiledHeader> <PrecompiledHeader>NotUsing</PrecompiledHeader>
</ClCompile> </ClCompile>
<ClCompile Include="..\..\tests\impl_toml.cpp"> <ClCompile Include="..\impl_toml.cpp">
<PrecompiledHeader>NotUsing</PrecompiledHeader> <PrecompiledHeader>NotUsing</PrecompiledHeader>
</ClCompile> </ClCompile>
<ClCompile Include="..\..\tests\manipulating_arrays.cpp" /> <ClCompile Include="..\manipulating_arrays.cpp" />
<ClCompile Include="..\..\tests\manipulating_tables.cpp" /> <ClCompile Include="..\manipulating_tables.cpp" />
<ClCompile Include="..\..\tests\manipulating_parse_result.cpp" /> <ClCompile Include="..\manipulating_parse_result.cpp" />
<ClCompile Include="..\..\tests\manipulating_values.cpp" /> <ClCompile Include="..\manipulating_values.cpp" />
<ClCompile Include="..\..\tests\parsing_arrays.cpp" /> <ClCompile Include="..\parsing_arrays.cpp" />
<ClCompile Include="..\..\tests\parsing_booleans.cpp" /> <ClCompile Include="..\parsing_booleans.cpp" />
<ClCompile Include="..\..\tests\parsing_comments.cpp" /> <ClCompile Include="..\parsing_comments.cpp" />
<ClCompile Include="..\..\tests\parsing_dates_and_times.cpp" /> <ClCompile Include="..\parsing_dates_and_times.cpp" />
<ClCompile Include="..\..\tests\parsing_floats.cpp" /> <ClCompile Include="..\parsing_floats.cpp" />
<ClCompile Include="..\..\tests\parsing_integers.cpp" /> <ClCompile Include="..\parsing_integers.cpp" />
<ClCompile Include="..\..\tests\parsing_key_value_pairs.cpp" /> <ClCompile Include="..\parsing_key_value_pairs.cpp" />
<ClCompile Include="..\..\tests\parsing_spec_example.cpp" /> <ClCompile Include="..\parsing_spec_example.cpp" />
<ClCompile Include="..\..\tests\parsing_strings.cpp" /> <ClCompile Include="..\parsing_strings.cpp" />
<ClCompile Include="..\..\tests\parsing_tables.cpp" /> <ClCompile Include="..\parsing_tables.cpp" />
<ClCompile Include="..\..\tests\tests.cpp"> <ClCompile Include="..\tests.cpp">
<PrecompiledHeader>Create</PrecompiledHeader> <PrecompiledHeader>Create</PrecompiledHeader>
</ClCompile> </ClCompile>
<ClCompile Include="..\..\tests\unicode.cpp" /> <ClCompile Include="..\unicode.cpp" />
<ClCompile Include="..\..\tests\user_feedback.cpp" /> <ClCompile Include="..\user_feedback.cpp" />
<ClCompile Include="..\..\tests\using_iterators.cpp" /> <ClCompile Include="..\using_iterators.cpp" />
<ClCompile Include="..\..\tests\windows_compat.cpp" /> <ClCompile Include="..\windows_compat.cpp" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<Natvis Include="..\toml++.natvis" /> <Natvis Include="..\..\toml++.natvis" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<ClInclude Include="..\..\tests\catch2.h" /> <ClInclude Include="..\catch2.h" />
<ClInclude Include="..\..\tests\leakproof.h" /> <ClInclude Include="..\leakproof.h" />
<ClInclude Include="..\..\tests\settings.h" /> <ClInclude Include="..\settings.h" />
<ClInclude Include="..\..\tests\tests.h" /> <ClInclude Include="..\tests.h" />
<ClInclude Include="..\..\tests\tloptional.h" /> <ClInclude Include="..\tloptional.h" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<None Include="..\..\tests\meson.build" /> <None Include="..\cpp.hint" />
<None Include="..\meson.build" />
</ItemGroup> </ItemGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" /> <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
</Project> </Project>

View File

@ -30,7 +30,7 @@
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props"
Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup> </ImportGroup>
<Import Project="../toml++.props" /> <Import Project="../../toml++.props" />
<ItemDefinitionGroup> <ItemDefinitionGroup>
<ClCompile> <ClCompile>
<AdditionalIncludeDirectories>..\tests;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> <AdditionalIncludeDirectories>..\tests;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
@ -47,53 +47,54 @@
</ClCompile> </ClCompile>
</ItemDefinitionGroup> </ItemDefinitionGroup>
<PropertyGroup> <PropertyGroup>
<LocalDebuggerWorkingDirectory>..\..\tests\</LocalDebuggerWorkingDirectory> <LocalDebuggerWorkingDirectory>$(ProjectDir)..\</LocalDebuggerWorkingDirectory>
</PropertyGroup> </PropertyGroup>
<ItemGroup> <ItemGroup>
<ClCompile Include="..\..\tests\conformance_burntsushi_invalid.cpp" /> <ClCompile Include="..\conformance_burntsushi_invalid.cpp" />
<ClCompile Include="..\..\tests\conformance_burntsushi_valid.cpp" /> <ClCompile Include="..\conformance_burntsushi_valid.cpp" />
<ClCompile Include="..\..\tests\conformance_iarna_invalid.cpp" /> <ClCompile Include="..\conformance_iarna_invalid.cpp" />
<ClCompile Include="..\..\tests\conformance_iarna_valid.cpp" /> <ClCompile Include="..\conformance_iarna_valid.cpp" />
<ClCompile Include="..\..\tests\impl_catch2.cpp"> <ClCompile Include="..\impl_catch2.cpp">
<PrecompiledHeader>NotUsing</PrecompiledHeader> <PrecompiledHeader>NotUsing</PrecompiledHeader>
</ClCompile> </ClCompile>
<ClCompile Include="..\..\tests\impl_toml.cpp"> <ClCompile Include="..\impl_toml.cpp">
<PrecompiledHeader>NotUsing</PrecompiledHeader> <PrecompiledHeader>NotUsing</PrecompiledHeader>
</ClCompile> </ClCompile>
<ClCompile Include="..\..\tests\manipulating_arrays.cpp" /> <ClCompile Include="..\manipulating_arrays.cpp" />
<ClCompile Include="..\..\tests\manipulating_tables.cpp" /> <ClCompile Include="..\manipulating_tables.cpp" />
<ClCompile Include="..\..\tests\manipulating_parse_result.cpp" /> <ClCompile Include="..\manipulating_parse_result.cpp" />
<ClCompile Include="..\..\tests\manipulating_values.cpp" /> <ClCompile Include="..\manipulating_values.cpp" />
<ClCompile Include="..\..\tests\parsing_arrays.cpp" /> <ClCompile Include="..\parsing_arrays.cpp" />
<ClCompile Include="..\..\tests\parsing_booleans.cpp" /> <ClCompile Include="..\parsing_booleans.cpp" />
<ClCompile Include="..\..\tests\parsing_comments.cpp" /> <ClCompile Include="..\parsing_comments.cpp" />
<ClCompile Include="..\..\tests\parsing_dates_and_times.cpp" /> <ClCompile Include="..\parsing_dates_and_times.cpp" />
<ClCompile Include="..\..\tests\parsing_floats.cpp" /> <ClCompile Include="..\parsing_floats.cpp" />
<ClCompile Include="..\..\tests\parsing_integers.cpp" /> <ClCompile Include="..\parsing_integers.cpp" />
<ClCompile Include="..\..\tests\parsing_key_value_pairs.cpp" /> <ClCompile Include="..\parsing_key_value_pairs.cpp" />
<ClCompile Include="..\..\tests\parsing_spec_example.cpp" /> <ClCompile Include="..\parsing_spec_example.cpp" />
<ClCompile Include="..\..\tests\parsing_strings.cpp" /> <ClCompile Include="..\parsing_strings.cpp" />
<ClCompile Include="..\..\tests\parsing_tables.cpp" /> <ClCompile Include="..\parsing_tables.cpp" />
<ClCompile Include="..\..\tests\tests.cpp"> <ClCompile Include="..\tests.cpp">
<PrecompiledHeader>Create</PrecompiledHeader> <PrecompiledHeader>Create</PrecompiledHeader>
</ClCompile> </ClCompile>
<ClCompile Include="..\..\tests\unicode.cpp" /> <ClCompile Include="..\unicode.cpp" />
<ClCompile Include="..\..\tests\user_feedback.cpp" /> <ClCompile Include="..\user_feedback.cpp" />
<ClCompile Include="..\..\tests\using_iterators.cpp" /> <ClCompile Include="..\using_iterators.cpp" />
<ClCompile Include="..\..\tests\windows_compat.cpp" /> <ClCompile Include="..\windows_compat.cpp" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<Natvis Include="..\toml++.natvis" /> <Natvis Include="..\..\toml++.natvis" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<ClInclude Include="..\..\tests\catch2.h" /> <ClInclude Include="..\catch2.h" />
<ClInclude Include="..\..\tests\leakproof.h" /> <ClInclude Include="..\leakproof.h" />
<ClInclude Include="..\..\tests\settings.h" /> <ClInclude Include="..\settings.h" />
<ClInclude Include="..\..\tests\tests.h" /> <ClInclude Include="..\tests.h" />
<ClInclude Include="..\..\tests\tloptional.h" /> <ClInclude Include="..\tloptional.h" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<None Include="..\..\tests\meson.build" /> <None Include="..\cpp.hint" />
<None Include="..\meson.build" />
</ItemGroup> </ItemGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" /> <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
</Project> </Project>

Some files were not shown because too many files have changed in this diff Show More