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

87
.gitattributes vendored
View File

@ -1,26 +1,61 @@
* text=auto encoding=UTF-8
*.c text encoding=UTF-8 eol=lf
*.cpp text encoding=UTF-8 eol=lf
*.cxx text encoding=UTF-8 eol=lf
*.dox text encoding=UTF-8 eol=lf
*.h text encoding=UTF-8 eol=lf
*.hpp text encoding=UTF-8 eol=lf
*.hxx text encoding=UTF-8 eol=lf
*.inl text encoding=UTF-8 eol=lf
*.toml text=auto encoding=UTF-8
*.xml text=auto encoding=UTF-8
*.py text encoding=UTF-8 eol=lf
*.natvis text encoding=UTF-8 eol=crlf
*.props text encoding=UTF-8 eol=crlf
*.vcxproj text encoding=UTF-8 eol=crlf
*.sln text encoding=UTF-8-BOM eol=crlf
*.runsettings text encoding=UTF-8 eol=crlf
*.md text encoding=UTF-8 eol=lf
*.css text encoding=UTF-8 eol=lf
.gitignore text encoding=UTF-8 eol=lf
.gitattributes text encoding=UTF-8 eol=lf
.editorconfig text encoding=UTF-8 eol=lf
meson.build text encoding=UTF-8 eol=lf
meson_options.txt text encoding=UTF-8 eol=lf
Doxyfile text encoding=UTF-8 eol=lf
Doxyfile-mcss text encoding=UTF-8 eol=lf
* text=auto encoding=UTF-8
*.c text eol=lf encoding=UTF-8
*.cpp text eol=lf encoding=UTF-8
*.css text eol=lf encoding=UTF-8
*.cxx text eol=lf encoding=UTF-8
*.dox text eol=lf encoding=UTF-8
*.h text eol=lf encoding=UTF-8
*.hint text eol=lf encoding=UTF-8
*.hlsl text eol=crlf encoding=UTF-8
*.hpp text eol=lf encoding=UTF-8
*.htm text eol=lf encoding=UTF-8
*.html text eol=lf encoding=UTF-8
*.hxx text eol=lf encoding=UTF-8
*.ini text eol=lf encoding=UTF-8
*.inl text eol=lf encoding=UTF-8
*.md text eol=lf encoding=UTF-8
*.natvis text eol=lf encoding=UTF-8
*.props text eol=lf encoding=UTF-8
*.py text eol=lf encoding=UTF-8
*.rc text eol=crlf encoding=UTF-8
*.runsettings text eol=lf encoding=UTF-8
*.sln text eol=crlf encoding=UTF-8-BOM
*.toml text eol=lf encoding=UTF-8
*.txt text eol=lf encoding=UTF-8
*.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
compile_commands.json
[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
## files generated by popular Visual Studio add-ons.

26
.gitmodules vendored
View File

@ -1,15 +1,15 @@
[submodule "extern/Catch2"]
path = extern/Catch2
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
[submodule "external/toml-test"]
path = external/toml-test
url = https://github.com/BurntSushi/toml-test.git
[submodule "extern/toml-spec-tests"]
path = extern/toml-spec-tests
[submodule "external/toml-spec-tests"]
path = external/toml-spec-tests
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
- 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`
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>
@ -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`.
The first time you want to begin testing you'll need to ensure submodules have been fetched:
```bash
git submodule update --init extern/Catch2
git submodule update --init extern/tloptional
git submodule update --init --depth 1 external/Catch2 external/tloptional
```
### 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)
[![C++17](docs/badge-C++17.svg)][cpp_compilers]
[![C++20](docs/badge-C++20.svg)][cpp_compilers]
[![TOML](docs/badge-TOML.svg)][v1.0.0]
[![MIT license](docs/badge-license-MIT.svg)](./LICENSE)
[![C++17](docs/images/badge-C++17.svg)][cpp_compilers]
[![C++20](docs/images/badge-C++20.svg)][cpp_compilers]
[![TOML](docs/images/badge-TOML.svg)][v1.0.0]
[![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)
[![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
<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>
<br>
@ -32,7 +32,7 @@
# 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]_
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
`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
2. There is no step two
### 🍨 Regular flavour
### 🍨&#xFE0F; Regular flavour
1. Add `tomlplusplus/include` to your include paths
2. `#include <toml++/toml.h>`
@ -108,7 +108,7 @@ depends: [
'tomlpp^2.3.0',
]
```
> _[What is DDS?](https://dds.pizza/)_
> &#xFE0F; _[What is DDS?](https://dds.pizza/)_
### 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_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._
<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
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
- [#562]: Allow hex floating-point values
- [#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
- [#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:
- [#356]: Allow leading zeros in the exponent part of a float
- [#567]: Control characters are not permitted in comments
@ -173,7 +173,7 @@ All features supported, including:
- [#665]: Make arrays heterogeneous
- [#766]: Allow comments before commas in arrays
### 🔹 **TOML v0.5.0:**
### 🔹&#xFE0F; **TOML v0.5.0:**
All features supported.
<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
@ -6,9 +6,9 @@
DOXYFILE_ENCODING = UTF-8
PROJECT_NAME = toml++
PROJECT_NUMBER =
PROJECT_BRIEF = TOML for modern C++
PROJECT_BRIEF = "TOML for modern C++"
PROJECT_LOGO = logo.png
OUTPUT_DIRECTORY = ./
OUTPUT_DIRECTORY =
CREATE_SUBDIRS = NO
ALLOW_UNICODE_NAMES = NO
OUTPUT_LANGUAGE = English
@ -36,31 +36,11 @@ JAVADOC_AUTOBRIEF = NO
JAVADOC_BANNER = NO
QT_AUTOBRIEF = NO
MULTILINE_CPP_IS_BRIEF = NO
PYTHON_DOCSTRING = YES
INHERIT_DOCS = YES
SEPARATE_MEMBER_PAGES = NO
TAB_SIZE = 4
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 =
ALIASES =
OPTIMIZE_OUTPUT_FOR_C = NO
OPTIMIZE_OUTPUT_JAVA = NO
OPTIMIZE_FOR_FORTRAN = NO
@ -81,6 +61,7 @@ INLINE_GROUPED_CLASSES = NO
INLINE_SIMPLE_STRUCTS = NO
TYPEDEF_HIDES_STRUCT = NO
LOOKUP_CACHE_SIZE = 1
NUM_PROC_THREADS = 1
#---------------------------------------------------------------------------
# Build related configuration options
#---------------------------------------------------------------------------
@ -92,6 +73,7 @@ EXTRACT_STATIC = NO
EXTRACT_LOCAL_CLASSES = NO
EXTRACT_LOCAL_METHODS = NO
EXTRACT_ANON_NSPACES = NO
RESOLVE_UNNAMED_PARAMS = YES
HIDE_UNDOC_MEMBERS = YES
HIDE_UNDOC_CLASSES = YES
HIDE_FRIEND_COMPOUNDS = NO
@ -132,12 +114,12 @@ WARN_IF_DOC_ERROR = YES
WARN_NO_PARAMDOC = NO
WARN_AS_ERROR = NO
WARN_FORMAT = "$file:$line: $text"
WARN_LOGFILE = ./doc/doxygen_warnings.log
WARN_LOGFILE =
#---------------------------------------------------------------------------
# Configuration options related to the input files
#---------------------------------------------------------------------------
INPUT = ../include
INPUT += ../docs
INPUT = ../include/ \
pages/
INPUT_ENCODING = UTF-8
FILE_PATTERNS = *.h \
*.dox
@ -149,158 +131,13 @@ EXCLUDE_SYMBOLS =
EXAMPLE_PATH =
EXAMPLE_PATTERNS = *
EXAMPLE_RECURSIVE = NO
IMAGE_PATH = ./
IMAGE_PATH = images/
INPUT_FILTER =
FILTER_PATTERNS =
FILTER_SOURCE_FILES = NO
FILTER_SOURCE_PATTERNS =
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
#---------------------------------------------------------------------------
ENABLE_PREPROCESSING = YES
@ -309,92 +146,6 @@ EXPAND_ONLY_PREDEF = NO
SEARCH_INCLUDES = NO
INCLUDE_PATH =
INCLUDE_FILE_PATTERNS =
PREDEFINED = \
"DOXYGEN=1" \
"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 =
PREDEFINED =
EXPAND_AS_DEFINED =
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"
/// 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>
/// 1. Drop `toml.hpp` wherever you like in your source tree
@ -475,7 +475,7 @@
///
/// \subsection mainpage-adding-lib-python Special mention: Python
/// Yes, you read correctly, python. There exists a python wrapper built around toml++ called
/// \gh2{bobfang1992/pytomlpp, pytomlpp}:
/// \github{bobfang1992/pytomlpp, pytomlpp}:
///
/// \bash
/// pip install pytomlpp
@ -496,9 +496,9 @@
//////////////////////////////////////////////////////////////////////
///
/// \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,
/// 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.
///
//////////////////////////////////////////////////////////////////////
@ -516,7 +516,7 @@
//////////////////////////////////////////////////////////////////////
///
/// \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:
/// - Twitter: [marzer8789](https://twitter.com/marzer8789)
/// - Email: [mark.gillard@outlook.com.au](mailto:mark.gillard@outlook.com.au)

View File

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

View File

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

View File

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

View File

@ -34,18 +34,18 @@
<ImportGroup Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<Import Project="toml++.props" />
<Import Project="..\toml++.props" />
<PropertyGroup>
<LocalDebuggerWorkingDirectory>$(SolutionDir)..\examples\</LocalDebuggerWorkingDirectory>
</PropertyGroup>
<ItemGroup>
<ClCompile Include="..\examples\toml_to_json_transcoder.cpp" />
<ClCompile Include="toml_to_json_transcoder.cpp" />
</ItemGroup>
<ItemGroup>
<Natvis Include="toml++.natvis" />
<Natvis Include="..\toml++.natvis" />
</ItemGroup>
<ItemGroup>
<None Include="..\examples\meson.build" />
<None Include="meson.build" />
</ItemGroup>
<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"
TOML_PUSH_WARNINGS
TOML_DISABLE_SPAM_WARNINGS
TOML_PUSH_WARNINGS;
TOML_DISABLE_SPAM_WARNINGS;
#include "toml_common.h"
#include "toml_date_time.h"
@ -50,7 +50,7 @@ TOML_DISABLE_SPAM_WARNINGS
#endif // TOML_IMPLEMENTATION
TOML_POP_WARNINGS // TOML_DISABLE_SPAM_WARNINGS
TOML_POP_WARNINGS; // TOML_DISABLE_SPAM_WARNINGS
// macro hygiene
#if TOML_UNDEF_MACROS

View File

@ -6,6 +6,7 @@
#pragma once
#include "toml_value.h"
/// \cond
TOML_IMPL_NAMESPACE_START
{
template <bool IsConst>
@ -165,7 +166,7 @@ TOML_IMPL_NAMESPACE_START
return *(raw_ + idx)->get();
}
TOML_DISABLE_WARNINGS
TOML_DISABLE_WARNINGS;
template <bool C = IsConst, typename = std::enable_if_t<!C>>
operator array_iterator<true>() const noexcept
@ -173,7 +174,7 @@ TOML_IMPL_NAMESPACE_START
return array_iterator<true>{ raw_ };
}
TOML_ENABLE_WARNINGS
TOML_ENABLE_WARNINGS;
};
template <typename T>
@ -248,7 +249,8 @@ TOML_IMPL_NAMESPACE_START
return make_node(std::move(val.value));
}
}
TOML_IMPL_NAMESPACE_END
TOML_IMPL_NAMESPACE_END;
/// \endcond
TOML_NAMESPACE_START
{
@ -313,6 +315,8 @@ TOML_NAMESPACE_START
: public node
{
private:
/// \cond
friend class TOML_PARSER_TYPENAME;
std::vector<std::unique_ptr<node>> elements;
@ -334,6 +338,11 @@ TOML_NAMESPACE_START
void lh_dtor() noexcept;
#endif
[[nodiscard]] size_t total_leaf_count() const noexcept;
void flatten_child(array&& child, size_t& dest_index) noexcept;
/// \endcond
public:
using value_type = node;
@ -423,6 +432,9 @@ TOML_NAMESPACE_START
#endif
}
/// \name Type checks
/// @{
[[nodiscard]] node_type type() const noexcept override;
[[nodiscard]] bool is_table() 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>);
}
/// @}
/// \name Array operations
/// @{
/// \brief Gets a reference to the element at a specific index.
[[nodiscard]] node& operator[] (size_t index) noexcept;
/// \brief Gets a reference to the element at a specific index.
@ -512,10 +529,9 @@ TOML_NAMESPACE_START
/// \param pos The insertion position.
/// \param val The node or value being inserted.
///
/// \returns <strong><em>Valid input:</em></strong><br>
/// An iterator to the newly-inserted element.
/// <br><br>
/// <strong><em>`val` is an empty toml::node_view:</em></strong><br>
/// \returns \conditional_return{Valid input}
/// An iterator to the newly-inserted element.
/// \conditional_return{Input is an empty toml::node_view}
/// end()
///
/// \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 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.
/// <br><br>
/// <strong><em>`count == 0`:</em></strong><br>
/// \conditional_return{count == 0}
/// A copy of pos
/// <br><br>
/// <strong><em>`val` is an empty toml::node_view:</em></strong><br>
/// \conditional_return{Input is an empty toml::node_view}
/// end()
///
/// \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 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.
/// <br><br>
/// <strong><em>`first >= last`:</em></strong><br>
/// \conditional_return{first >= last}
/// A copy of pos
/// <br><br>
/// <strong><em>All objects in the range were empty toml::node_views:</em></strong><br>
/// \conditional_return{All objects in the range were empty toml::node_views}
/// A copy of pos
template <typename Iter>
iterator insert(const_iterator pos, Iter first, Iter last) noexcept
@ -656,14 +668,12 @@ TOML_NAMESPACE_START
/// \param pos The insertion position.
/// \param ilist An initializer list containing the values to be inserted.
///
/// \returns <strong><em>Valid input:</em></strong><br>
/// An iterator to the first newly-inserted element.
/// <br><br>
/// <strong><em>`ilist.size() == 0`:</em></strong><br>
/// A copy of pos
/// <br><br>
/// <strong><em>All objects in the list were empty toml::node_views:</em></strong><br>
/// A copy of pos
/// \returns \conditional_return{Valid input}
/// An iterator to the first newly-inserted element.
/// \conditional_return{Input list is empty}
/// A copy of pos
/// \conditional_return{All objects in the list were empty toml::node_views}
/// A copy of pos
template <typename ElemType>
iterator insert(const_iterator pos, std::initializer_list<ElemType> ilist) noexcept
{
@ -955,6 +965,40 @@ TOML_NAMESPACE_START
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.
///
/// \param lhs The LHS array.
@ -999,10 +1043,6 @@ TOML_NAMESPACE_START
return true;
}
[[nodiscard]] size_t total_leaf_count() const noexcept;
void flatten_child(array&& child, size_t& dest_index) noexcept;
public:
/// \brief Initializer list equality operator.
@ -1012,7 +1052,7 @@ TOML_NAMESPACE_START
{
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.
template <typename T>
@ -1021,36 +1061,9 @@ TOML_NAMESPACE_START
{
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.
template <typename Char>
@ -1058,4 +1071,4 @@ TOML_NAMESPACE_START
// 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);
}
}
TOML_NAMESPACE_END
TOML_NAMESPACE_END;

View File

@ -10,7 +10,7 @@
//# INCLUDES
//#====================================================================================================================
TOML_DISABLE_WARNINGS
TOML_DISABLE_WARNINGS;
#include <cstdint>
#include <cstddef>
#include <cstring>
@ -30,7 +30,7 @@ TOML_DISABLE_WARNINGS
#if TOML_HAS_INCLUDE(<version>)
#include <version>
#endif
TOML_ENABLE_WARNINGS
TOML_ENABLE_WARNINGS;
#ifdef __cpp_lib_launder
#define TOML_LAUNDER(x) std::launder(x)
@ -42,7 +42,7 @@ TOML_ENABLE_WARNINGS
//# ENVIRONMENT GROUND-TRUTHS
//#====================================================================================================================
#ifndef DOXYGEN
/// \cond
#ifndef TOML_DISABLE_ENVIRONMENT_CHECKS
#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 " \
@ -61,13 +61,14 @@ static_assert(std::numeric_limits<double>::digits10 == 15, TOML_ENV_MESSAGE);
#undef TOML_ENV_MESSAGE
#endif // !TOML_DISABLE_ENVIRONMENT_CHECKS
#endif // !DOXYGEN
/// \endcond
//#====================================================================================================================
//# 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
{
@ -103,7 +104,7 @@ TOML_NAMESPACE_START // abi namespace
TOML_ABI_NAMESPACE_BOOL(TOML_HAS_CUSTOM_OPTIONAL_TYPE, custopt, stdopt)
struct date_time;
TOML_ABI_NAMESPACE_END
TOML_ABI_NAMESPACE_END;
class node;
class array;
@ -182,12 +183,12 @@ TOML_NAMESPACE_START // abi namespace
#define TOML_PARSER_TYPENAME TOML_NAMESPACE::impl::parser
#endif
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
@ -271,12 +272,13 @@ TOML_NAMESPACE_START // abi namespace
};
template <typename T> inserter(T&&) -> inserter<T>;
}
TOML_NAMESPACE_END
TOML_NAMESPACE_END;
//#====================================================================================================================
//# VALUE AND NODE TRAITS
//#====================================================================================================================
/// \cond
TOML_IMPL_NAMESPACE_START
{
// general value traits
@ -529,7 +531,8 @@ TOML_IMPL_NAMESPACE_START
template <typename T>
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
{
@ -577,12 +580,13 @@ TOML_NAMESPACE_START
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>>;
}
TOML_NAMESPACE_END
TOML_NAMESPACE_END;
//#====================================================================================================================
//# INTERNAL HELPERS
//#====================================================================================================================
/// \cond
TOML_IMPL_NAMESPACE_START
{
template <typename T>
@ -677,7 +681,8 @@ TOML_IMPL_NAMESPACE_START
"date-time"sv
};
}
TOML_IMPL_NAMESPACE_END
TOML_IMPL_NAMESPACE_END;
/// \endcond
TOML_NAMESPACE_START
{
@ -689,7 +694,7 @@ TOML_NAMESPACE_START
return static_cast<size_t>(n);
}
}
TOML_NAMESPACE_END
TOML_NAMESPACE_END;
//#====================================================================================================================
//# SOURCE POSITIONS & REGIONS
@ -824,10 +829,10 @@ TOML_NAMESPACE_START
#if TOML_WINDOWS_COMPAT
/// \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().
///
/// \attention This function is only available when #TOML_WINDOWS_COMPAT is enabled.
[[nodiscard]]
optional<std::wstring> wide_path() const noexcept
{
@ -839,9 +844,9 @@ TOML_NAMESPACE_START
#endif
};
TOML_ABI_NAMESPACE_END // TOML_LARGE_FILES
TOML_ABI_NAMESPACE_END; // TOML_LARGE_FILES
}
TOML_NAMESPACE_END
TOML_NAMESPACE_END;
//#====================================================================================================================
//# OTHER
@ -864,7 +869,7 @@ TOML_NAMESPACE_START
/// \brief Format integer values as hexadecimal.
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.
enum class format_flags : uint8_t
@ -884,7 +889,7 @@ TOML_NAMESPACE_START
/// \brief Values with special format flags will be formatted accordingly.
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.
///
@ -917,8 +922,7 @@ TOML_NAMESPACE_START
}
}
#ifndef DOXYGEN
/// \cond
namespace impl
{
#define TOML_P2S_DECL(Type) \
@ -949,7 +953,7 @@ TOML_NAMESPACE_START
extern template TOML_API std::ostream& operator << (std::ostream&, node_type);
#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.
/// \detail \cpp
@ -425,4 +425,4 @@ TOML_NAMESPACE_START
extern template TOML_API std::ostream& operator << (std::ostream&, const date_time&);
#endif
}
TOML_NAMESPACE_END
TOML_NAMESPACE_END;

View File

@ -9,16 +9,18 @@
#include "toml_array.h"
#include "toml_utf8.h"
TOML_PUSH_WARNINGS
TOML_DISABLE_SWITCH_WARNINGS
TOML_PUSH_WARNINGS;
TOML_DISABLE_SWITCH_WARNINGS;
/// \cond
TOML_IMPL_NAMESPACE_START
{
[[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 bool default_formatter_forces_multiline(const node&, size_t = 0) noexcept;
}
TOML_IMPL_NAMESPACE_END
TOML_IMPL_NAMESPACE_END;
/// \endcond
TOML_NAMESPACE_START
{
@ -406,7 +408,7 @@ TOML_NAMESPACE_START
#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"
TOML_DISABLE_WARNINGS
TOML_DISABLE_WARNINGS;
#include <cmath>
TOML_ENABLE_WARNINGS
TOML_ENABLE_WARNINGS;
TOML_PUSH_WARNINGS
TOML_DISABLE_SWITCH_WARNINGS
TOML_DISABLE_ARITHMETIC_WARNINGS
TOML_PUSH_WARNINGS;
TOML_DISABLE_SWITCH_WARNINGS;
TOML_DISABLE_ARITHMETIC_WARNINGS;
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;
}
}
TOML_IMPL_NAMESPACE_END
TOML_IMPL_NAMESPACE_END;
TOML_NAMESPACE_START
{
@ -199,14 +199,14 @@ TOML_NAMESPACE_START
base::clear_naked_newline();
}
}
TOML_NAMESPACE_END
TOML_NAMESPACE_END;
// implementations of windows wide string nonsense
#if TOML_WINDOWS_COMPAT
TOML_DISABLE_WARNINGS
TOML_DISABLE_WARNINGS;
#include <windows.h> // fuckkkk :(
TOML_ENABLE_WARNINGS
TOML_ENABLE_WARNINGS;
TOML_IMPL_NAMESPACE_START
{
@ -260,8 +260,8 @@ TOML_IMPL_NAMESPACE_START
#endif // __cpp_lib_char8_t
}
TOML_IMPL_NAMESPACE_END
TOML_IMPL_NAMESPACE_END;
#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
#include "toml_print_to_stream.h"
TOML_PUSH_WARNINGS
TOML_DISABLE_SWITCH_WARNINGS
TOML_PUSH_WARNINGS;
TOML_DISABLE_SWITCH_WARNINGS;
/// \cond
TOML_IMPL_NAMESPACE_START
{
template <typename Char = char>
@ -232,6 +233,7 @@ TOML_IMPL_NAMESPACE_START
#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
//# }}
TOML_DISABLE_WARNINGS
TOML_DISABLE_WARNINGS;
#include <ostream>
#include <istream>
#include <fstream>
TOML_ENABLE_WARNINGS
TOML_ENABLE_WARNINGS;
#include "toml_node_view.h"
#include "toml_default_formatter.h"
@ -36,7 +36,7 @@ TOML_IMPL_NAMESPACE_START
// print to stream machinery
template TOML_API void print_floating_point_to_stream(double, std::ostream&, bool);
}
TOML_IMPL_NAMESPACE_END
TOML_IMPL_NAMESPACE_END;
// public namespace
TOML_NAMESPACE_START
@ -148,8 +148,8 @@ TOML_NAMESPACE_START
template TOML_API parse_result parse_file(std::wstring_view) TOML_MAY_THROW;
#endif
TOML_ABI_NAMESPACE_END // TOML_EXCEPTIONS
TOML_ABI_NAMESPACE_END; // TOML_EXCEPTIONS
#endif // TOML_PARSER
}
TOML_NAMESPACE_END
TOML_NAMESPACE_END;

View File

@ -6,8 +6,8 @@
#pragma once
#include "toml_formatter.h"
TOML_PUSH_WARNINGS
TOML_DISABLE_SWITCH_WARNINGS
TOML_PUSH_WARNINGS;
TOML_DISABLE_SWITCH_WARNINGS;
TOML_NAMESPACE_START
{
@ -154,6 +154,6 @@ TOML_NAMESPACE_START
extern template TOML_API std::ostream& operator << (std::ostream&, json_formatter<char>&&);
#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"
TOML_PUSH_WARNINGS
TOML_DISABLE_SWITCH_WARNINGS
TOML_PUSH_WARNINGS;
TOML_DISABLE_SWITCH_WARNINGS;
TOML_NAMESPACE_START
{
@ -58,6 +58,6 @@ TOML_NAMESPACE_START
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;
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:
node() noexcept = default;
@ -109,7 +138,8 @@ TOML_NAMESPACE_START
virtual ~node() noexcept = default;
/// \name Type checks
/// @{
#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();
}
/// \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.
///
/// \detail \cpp
@ -231,9 +232,12 @@ TOML_NAMESPACE_START
/// first non-match was a floating-point at line 1, column 18
/// \eout
///
/// \param ntype A TOML node type. <br>
/// <strong><em>toml::node_type::none: </em></strong> "is every element the same type?" <br>
/// <strong><em>Anything else:</em></strong> "is every element one of these?"
/// \param ntype A TOML node type. <br>
/// \conditional_return{toml::node_type::none}
/// "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
/// will be stored if the return value is false.
///
@ -264,8 +268,10 @@ TOML_NAMESPACE_START
/// \eout
///
/// \param ntype A TOML node type. <br>
/// <strong><em>toml::node_type::none: </em></strong> "is every element the same type?" <br>
/// <strong><em>Anything else:</em></strong> "is every element one of these?"
/// \conditional_return{toml::node_type::none}
/// "is every element the same type?"
/// \conditional_return{Anything else}
/// "is every element one of these?"
///
/// \returns True if the node was homogeneous.
///
@ -291,8 +297,10 @@ TOML_NAMESPACE_START
/// \eout
///
/// \tparam ElemType A TOML node or value type. <br>
/// <strong><em>Left as `void`:</em></strong> "is every element the same type?" <br>
/// <strong><em>Explicitly specified:</em></strong> "is every element a T?"
/// \conditional_return{Left as `void`}
/// "is every element the same type?" <br>
/// \conditional_return{Explicitly specified}
/// "is every element a T?"
///
/// \returns True if the node was homogeneous.
///
@ -312,18 +320,112 @@ TOML_NAMESPACE_START
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>
[[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.
///
@ -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)
/// 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,
/// use node::value_exact() instead.
/// \note If you want strict value retrieval semantics that do not allow for any type conversions,
/// use node::value_exact() instead.
///
/// \see node::value_exact()
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)
/// 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
/// value retrieval semantics that do not allow for any type conversions, use node::value_exact()
/// instead.
/// \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()
/// instead.
///
/// \see
/// - node::value()
@ -500,79 +602,65 @@ TOML_NAMESPACE_START
//[[nodiscard]]
//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>();
/// 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";
///
/// 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 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>
[[nodiscard]]
TOML_ATTR(pure)
impl::wrap_node<T>* as() noexcept
impl::unwrap_node<T>& ref() & 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();
return do_ref<T>(*this);
}
/// \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>
[[nodiscard]]
TOML_ATTR(pure)
const impl::wrap_node<T>* as() const noexcept
impl::unwrap_node<T>&& ref() && 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();
return do_ref<T>(std::move(*this));
}
/// \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.
[[nodiscard]] const source_region& source() const noexcept;
/// @}
private:
/// \cond
template <typename Func, typename N, typename T>
static constexpr bool can_visit = std::is_invocable_v<Func, ref_cast_type<N, T>>;
@ -723,30 +811,13 @@ TOML_NAMESPACE_START
}
}
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
public:
/// \name Visitation
/// @{
/// \brief Invokes a visitor on the node based on the node's concrete type.
///
/// \details Visitation is useful when you expect
@ -798,56 +869,18 @@ TOML_NAMESPACE_START
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).
template <typename T>
[[nodiscard]]
TOML_ATTR(pure)
impl::unwrap_node<T>&& ref() && noexcept
{
return do_ref<T>(std::move(*this));
}
/// \name Node views
/// @{
/// \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);
}
/// \brief Creates a `node_view` pointing to this node.
/// \brief Creates a node_view pointing to this node.
[[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;
/// @}
};
}
TOML_NAMESPACE_END
TOML_NAMESPACE_END;

View File

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

View File

@ -8,8 +8,8 @@
#include "toml_array.h"
#include "toml_value.h"
TOML_PUSH_WARNINGS
TOML_DISABLE_ARITHMETIC_WARNINGS
TOML_PUSH_WARNINGS;
TOML_DISABLE_ARITHMETIC_WARNINGS;
TOML_NAMESPACE_START
{
@ -209,9 +209,10 @@ TOML_NAMESPACE_START
/// first non-match was a floating-point at line 1, column 18
/// \eout
///
/// \param ntype A TOML node type. <br>
/// <strong><em>toml::node_type::none: </em></strong> "is every element the same type?" <br>
/// <strong><em>Anything else:</em></strong> "is every element one of these?"
/// \param ntype A TOML node type. <br>
/// \conditional_return{toml::node_type::none} "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
/// will be stored if the return value is false.
///
@ -249,8 +250,8 @@ TOML_NAMESPACE_START
/// \eout
///
/// \param ntype A TOML node type. <br>
/// <strong><em>toml::node_type::none: </em></strong> "is every element the same type?" <br>
/// <strong><em>Anything else:</em></strong> "is every element one of these?"
/// \conditional_return{toml::node_type::none} "is every element the same type?"
/// \conditional_return{Anything else} "is every element one of these?"
///
/// \returns True if the viewed node was homogeneous.
///
@ -281,8 +282,8 @@ TOML_NAMESPACE_START
/// \eout
///
/// \tparam ElemType A TOML node or value type. <br>
/// <strong><em>Left as `void`:</em></strong> "is every element the same type?" <br>
/// <strong><em>Explicitly specified:</em></strong> "is every element a T?"
/// \conditional_return{Left as `void`} "is every element the same type?" <br>
/// \conditional_return{Explicitly specified} "is every element a T?"
///
/// \returns True if the viewed node was homogeneous.
///
@ -316,8 +317,8 @@ TOML_NAMESPACE_START
return {};
}
TOML_PUSH_WARNINGS
TOML_DISABLE_INIT_WARNINGS
TOML_PUSH_WARNINGS;
TOML_DISABLE_INIT_WARNINGS;
/// \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)
/// 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,
/// use node_view::value_exact() instead.
/// \note If you want strict value retrieval semantics that do not allow for any type conversions,
/// use node_view::value_exact() instead.
///
/// \see
/// - node_view::value()
@ -347,7 +348,7 @@ TOML_NAMESPACE_START
return {};
}
TOML_POP_WARNINGS
TOML_POP_WARNINGS;
/// \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)
/// 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
/// value retrieval semantics that do not allow for any type conversions, use node_view::value_exact()
/// instead.
/// \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()
/// instead.
///
/// \see
/// - node_view::value()
@ -465,7 +466,7 @@ TOML_NAMESPACE_START
const auto tbl = lhs.as<table>();
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.
[[nodiscard]]
@ -476,7 +477,7 @@ TOML_NAMESPACE_START
const auto arr = lhs.as<array>();
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.
template <typename T>
@ -488,7 +489,7 @@ TOML_NAMESPACE_START
const auto val = lhs.as<T>();
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.
template <typename T, typename = std::enable_if_t<
@ -522,10 +523,10 @@ TOML_NAMESPACE_START
const node_view&,
const T&,
template <typename T, typename = std::enable_if_t<
impl::is_native<T>
|| impl::is_losslessly_convertible_to_native<T>
impl::is_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.
template <typename T>
@ -535,7 +536,7 @@ TOML_NAMESPACE_START
const auto arr = lhs.as<array>();
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.
template <typename T>
@ -545,7 +546,7 @@ TOML_NAMESPACE_START
const auto arr = lhs.as<array>();
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.
///
@ -565,12 +566,12 @@ TOML_NAMESPACE_START
/// \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
///
/// \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.
///
/// \attention This overload is only available when #TOML_WINDOWS_COMPAT is enabled.
[[nodiscard]]
node_view operator[] (std::wstring_view key) const noexcept
{
@ -676,6 +677,6 @@ TOML_NAMESPACE_START
#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.
#endif
//# }}
TOML_DISABLE_WARNINGS
TOML_DISABLE_WARNINGS;
#if TOML_EXCEPTIONS
#include <stdexcept>
#endif
TOML_ENABLE_WARNINGS
TOML_ENABLE_WARNINGS;
TOML_PUSH_WARNINGS
TOML_DISABLE_INIT_WARNINGS
TOML_PUSH_WARNINGS;
TOML_DISABLE_INIT_WARNINGS;
TOML_NAMESPACE_START
{
@ -114,7 +114,7 @@ TOML_NAMESPACE_START
#endif
TOML_ABI_NAMESPACE_END // TOML_EXCEPTIONS
TOML_ABI_NAMESPACE_END; // TOML_EXCEPTIONS
/// \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&);
#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
/// 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
/// #if TOML_EXCEPTIONS
/// 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.
///
/// \availability This overload is only available when #TOML_WINDOWS_COMPAT is enabled.
///
/// \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,
/// or an empty 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
{
@ -252,14 +252,14 @@ TOML_NAMESPACE_START
/// \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.
///
/// \returns A view of the value at the given key if parsing was successful and a matching key existed,
/// or an empty 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
{
@ -330,19 +330,20 @@ TOML_NAMESPACE_START
#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_ABI_NAMESPACE_BOOL(TOML_EXCEPTIONS, ex, noex)
[[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
#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)) \
}}
#endif
/// \endcond
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)
/// then this parameter can safely be left blank.
///
/// \returns <strong><em>With exceptions:</em></strong> A toml::table. <br>
/// <strong><em>Without exceptions:</em></strong> A toml::parse_result detailing the parsing outcome.
/// \returns \conditional_return{With exceptions}
/// A toml::table.
/// \conditional_return{Without exceptions}
/// A toml::parse_result.
[[nodiscard]]
TOML_API
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)
/// then this parameter can safely be left blank.
///
/// \returns <strong><em>With exceptions:</em></strong> A toml::table. <br>
/// <strong><em>Without exceptions:</em></strong> A toml::parse_result detailing the parsing outcome.
/// \returns \conditional_return{With exceptions}
/// A toml::table.
/// \conditional_return{Without exceptions}
/// A toml::parse_result.
[[nodiscard]]
TOML_API
parse_result parse(std::string_view doc, std::string&& source_path) TOML_MAY_THROW;
@ -420,15 +426,17 @@ TOML_NAMESPACE_START
/// 3
/// \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 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)
/// then this parameter can safely be left blank.
///
/// \returns <strong><em>With exceptions:</em></strong> A toml::table. <br>
/// <strong><em>Without exceptions:</em></strong> A toml::parse_result detailing the parsing outcome.
///
/// \attention This overload is only available when #TOML_WINDOWS_COMPAT is enabled.
/// \returns \conditional_return{With exceptions}
/// A toml::table.
/// \conditional_return{Without exceptions}
/// A toml::parse_result.
[[nodiscard]]
TOML_API
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)
/// then this parameter can safely be left blank.
///
/// \returns <strong><em>With exceptions:</em></strong> A toml::table. <br>
/// <strong><em>Without exceptions:</em></strong> A toml::parse_result detailing the parsing outcome.
/// \returns \conditional_return{With exceptions}
/// A toml::table.
/// \conditional_return{Without exceptions}
/// A toml::parse_result.
[[nodiscard]]
TOML_API
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)
/// then this parameter can safely be left blank.
///
/// \returns <strong><em>With exceptions:</em></strong> A toml::table. <br>
/// <strong><em>Without exceptions:</em></strong> A toml::parse_result detailing the parsing outcome.
/// \returns \conditional_return{With exceptions}
/// A toml::table.
/// \conditional_return{Without exceptions}
/// A toml::parse_result.
[[nodiscard]]
TOML_API
parse_result parse(std::u8string_view doc, std::string&& source_path) TOML_MAY_THROW;
@ -490,22 +502,23 @@ TOML_NAMESPACE_START
/// \detail \cpp
/// auto tbl = toml::parse(u8"a = 3"sv, L"foo.toml");
/// std::cout << tbl["a"] << "\n";
///
/// \ecpp
///
/// \out
/// 3
/// \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 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)
/// then this parameter can safely be left blank.
///
/// \returns <strong><em>With exceptions:</em></strong> A toml::table. <br>
/// <strong><em>Without exceptions:</em></strong> A toml::parse_result detailing the parsing outcome.
///
/// \attention This overload is only available when #TOML_WINDOWS_COMPAT is enabled.
/// \returns \conditional_return{With exceptions}
/// A toml::table.
/// \conditional_return{Without exceptions}
/// A toml::parse_result.
[[nodiscard]]
TOML_API
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)
/// then this parameter can safely be left blank.
///
/// \returns <strong><em>With exceptions:</em></strong> A toml::table. <br>
/// <strong><em>Without exceptions:</em></strong> A toml::parse_result detailing the parsing outcome.
/// \returns \conditional_return{With exceptions}
/// A toml::table.
/// \conditional_return{Without exceptions}
/// A toml::parse_result.
template <typename Char>
[[nodiscard]]
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)
/// then this parameter can safely be left blank.
///
/// \returns <strong><em>With exceptions:</em></strong> A toml::table. <br>
/// <strong><em>Without exceptions:</em></strong> A toml::parse_result detailing the parsing outcome.
/// \returns \conditional_return{With exceptions}
/// A toml::table.
/// \conditional_return{Without exceptions}
/// A toml::parse_result.
template <typename Char>
[[nodiscard]]
inline parse_result parse(std::basic_istream<Char>& doc, std::string&& source_path) TOML_MAY_THROW
@ -600,6 +617,8 @@ TOML_NAMESPACE_START
/// \out
/// 3
/// \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.
/// \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)
/// then this parameter can safely be left blank.
///
/// \returns <strong><em>With exceptions:</em></strong> A toml::table. <br>
/// <strong><em>Without exceptions:</em></strong> A toml::parse_result detailing the parsing outcome.
///
/// \attention This overload is only available when #TOML_WINDOWS_COMPAT is enabled.
/// \returns \conditional_return{With exceptions}
/// A toml::table.
/// \conditional_return{Without exceptions}
/// A toml::parse_result.
template <typename Char>
[[nodiscard]]
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.
/// \param file_path The TOML document to parse. Must be valid UTF-8.
///
/// \returns <strong><em>With exceptions:</em></strong> A toml::table. <br>
/// <strong><em>Without exceptions:</em></strong> A toml::parse_result detailing the parsing outcome.
/// \returns \conditional_return{With exceptions}
/// 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).
template <typename Char, typename StreamChar = char>
@ -733,7 +754,7 @@ TOML_NAMESPACE_START
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
{
@ -756,8 +777,10 @@ TOML_NAMESPACE_START
/// \param str The string data. Must be valid UTF-8.
/// \param len The string length.
///
/// \returns <strong><em>With exceptions:</em></strong> A toml::table. <br>
/// <strong><em>Without exceptions:</em></strong> A toml::parse_result detailing the parsing outcome.
/// \returns \conditional_return{With exceptions}
/// A toml::table.
/// \conditional_return{Without exceptions}
/// A toml::parse_result.
[[nodiscard]]
TOML_API
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 len The string length.
///
/// \returns <strong><em>With exceptions:</em></strong> A toml::table. <br>
/// <strong><em>Without exceptions:</em></strong> A toml::parse_result detailing the parsing outcome.
/// \returns \conditional_return{With exceptions}
/// A toml::table.
/// \conditional_return{Without exceptions}
/// A toml::parse_result.
[[nodiscard]]
TOML_API
parse_result operator"" _toml(const char8_t* str, size_t len) TOML_MAY_THROW;
#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

View File

@ -15,7 +15,7 @@
//# }}
#include "toml_parser.h"
TOML_DISABLE_WARNINGS
TOML_DISABLE_WARNINGS;
#include <cmath>
#if TOML_INT_CHARCONV || TOML_FLOAT_CHARCONV
#include <charconv>
@ -26,10 +26,10 @@ TOML_DISABLE_WARNINGS
#if !TOML_HEADER_ONLY
using namespace std::string_view_literals;
#endif
TOML_ENABLE_WARNINGS
TOML_ENABLE_WARNINGS;
TOML_PUSH_WARNINGS
TOML_DISABLE_SWITCH_WARNINGS
TOML_PUSH_WARNINGS;
TOML_DISABLE_SWITCH_WARNINGS;
#if TOML_EXCEPTIONS && !defined(__INTELLISENSE__)
#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
{
@ -1118,9 +1118,9 @@ TOML_IMPL_NAMESPACE_START
: std::numeric_limits<double>::quiet_NaN();
}
TOML_PUSH_WARNINGS
TOML_DISABLE_SWITCH_WARNINGS
TOML_DISABLE_INIT_WARNINGS
TOML_PUSH_WARNINGS;
TOML_DISABLE_SWITCH_WARNINGS;
TOML_DISABLE_INIT_WARNINGS;
[[nodiscard]]
double parse_float() TOML_MAY_THROW
@ -1820,7 +1820,7 @@ TOML_IMPL_NAMESPACE_START
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::table* parse_inline_table() TOML_MAY_THROW;
@ -2826,8 +2826,8 @@ TOML_IMPL_NAMESPACE_START
update_region_ends(root);
}
TOML_PUSH_WARNINGS
TOML_DISABLE_INIT_WARNINGS
TOML_PUSH_WARNINGS;
TOML_DISABLE_INIT_WARNINGS;
[[nodiscard]]
operator parse_result() && noexcept
@ -2847,7 +2847,7 @@ TOML_IMPL_NAMESPACE_START
}
TOML_POP_WARNINGS
TOML_POP_WARNINGS;
};
TOML_EXTERNAL_LINKAGE
@ -3008,7 +3008,7 @@ TOML_IMPL_NAMESPACE_START
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_1
@ -3029,7 +3029,7 @@ TOML_IMPL_NAMESPACE_START
#undef advance_and_return_if_error_or_eof
#undef assert_or_assume
}
TOML_IMPL_NAMESPACE_END
TOML_IMPL_NAMESPACE_END;
TOML_NAMESPACE_START
{
@ -3089,7 +3089,7 @@ TOML_NAMESPACE_START
#endif // __cpp_lib_char8_t
TOML_ABI_NAMESPACE_END // TOML_EXCEPTIONS
TOML_ABI_NAMESPACE_END; // TOML_EXCEPTIONS
inline namespace literals
{
@ -3113,9 +3113,9 @@ TOML_NAMESPACE_START
#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
#define TOML_PUSH_WARNINGS _Pragma("clang diagnostic push")
#define TOML_DISABLE_SWITCH_WARNINGS _Pragma("clang diagnostic ignored \"-Wswitch\"")
#define TOML_DISABLE_INIT_WARNINGS _Pragma("clang diagnostic ignored \"-Wmissing-field-initializers\"")
#define TOML_PUSH_WARNINGS _Pragma("clang diagnostic push") \
static_assert(true)
#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\"") \
_Pragma("clang diagnostic ignored \"-Wdouble-promotion\"") \
_Pragma("clang diagnostic ignored \"-Wchar-subscripts\"") \
_Pragma("clang diagnostic ignored \"-Wshift-sign-overflow\"")
#define TOML_DISABLE_SHADOW_WARNINGS _Pragma("clang diagnostic ignored \"-Wshadow\"")
_Pragma("clang diagnostic ignored \"-Wshift-sign-overflow\"") \
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\"") \
_Pragma("clang diagnostic ignored \"-Wweak-template-vtables\"") \
_Pragma("clang diagnostic ignored \"-Wpadded\"")
#define TOML_POP_WARNINGS _Pragma("clang diagnostic pop")
#define TOML_DISABLE_WARNINGS TOML_PUSH_WARNINGS \
_Pragma("clang diagnostic ignored \"-Weverything\"")
_Pragma("clang diagnostic ignored \"-Wpadded\"") \
static_assert(true)
#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_ASSUME(cond) __builtin_assume(cond)
#define TOML_UNREACHABLE __builtin_unreachable()
#define TOML_ATTR(...) __attribute__((__VA_ARGS__))
@ -111,13 +128,29 @@
#if TOML_MSVC || TOML_ICC_CL
#define TOML_CPP_VERSION _MSVC_LANG
#define TOML_PUSH_WARNINGS __pragma(warning(push))
#if TOML_MSVC // !intel-cl
#define TOML_PUSH_WARNINGS __pragma(warning(push))
#define TOML_DISABLE_SWITCH_WARNINGS __pragma(warning(disable: 4063))
#define TOML_POP_WARNINGS __pragma(warning(pop))
#define TOML_DISABLE_WARNINGS __pragma(warning(push, 0))
#define TOML_PUSH_WARNINGS __pragma(warning(push)) \
static_assert(true)
#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
#endif
#ifndef TOML_ALWAYS_INLINE
#define TOML_ALWAYS_INLINE __forceinline
@ -136,14 +169,24 @@
#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 */ \
__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: 2261)) /* assume expr side-effects discarded */
#define TOML_POP_WARNINGS __pragma(warning(pop))
#define TOML_DISABLE_WARNINGS __pragma(warning(push, 0))
#define TOML_ENABLE_WARNINGS TOML_POP_WARNINGS
__pragma(warning(disable: 2261)) /* assume expr side-effects discarded */ \
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 \
static_assert(true)
#endif // icc
@ -153,34 +196,51 @@
#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\"") \
_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\"") \
_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\"") \
_Pragma("GCC diagnostic ignored \"-Wsign-conversion\"") \
_Pragma("GCC diagnostic ignored \"-Wchar-subscripts\"")
#define TOML_DISABLE_SHADOW_WARNINGS _Pragma("GCC diagnostic ignored \"-Wshadow\"")
_Pragma("GCC diagnostic ignored \"-Wchar-subscripts\"") \
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\"") \
_Pragma("GCC diagnostic ignored \"-Wcast-align\"") \
_Pragma("GCC diagnostic ignored \"-Wcomment\"") \
_Pragma("GCC diagnostic ignored \"-Wtype-limits\"") \
_Pragma("GCC diagnostic ignored \"-Wuseless-cast\"") \
_Pragma("GCC diagnostic ignored \"-Wsuggest-attribute=const\"") \
_Pragma("GCC diagnostic ignored \"-Wsuggest-attribute=pure\"")
#define TOML_POP_WARNINGS _Pragma("GCC diagnostic pop")
#define TOML_DISABLE_WARNINGS TOML_PUSH_WARNINGS \
_Pragma("GCC diagnostic ignored \"-Wsuggest-attribute=pure\"") \
static_assert(true)
#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 \"-Wextra\"") \
_Pragma("GCC diagnostic ignored \"-Wpedantic\"") \
TOML_DISABLE_SWITCH_WARNINGS \
TOML_DISABLE_INIT_WARNINGS \
TOML_DISABLE_ARITHMETIC_WARNINGS \
TOML_DISABLE_SHADOW_WARNINGS \
TOML_DISABLE_SPAM_WARNINGS
TOML_DISABLE_SWITCH_WARNINGS; \
TOML_DISABLE_INIT_WARNINGS; \
TOML_DISABLE_ARITHMETIC_WARNINGS; \
TOML_DISABLE_SHADOW_WARNINGS; \
TOML_DISABLE_SPAM_WARNINGS; \
static_assert(true)
#define TOML_ENABLE_WARNINGS TOML_POP_WARNINGS
#define TOML_ATTR(...) __attribute__((__VA_ARGS__))
@ -313,7 +373,7 @@ is no longer necessary.
#define TOML_EXCEPTIONS 0
#endif
#if TOML_EXCEPTIONS
#if defined(DOXYGEN) || TOML_EXCEPTIONS
#define TOML_MAY_THROW
#else
#define TOML_MAY_THROW noexcept
@ -343,31 +403,31 @@ is no longer necessary.
#endif
#ifndef TOML_PUSH_WARNINGS
#define TOML_PUSH_WARNINGS
#define TOML_PUSH_WARNINGS static_assert(true)
#endif
#ifndef TOML_DISABLE_SWITCH_WARNINGS
#define TOML_DISABLE_SWITCH_WARNINGS
#define TOML_DISABLE_SWITCH_WARNINGS static_assert(true)
#endif
#ifndef TOML_DISABLE_INIT_WARNINGS
#define TOML_DISABLE_INIT_WARNINGS
#define TOML_DISABLE_INIT_WARNINGS static_assert(true)
#endif
#ifndef TOML_DISABLE_SPAM_WARNINGS
#define TOML_DISABLE_SPAM_WARNINGS
#define TOML_DISABLE_SPAM_WARNINGS static_assert(true)
#endif
#ifndef TOML_DISABLE_ARITHMETIC_WARNINGS
#define TOML_DISABLE_ARITHMETIC_WARNINGS
#define TOML_DISABLE_ARITHMETIC_WARNINGS static_assert(true)
#endif
#ifndef TOML_DISABLE_SHADOW_WARNINGS
#define TOML_DISABLE_SHADOW_WARNINGS
#define TOML_DISABLE_SHADOW_WARNINGS static_assert(true)
#endif
#ifndef TOML_POP_WARNINGS
#define TOML_POP_WARNINGS
#define TOML_POP_WARNINGS static_assert(true)
#endif
#ifndef TOML_DISABLE_WARNINGS
#define TOML_DISABLE_WARNINGS
#define TOML_DISABLE_WARNINGS static_assert(true)
#endif
#ifndef TOML_ENABLE_WARNINGS
#define TOML_ENABLE_WARNINGS
#define TOML_ENABLE_WARNINGS static_assert(true)
#endif
#ifndef TOML_ATTR
@ -440,7 +500,8 @@ is no longer necessary.
#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 != (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
#define TOML_SIMPLE_STATIC_ASSERT_MESSAGES 0
@ -475,7 +536,8 @@ is no longer necessary.
constexpr type operator | (type lhs, type rhs) noexcept \
{ \
return static_cast<type>(::toml::impl::unwrap_enum(lhs) | ::toml::impl::unwrap_enum(rhs)); \
}
} \
static_assert(true)
#ifndef TOML_LIFETIME_HOOKS
#define TOML_LIFETIME_HOOKS 0
@ -551,18 +613,18 @@ is no longer necessary.
#endif
#if TOML_ABI_NAMESPACES
#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_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_END }
#define TOML_ABI_NAMESPACE_END } static_assert(true)
#else
#define TOML_NAMESPACE_START namespace toml
#define TOML_NAMESPACE_END
#define TOML_NAMESPACE_END static_assert(true)
#define TOML_NAMESPACE toml
#define TOML_ABI_NAMESPACE_START(...)
#define TOML_ABI_NAMESPACE_BOOL(...)
#define TOML_ABI_NAMESPACE_END
#define TOML_ABI_NAMESPACE_END static_assert(true)
#endif
#define TOML_IMPL_NAMESPACE_START TOML_NAMESPACE_START { namespace impl
#define TOML_IMPL_NAMESPACE_END } TOML_NAMESPACE_END
@ -575,9 +637,9 @@ is no longer necessary.
#define TOML_INTERNAL_LINKAGE inline
#else
#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_USING_ANON_NAMESPACE (void)0
#define TOML_USING_ANON_NAMESPACE static_cast<void>(0)
#define TOML_EXTERNAL_LINKAGE
#define TOML_INTERNAL_LINKAGE static
#endif
@ -586,10 +648,10 @@ is no longer necessary.
//# ASSERT
//#====================================================================================================================
TOML_DISABLE_WARNINGS
TOML_DISABLE_WARNINGS;
#ifndef TOML_ASSERT
#if defined(NDEBUG) || !defined(_DEBUG)
#define TOML_ASSERT(expr) (void)0
#define TOML_ASSERT(expr) static_cast<void>(0)
#else
#ifndef assert
#include <cassert>
@ -597,7 +659,7 @@ TOML_DISABLE_WARNINGS
#define TOML_ASSERT(expr) assert(expr)
#endif
#endif
TOML_ENABLE_WARNINGS
TOML_ENABLE_WARNINGS;
//#====================================================================================================================
//# DOXYGEN SPAM
@ -630,7 +692,6 @@ TOML_ENABLE_WARNINGS
/// \ecpp
#define TOML_API
/// \def TOML_API
/// \brief An annotation to add to public symbols.
/// \detail Not defined by default.
@ -643,7 +704,6 @@ TOML_ENABLE_WARNINGS
/// \detail Defaults to the standard C `assert()`.
#define TOML_CONFIG_HEADER
/// \def TOML_CONFIG_HEADER
/// \brief An additional header to include before any other toml++ header files.
/// \detail Not defined by default.
@ -685,8 +745,8 @@ TOML_ENABLE_WARNINGS
/// \def TOML_SMALL_FLOAT_TYPE
/// \brief If your codebase has an additional 'small' float type (e.g. half-precision), this tells toml++ about it.
/// \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
/// need to use this configuration option to make toml++ aware of it; the library comes with that built-in.
/// \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.
#define TOML_SMALL_INT_TYPE
/// \def TOML_SMALL_INT_TYPE
@ -706,12 +766,12 @@ TOML_ENABLE_WARNINGS
/// when building for Windows.
/// \detail Defaults to `1` when building for Windows, `0` otherwise. Has no effect when building for anything other
/// than Windows.
/// \attention 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
/// conversions when necessary at various interface boundaries.
/// <br><br>
/// 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`.
/// \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
/// conversions when necessary at various interface boundaries.
/// <br><br>
/// 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`.
/// @}

View File

@ -5,7 +5,7 @@
#pragma once
#include "toml_date_time.h"
TOML_DISABLE_WARNINGS
TOML_DISABLE_WARNINGS;
#include <cmath>
#if TOML_INT_CHARCONV || TOML_FLOAT_CHARCONV
#include <charconv>
@ -16,10 +16,10 @@ TOML_DISABLE_WARNINGS
#if !TOML_INT_CHARCONV
#include <iomanip>
#endif
TOML_ENABLE_WARNINGS
TOML_ENABLE_WARNINGS;
TOML_PUSH_WARNINGS
TOML_DISABLE_SWITCH_WARNINGS
TOML_PUSH_WARNINGS;
TOML_DISABLE_SWITCH_WARNINGS;
TOML_IMPL_NAMESPACE_START
{
@ -377,8 +377,8 @@ TOML_IMPL_NAMESPACE_START
print_to_stream(*val.offset, stream);
}
TOML_PUSH_WARNINGS
TOML_DISABLE_ARITHMETIC_WARNINGS
TOML_PUSH_WARNINGS;
TOML_DISABLE_ARITHMETIC_WARNINGS;
template <typename T, typename Char>
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
{
@ -481,6 +481,6 @@ TOML_NAMESPACE_START
extern template TOML_API std::ostream& operator << (std::ostream&, const source_region&);
#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
#include "toml_array.h"
/// \cond
TOML_IMPL_NAMESPACE_START
{
template <bool IsConst>
@ -135,7 +136,7 @@ TOML_IMPL_NAMESPACE_START
return lhs.raw_ != rhs.raw_;
}
TOML_DISABLE_WARNINGS
TOML_DISABLE_WARNINGS;
template <bool C = IsConst, typename = std::enable_if_t<!C>>
operator table_iterator<true>() const noexcept
@ -143,7 +144,7 @@ TOML_IMPL_NAMESPACE_START
return table_iterator<true>{ raw_ };
}
TOML_ENABLE_WARNINGS
TOML_ENABLE_WARNINGS;
};
struct table_init_pair final
@ -192,7 +193,8 @@ TOML_IMPL_NAMESPACE_START
#endif
};
}
TOML_IMPL_NAMESPACE_END
TOML_IMPL_NAMESPACE_END;
/// \endcond
TOML_NAMESPACE_START
{
@ -214,6 +216,8 @@ TOML_NAMESPACE_START
private:
friend class TOML_PARSER_TYPENAME;
/// \cond
impl::string_map<std::unique_ptr<node>> map;
bool inline_ = false;
@ -224,6 +228,8 @@ TOML_NAMESPACE_START
table(impl::table_init_pair*, size_t) noexcept;
/// \endcond
public:
/// \brief A BidirectionalIterator for iterating over key-value pairs in a toml::table.
@ -291,13 +297,13 @@ TOML_NAMESPACE_START
#endif
}
/// \name Type checks
/// @{
[[nodiscard]] node_type type() const noexcept override;
[[nodiscard]] bool is_table() const noexcept override;
[[nodiscard]] bool is_array() 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, node*& first_nonmatch) 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>);
}
/// @}
/// \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.
///
/// \remarks Runtime-constructed tables (i.e. those not created during
@ -362,6 +381,11 @@ TOML_NAMESPACE_START
/// \param val The new value for 'inline'.
void is_inline(bool val) noexcept;
/// @}
/// \name Node views
/// @{
/// \brief Gets a node_view for the selected key-value pair.
///
/// \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.
///
/// \availability This overload is only available when #TOML_WINDOWS_COMPAT is enabled.
///
/// \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.
@ -401,11 +427,11 @@ TOML_NAMESPACE_START
/// <strong>This is not an error.</strong>
///
/// \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;
/// \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.
///
@ -416,12 +442,15 @@ TOML_NAMESPACE_START
/// <strong>This is not an error.</strong>
///
/// \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;
#endif // TOML_WINDOWS_COMPAT
/// @}
/// \name Table operations
/// @{
/// \brief Returns an iterator to the first key-value pair.
[[nodiscard]] iterator begin() noexcept;
/// \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 val The new value to insert.
///
/// \returns <strong><em>Valid input:</em></strong><br>
/// <ul>
/// <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.
/// </ul>
/// <strong><em>`val` is an empty toml::node_view:</em></strong><br>
/// `{ end(), false }`
/// \returns \conditional_return{Valid input}
/// <ul>
/// <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.
/// </ul>
/// \conditional_return{Input is an empty toml::node_view}
/// `{ end(), false }`
///
/// \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
@ -628,13 +657,13 @@ TOML_NAMESPACE_START
/// \param key The key at which to insert or assign the value.
/// \param val The value to insert/assign.
///
/// \returns <strong><em>Valid input:</em></strong><br>
/// <ul>
/// <li>An iterator to the value's position
/// <li>`true` if the value was inserted, `false` if it was assigned.
/// </ul>
/// <strong><em>`val` is an empty toml::node_view:</em></strong><br>
/// `{ end(), false }`
/// \returns \conditional_return{Valid input}
/// <ul>
/// <li>An iterator to the value's position
/// <li>`true` if the value was inserted, `false` if it was assigned.
/// </ul>
/// \conditional_return{Input is an empty toml::node_view}
/// `{ end(), false }`
///
/// \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.
@ -864,17 +893,65 @@ TOML_NAMESPACE_START
/// \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.
///
/// \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;
#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:
/// \cond
template <typename Map, typename Key>
[[nodiscard]]
static auto do_get(Map& vals, const Key& key) noexcept
@ -917,8 +994,13 @@ TOML_NAMESPACE_START
return do_get(vals, key) != nullptr;
}
/// \endcond
public:
/// \name Value retrieval
/// @{
/// \brief Gets the node at a specific key.
///
/// \detail \cpp
@ -953,66 +1035,26 @@ TOML_NAMESPACE_START
/// \returns A pointer to the node at the specified key, or nullptr.
[[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
/// \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.
///
/// \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;
/// \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.
///
/// \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;
/// \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
/// \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.
///
/// \availability This overload is only available when #TOML_WINDOWS_COMPAT is enabled.
///
/// \tparam ValueType One of the TOML node or value types.
/// \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.
///
/// \attention This overload is only available when #TOML_WINDOWS_COMPAT is enabled.
template <typename ValueType>
[[nodiscard]]
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).
///
/// \availability This overload is only available when #TOML_WINDOWS_COMPAT is enabled.
///
/// \tparam ValueType One of the TOML node or value types.
/// \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.
///
/// \attention This overload is only available when #TOML_WINDOWS_COMPAT is enabled.
template <typename ValueType>
[[nodiscard]]
const impl::wrap_node<ValueType>* get_as(std::wstring_view key) const noexcept
@ -1089,6 +1131,11 @@ TOML_NAMESPACE_START
#endif // TOML_WINDOWS_COMPAT
/// @}
/// \name Equality
/// @{
/// \brief Equality operator.
///
/// \param lhs The LHS table.
@ -1109,12 +1156,12 @@ TOML_NAMESPACE_START
template <typename Char>
friend std::basic_ostream<Char>& operator << (std::basic_ostream<Char>&, const table&);
// implemented in toml_default_formatter.h
/// @}
};
#ifndef DOXYGEN
//template <typename T>
//inline std::vector<T> node::select_exact() const noexcept
//{
@ -1154,4 +1201,4 @@ TOML_NAMESPACE_START
#endif // !DOXYGEN
}
TOML_NAMESPACE_END
TOML_NAMESPACE_END;

View File

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

View File

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

View File

@ -13,6 +13,7 @@
#include "toml_utf8.h"
#include "toml_parse_error.h"
/// \cond
TOML_IMPL_NAMESPACE_START
{
template <typename T>
@ -162,7 +163,7 @@ TOML_IMPL_NAMESPACE_START
static_assert(std::is_trivial_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)
@ -376,6 +377,7 @@ TOML_IMPL_NAMESPACE_START
#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
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

View File

@ -66,9 +66,10 @@
TOML_SA_LIST_END
#endif // !DOXYGEN
TOML_PUSH_WARNINGS
TOML_DISABLE_ARITHMETIC_WARNINGS
TOML_PUSH_WARNINGS;
TOML_DISABLE_ARITHMETIC_WARNINGS;
/// \cond
TOML_IMPL_NAMESPACE_START
{
template <typename T, typename...>
@ -161,7 +162,8 @@ TOML_IMPL_NAMESPACE_START
return { static_cast<T>(val) };
}
}
TOML_IMPL_NAMESPACE_END
TOML_IMPL_NAMESPACE_END;
/// \endcond
TOML_NAMESPACE_START
{
@ -187,6 +189,8 @@ TOML_NAMESPACE_START
private:
friend class TOML_PARSER_TYPENAME;
/// \cond
template <typename T, typename U>
[[nodiscard]]
TOML_ALWAYS_INLINE
@ -214,6 +218,8 @@ TOML_NAMESPACE_START
}
#endif
/// \endcond
public:
/// \brief The value's underlying data type.
@ -299,6 +305,9 @@ TOML_NAMESPACE_START
}
#endif
/// \name Type checks
/// @{
/// \brief Returns the value's node type identifier.
///
/// \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_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]]
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>;
}
/// @}
/// \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.
[[nodiscard]] value_type& get() & noexcept { return val_; }
/// \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).
[[nodiscard]] explicit operator const value_type& () const& noexcept { return val_; }
/// @}
/// \name Metadata
/// @{
/// \brief Returns the metadata flags associated with this value.
[[nodiscard]] value_flags flags() const noexcept
{
@ -419,6 +443,8 @@ TOML_NAMESPACE_START
return *this;
}
/// @}
/// \brief Prints the value out to a stream as formatted TOML.
template <typename Char, typename T>
friend std::basic_ostream<Char>& operator << (std::basic_ostream<Char>& lhs, const value<T>& rhs);
@ -441,6 +467,9 @@ TOML_NAMESPACE_START
return *this;
}
/// \name Equality
/// @{
/// \brief Value equality operator.
[[nodiscard]]
friend bool operator == (const value& lhs, value_arg rhs) noexcept
@ -456,7 +485,7 @@ TOML_NAMESPACE_START
}
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.
[[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 rhs The RHS toml::value.
///
/// \returns <strong><em>Same value types:</em></strong> `lhs.get() < rhs.get()` <br>
/// <strong><em>Different value types:</em></strong> `lhs.type() < rhs.type()`
/// \returns \conditional_return{Same value types}
/// `lhs.get() < rhs.get()`
/// \conditional_return{Different value types}
/// `lhs.type() < rhs.type()`
template <typename T>
[[nodiscard]]
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 rhs The RHS toml::value.
///
/// \returns <strong><em>Same value types:</em></strong> `lhs.get() <= rhs.get()` <br>
/// <strong><em>Different value types:</em></strong> `lhs.type() <= rhs.type()`
/// \returns \conditional_return{Same value types}
/// `lhs.get() <= rhs.get()`
/// \conditional_return{Different value types}
/// `lhs.type() <= rhs.type()`
template <typename T>
[[nodiscard]]
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 rhs The RHS toml::value.
///
/// \returns <strong><em>Same value types:</em></strong> `lhs.get() > rhs.get()` <br>
/// <strong><em>Different value types:</em></strong> `lhs.type() > rhs.type()`
/// \returns \conditional_return{Same value types}
/// `lhs.get() > rhs.get()`
/// \conditional_return{Different value types}
/// `lhs.type() > rhs.type()`
template <typename T>
[[nodiscard]]
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 rhs The RHS toml::value.
///
/// \returns <strong><em>Same value types:</em></strong> `lhs.get() >= rhs.get()` <br>
/// <strong><em>Different value types:</em></strong> `lhs.type() >= rhs.type()`
/// \returns \conditional_return{Same value types}
/// `lhs.get() >= rhs.get()`
/// \conditional_return{Different value types}
/// `lhs.type() >= rhs.type()`
template <typename T>
[[nodiscard]]
friend bool operator >= (const value& lhs, const value<T>& rhs) noexcept
@ -572,14 +609,17 @@ TOML_NAMESPACE_START
else
return impl::node_type_of<value_type> >= impl::node_type_of<T>;
}
/// @}
};
/// \cond
template <typename T>
value(T) -> value<impl::native_type_of<impl::remove_cvref_t<T>>>;
#ifndef DOXYGEN
TOML_PUSH_WARNINGS
TOML_DISABLE_INIT_WARNINGS
TOML_DISABLE_SWITCH_WARNINGS
TOML_PUSH_WARNINGS;
TOML_DISABLE_INIT_WARNINGS;
TOML_DISABLE_SWITCH_WARNINGS;
#if !TOML_HEADER_ONLY
extern template class TOML_API value<std::string>;
@ -924,9 +964,9 @@ TOML_NAMESPACE_START
#endif // !TOML_HEADER_ONLY
TOML_POP_WARNINGS // TOML_DISABLE_INIT_WARNINGS, TOML_DISABLE_SWITCH_WARNINGS
#endif // !DOXYGEN
TOML_POP_WARNINGS; // TOML_DISABLE_INIT_WARNINGS, TOML_DISABLE_SWITCH_WARNINGS
/// \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_subproject = meson.is_subproject()
has_exceptions = get_option('cpp_eh') != 'none'
include_dirs = include_directories('include', 'extern')
include_dirs = include_directories('include', 'external')
overrides = []
additional_arguments = []
@ -62,6 +62,8 @@ message(['has_exceptions', has_exceptions])
if is_gcc or is_clang
add_project_arguments(
'-march=native',
'-fvisibility=hidden',
'-fvisibility-inlines-hidden',
language : 'cpp'
)
if is_release
@ -70,6 +72,7 @@ if is_gcc or is_clang
'-ffunction-sections',
'-Wl,--gc-sections',
'-Wl,-s',
'-mfma',
language : 'cpp'
)
endif
@ -483,8 +486,8 @@ endif
build_tests = get_option('build_tests') and not is_subproject
if build_tests
run_command('git', 'submodule', 'update', '--init', 'extern/Catch2')
run_command('git', 'submodule', 'update', '--init', 'extern/tloptional')
run_command('git', 'submodule', 'update', '--init', '--depth', '1', 'external/Catch2')
run_command('git', 'submodule', 'update', '--init', '--depth', '1', 'external/tloptional')
subdir('tests')
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>)
#include <Catch2/single_include/catch2/catch.hpp>
#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
#ifdef __clang__

View File

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

View File

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

View File

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

View File

@ -8,7 +8,7 @@
#include "tests.h"
using namespace toml::impl;
TOML_DISABLE_WARNINGS // unused variable spam
TOML_DISABLE_WARNINGS; // unused variable spam
namespace
{
@ -265,7 +265,7 @@ smooth = true)"sv;
static constexpr auto spec_time_1 = R"(lt1 = 07:32:00)"sv;
}
TOML_ENABLE_WARNINGS
TOML_ENABLE_WARNINGS;
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"
#ifdef _WIN32
TOML_DISABLE_WARNINGS
TOML_DISABLE_WARNINGS;
#include <windows.h>
TOML_ENABLE_WARNINGS
TOML_ENABLE_WARNINGS;
#endif
TOML_DISABLE_SPAM_WARNINGS
TOML_DISABLE_SPAM_WARNINGS;
template <typename T>
static constexpr T one = static_cast<T>(1);

View File

@ -5,8 +5,8 @@
#include "tests.h"
TOML_PUSH_WARNINGS
TOML_DISABLE_INIT_WARNINGS
TOML_PUSH_WARNINGS;
TOML_DISABLE_INIT_WARNINGS;
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 1"sv);
}
TOML_POP_WARNINGS

View File

@ -5,8 +5,8 @@
#include "tests.h"
TOML_PUSH_WARNINGS
TOML_DISABLE_INIT_WARNINGS
TOML_PUSH_WARNINGS;
TOML_DISABLE_INIT_WARNINGS;
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
#endif
TOML_DISABLE_ARITHMETIC_WARNINGS
TOML_DISABLE_ARITHMETIC_WARNINGS;
TOML_DISABLE_WARNINGS
TOML_DISABLE_WARNINGS;
#include "catch2.h"
#include <sstream>
namespace toml {}
using namespace Catch::literals;
using namespace toml;
TOML_ENABLE_WARNINGS
TOML_ENABLE_WARNINGS;
#define FILE_LINE_ARGS std::string_view{ __FILE__ }, __LINE__
#define BOM_PREFIX "\xEF\xBB\xBF"

View File

@ -19,7 +19,7 @@
#if __has_include(<tloptional/include/tl/optional.hpp>)
#include <tloptional/include/tl/optional.hpp>
#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
#ifdef __clang__

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

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