mirror of
https://github.com/marzer/tomlplusplus.git
synced 2024-11-19 20:14:35 +00:00
fixed some _Float16
detection issues
also: - fixed a few minor issues with tests - removed `__fp16` support (it was always broken)
This commit is contained in:
parent
12f9c67bd7
commit
c8780a5b8e
2
.github/workflows/ci.yaml
vendored
2
.github/workflows/ci.yaml
vendored
@ -132,7 +132,7 @@ jobs:
|
|||||||
steps:
|
steps:
|
||||||
- name: Install dependencies
|
- name: Install dependencies
|
||||||
run: |
|
run: |
|
||||||
python3 -m pip install -U pip==21.3.1
|
python3 -m pip install -U pip
|
||||||
pip3 install meson ninja
|
pip3 install meson ninja
|
||||||
|
|
||||||
- uses: actions/checkout@v3
|
- uses: actions/checkout@v3
|
||||||
|
2
.github/workflows/gh-pages.yaml
vendored
2
.github/workflows/gh-pages.yaml
vendored
@ -29,7 +29,7 @@ jobs:
|
|||||||
run: |
|
run: |
|
||||||
apt -y update
|
apt -y update
|
||||||
apt -y install --no-install-recommends git python3 python3-pip doxygen
|
apt -y install --no-install-recommends git python3 python3-pip doxygen
|
||||||
pip3 install --upgrade --requirement tools/requirements.txt
|
pip3 install --upgrade poxy
|
||||||
|
|
||||||
- name: Generate docs
|
- name: Generate docs
|
||||||
run: |
|
run: |
|
||||||
|
@ -26,6 +26,8 @@ template:
|
|||||||
#### Fixes:
|
#### Fixes:
|
||||||
|
|
||||||
- fixed null pointer dereference in parser when exceptions are disabled (#169) (@ncaklovic)
|
- fixed null pointer dereference in parser when exceptions are disabled (#169) (@ncaklovic)
|
||||||
|
- fixed spurious warnings in MSVC 19.34
|
||||||
|
- fixed some `_Float16` detection issues
|
||||||
|
|
||||||
<br><br>
|
<br><br>
|
||||||
|
|
||||||
|
@ -1,5 +1,7 @@
|
|||||||
# this is a config file for Poxy - a Doxygen + m.css front-end written in Python.
|
# this is a config file for Poxy - a Doxygen + m.css front-end written in Python.
|
||||||
# https://github.com/marzer/poxy
|
# https://github.com/marzer/poxy
|
||||||
|
#
|
||||||
|
# config reference: https://github.com/marzer/poxy/wiki/Configuration-options
|
||||||
|
|
||||||
name = 'toml++'
|
name = 'toml++'
|
||||||
author = 'Mark Gillard'
|
author = 'Mark Gillard'
|
||||||
|
@ -625,11 +625,6 @@ TOML_IMPL_NAMESPACE_START
|
|||||||
template <typename T>
|
template <typename T>
|
||||||
struct float_traits : float_traits_base<T, std::numeric_limits<T>::digits, std::numeric_limits<T>::digits10>
|
struct float_traits : float_traits_base<T, std::numeric_limits<T>::digits, std::numeric_limits<T>::digits10>
|
||||||
{};
|
{};
|
||||||
#ifdef TOML_FP16
|
|
||||||
template <>
|
|
||||||
struct float_traits<TOML_FP16> : float_traits_base<TOML_FP16, __FLT16_MANT_DIG__, __FLT16_DIG__>
|
|
||||||
{};
|
|
||||||
#endif
|
|
||||||
#ifdef TOML_FLOAT16
|
#ifdef TOML_FLOAT16
|
||||||
template <>
|
template <>
|
||||||
struct float_traits<TOML_FLOAT16> : float_traits_base<TOML_FLOAT16, __FLT16_MANT_DIG__, __FLT16_DIG__>
|
struct float_traits<TOML_FLOAT16> : float_traits_base<TOML_FLOAT16, __FLT16_MANT_DIG__, __FLT16_DIG__>
|
||||||
@ -651,11 +646,6 @@ TOML_IMPL_NAMESPACE_START
|
|||||||
template <>
|
template <>
|
||||||
struct value_traits<long double> : float_traits<long double>
|
struct value_traits<long double> : float_traits<long double>
|
||||||
{};
|
{};
|
||||||
#ifdef TOML_FP16
|
|
||||||
template <>
|
|
||||||
struct value_traits<TOML_FP16> : float_traits<TOML_FP16>
|
|
||||||
{};
|
|
||||||
#endif
|
|
||||||
#ifdef TOML_FLOAT16
|
#ifdef TOML_FLOAT16
|
||||||
template <>
|
template <>
|
||||||
struct value_traits<TOML_FLOAT16> : float_traits<TOML_FLOAT16>
|
struct value_traits<TOML_FLOAT16> : float_traits<TOML_FLOAT16>
|
||||||
|
@ -31,7 +31,7 @@
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
//#=====================================================================================================================
|
//#=====================================================================================================================
|
||||||
//# COMPILER/OS/ARCH DETECTION
|
//# COMPILER / OS
|
||||||
//#=====================================================================================================================
|
//#=====================================================================================================================
|
||||||
|
|
||||||
#ifdef __clang__
|
#ifdef __clang__
|
||||||
@ -75,11 +75,46 @@
|
|||||||
#else
|
#else
|
||||||
#define TOML_INTELLISENSE 0
|
#define TOML_INTELLISENSE 0
|
||||||
#endif
|
#endif
|
||||||
#if defined(__aarch64__) || defined(__ARM_ARCH_ISA_A64) || defined(_M_ARM64) || defined(__ARM_64BIT_STATE) \
|
|
||||||
|| defined(__arm__) || defined(_M_ARM) || defined(__ARM_32BIT_STATE)
|
//#=====================================================================================================================
|
||||||
#define TOML_ARM 1
|
//# ARCHITECTURE
|
||||||
|
//#=====================================================================================================================
|
||||||
|
|
||||||
|
// IA64
|
||||||
|
#if defined(__ia64__) || defined(__ia64) || defined(_IA64) || defined(__IA64__) || defined(_M_IA64)
|
||||||
|
#define TOML_ARCH_ITANIUM 1
|
||||||
#else
|
#else
|
||||||
#define TOML_ARM 0
|
#define TOML_ARCH_ITANIUM 0
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// AMD64
|
||||||
|
#if defined(__amd64__) || defined(__amd64) || defined(__x86_64__) || defined(__x86_64) || defined(_M_AMD64)
|
||||||
|
#define TOML_ARCH_AMD64 1
|
||||||
|
#else
|
||||||
|
#define TOML_ARCH_AMD64 0
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// 32-bit x86
|
||||||
|
#if defined(__i386__) || defined(_M_IX86)
|
||||||
|
#define TOML_ARCH_X86 1
|
||||||
|
#else
|
||||||
|
#define TOML_ARCH_X86 0
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// ARM
|
||||||
|
#if defined(__aarch64__) || defined(__ARM_ARCH_ISA_A64) || defined(_M_ARM64) || defined(__ARM_64BIT_STATE) \
|
||||||
|
|| defined(_M_ARM64EC)
|
||||||
|
#define TOML_ARCH_ARM32 0
|
||||||
|
#define TOML_ARCH_ARM64 1
|
||||||
|
#define TOML_ARCH_ARM 1
|
||||||
|
#elif defined(__arm__) || defined(_M_ARM) || defined(__ARM_32BIT_STATE)
|
||||||
|
#define TOML_ARCH_ARM32 1
|
||||||
|
#define TOML_ARCH_ARM64 0
|
||||||
|
#define TOML_ARCH_ARM 1
|
||||||
|
#else
|
||||||
|
#define TOML_ARCH_ARM32 0
|
||||||
|
#define TOML_ARCH_ARM64 0
|
||||||
|
#define TOML_ARCH_ARM 0
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
//#=====================================================================================================================
|
//#=====================================================================================================================
|
||||||
@ -1016,40 +1051,62 @@ TOML_ENABLE_WARNINGS;
|
|||||||
//# }}
|
//# }}
|
||||||
|
|
||||||
//#=====================================================================================================================
|
//#=====================================================================================================================
|
||||||
//# EXTENDED INT AND FLOAT TYPES
|
//# FLOAT16
|
||||||
//#=====================================================================================================================
|
//#=====================================================================================================================
|
||||||
// clang-format off
|
|
||||||
|
|
||||||
#ifdef __FLT16_MANT_DIG__
|
#if TOML_CLANG
|
||||||
#if __FLT_RADIX__ == 2 \
|
//# {{
|
||||||
&& __FLT16_MANT_DIG__ == 11 \
|
// Excerpt from https://clang.llvm.org/docs/LanguageExtensions.html:
|
||||||
&& __FLT16_DIG__ == 3 \
|
//
|
||||||
&& __FLT16_MIN_EXP__ == -13 \
|
// _Float16 is currently only supported on the following targets,
|
||||||
&& __FLT16_MIN_10_EXP__ == -4 \
|
// with further targets pending ABI standardization:
|
||||||
&& __FLT16_MAX_EXP__ == 16 \
|
//
|
||||||
&& __FLT16_MAX_10_EXP__ == 4
|
// 32-bit ARM
|
||||||
#if TOML_ARM && (TOML_GCC || TOML_CLANG)
|
// 64-bit ARM (AArch64)
|
||||||
#define TOML_FP16 __fp16
|
// AMDGPU
|
||||||
#endif
|
// SPIR
|
||||||
#if TOML_ARM && TOML_CLANG // not present in g++
|
// X86 as long as SSE2 is available
|
||||||
#define TOML_FLOAT16 _Float16
|
//
|
||||||
#endif
|
//# }}
|
||||||
#endif
|
#if (TOML_ARCH_ARM || TOML_ARCH_X86 || TOML_ARCH_AMD64) && defined(__FLT16_MANT_DIG__)
|
||||||
|
#define TOML_FLOAT16 _Float16
|
||||||
|
#endif
|
||||||
|
#elif TOML_GCC
|
||||||
|
//# {{
|
||||||
|
// Excerpt from https://gcc.gnu.org/onlinedocs/gcc/Floating-Types.html:
|
||||||
|
//
|
||||||
|
// The _Float16 type is supported on AArch64 systems by default, on ARM systems when the IEEE format for
|
||||||
|
// 16-bit floating-point types is selected with -mfp16-format=ieee and,
|
||||||
|
// for both C and C++, on x86 systems with SSE2 enabled.
|
||||||
|
//
|
||||||
|
// *** except: the bit about x86 seems incorrect?? ***
|
||||||
|
//# }}
|
||||||
|
/*
|
||||||
|
|
||||||
|
*/
|
||||||
|
#if (TOML_ARCH_ARM /*|| TOML_ARCH_X86 || TOML_ARCH_AMD64*/) && defined(__FLT16_MANT_DIG__)
|
||||||
|
#define TOML_FLOAT16 _Float16
|
||||||
|
#endif
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if defined(__SIZEOF_FLOAT128__) \
|
//#=====================================================================================================================
|
||||||
&& defined(__FLT128_MANT_DIG__) \
|
//# FLOAT128
|
||||||
&& defined(__LDBL_MANT_DIG__) \
|
//#=====================================================================================================================
|
||||||
|
|
||||||
|
#if defined(__SIZEOF_FLOAT128__) && defined(__FLT128_MANT_DIG__) && defined(__LDBL_MANT_DIG__) \
|
||||||
&& __FLT128_MANT_DIG__ > __LDBL_MANT_DIG__
|
&& __FLT128_MANT_DIG__ > __LDBL_MANT_DIG__
|
||||||
#define TOML_FLOAT128 __float128
|
#define TOML_FLOAT128 __float128
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
//#=====================================================================================================================
|
||||||
|
//# INT128
|
||||||
|
//#=====================================================================================================================
|
||||||
|
|
||||||
#ifdef __SIZEOF_INT128__
|
#ifdef __SIZEOF_INT128__
|
||||||
#define TOML_INT128 __int128_t
|
#define TOML_INT128 __int128_t
|
||||||
#define TOML_UINT128 __uint128_t
|
#define TOML_UINT128 __uint128_t
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
// clang-format on
|
|
||||||
//#====================================================================================================================
|
//#====================================================================================================================
|
||||||
//# VERSIONS AND NAMESPACES
|
//# VERSIONS AND NAMESPACES
|
||||||
//#====================================================================================================================
|
//#====================================================================================================================
|
||||||
|
@ -90,7 +90,12 @@ TOML_POP_WARNINGS;
|
|||||||
#undef TOML_ANON_NAMESPACE
|
#undef TOML_ANON_NAMESPACE
|
||||||
#undef TOML_ANON_NAMESPACE_END
|
#undef TOML_ANON_NAMESPACE_END
|
||||||
#undef TOML_ANON_NAMESPACE_START
|
#undef TOML_ANON_NAMESPACE_START
|
||||||
#undef TOML_ARM
|
#undef TOML_ARCH_ARM
|
||||||
|
#undef TOML_ARCH_AMD64
|
||||||
|
#undef TOML_ARCH_ARM32
|
||||||
|
#undef TOML_ARCH_ARM64
|
||||||
|
#undef TOML_ARCH_ITANIUM
|
||||||
|
#undef TOML_ARCH_X86
|
||||||
#undef TOML_ASSERT
|
#undef TOML_ASSERT
|
||||||
#undef TOML_ASSERT_ASSUME
|
#undef TOML_ASSERT_ASSUME
|
||||||
#undef TOML_ASSUME
|
#undef TOML_ASSUME
|
||||||
@ -127,7 +132,6 @@ TOML_POP_WARNINGS;
|
|||||||
#undef TOML_FLOAT_CHARCONV
|
#undef TOML_FLOAT_CHARCONV
|
||||||
#undef TOML_FLOAT128
|
#undef TOML_FLOAT128
|
||||||
#undef TOML_FLOAT16
|
#undef TOML_FLOAT16
|
||||||
#undef TOML_FP16
|
|
||||||
#undef TOML_GCC
|
#undef TOML_GCC
|
||||||
#undef TOML_HAS_ATTR
|
#undef TOML_HAS_ATTR
|
||||||
#undef TOML_HAS_BUILTIN
|
#undef TOML_HAS_BUILTIN
|
||||||
|
30
meson.build
30
meson.build
@ -250,9 +250,6 @@ compiler_supports_char8_args = []
|
|||||||
if is_gcc or is_clang
|
if is_gcc or is_clang
|
||||||
compiler_supports_char8_args += '-fchar8_t'
|
compiler_supports_char8_args += '-fchar8_t'
|
||||||
endif
|
endif
|
||||||
compiler_supports_char8_args_private = []
|
|
||||||
compiler_supports_char8_args_private += compiler_supports_cpp20_args
|
|
||||||
compiler_supports_char8_args_private += compiler_supports_char8_args
|
|
||||||
compiler_supports_char8 = compiler_supports_cpp20 and compiler.links('''
|
compiler_supports_char8 = compiler_supports_cpp20 and compiler.links('''
|
||||||
#include <version>
|
#include <version>
|
||||||
#include <string_view>
|
#include <string_view>
|
||||||
@ -278,7 +275,7 @@ compiler_supports_char8 = compiler_supports_cpp20 and compiler.links('''
|
|||||||
}
|
}
|
||||||
''',
|
''',
|
||||||
name: 'supports char8_t',
|
name: 'supports char8_t',
|
||||||
args: compiler_supports_char8_args_private
|
args: [ compiler_supports_cpp20_args, compiler_supports_char8_args ]
|
||||||
)
|
)
|
||||||
|
|
||||||
#######################################################################################################################
|
#######################################################################################################################
|
||||||
@ -325,27 +322,6 @@ compiler_supports_consteval_properly = compiler_supports_consteval and not compi
|
|||||||
# __fp16 and _Float16 checks
|
# __fp16 and _Float16 checks
|
||||||
#######################################################################################################################
|
#######################################################################################################################
|
||||||
|
|
||||||
float_16_preprocessor_single_check_template = '''
|
|
||||||
#ifndef @0@
|
|
||||||
#error @0@ wasn't defined!
|
|
||||||
#else
|
|
||||||
#pragma message("@0@: " MAKE_STRING(@0@))
|
|
||||||
#endif
|
|
||||||
#if @0@ != @1@
|
|
||||||
#error @0@ was not @1@!
|
|
||||||
#endif
|
|
||||||
'''
|
|
||||||
float_16_preprocessor_checks = '''
|
|
||||||
#define MAKE_STRING(s) MAKE_STRING_1(s)
|
|
||||||
#define MAKE_STRING_1(s) #s
|
|
||||||
''' + float_16_preprocessor_single_check_template.format('__FLT_RADIX__', '2') \
|
|
||||||
+ float_16_preprocessor_single_check_template.format('__FLT16_MANT_DIG__', '11') \
|
|
||||||
+ float_16_preprocessor_single_check_template.format('__FLT16_DIG__', '3') \
|
|
||||||
+ float_16_preprocessor_single_check_template.format('__FLT16_MIN_EXP__', '-13') \
|
|
||||||
+ float_16_preprocessor_single_check_template.format('__FLT16_MIN_10_EXP__', '-4') \
|
|
||||||
+ float_16_preprocessor_single_check_template.format('__FLT16_MAX_EXP__', '16') \
|
|
||||||
+ float_16_preprocessor_single_check_template.format('__FLT16_MAX_10_EXP__', '4')
|
|
||||||
|
|
||||||
compiler_supports_float16_args = []
|
compiler_supports_float16_args = []
|
||||||
if is_gcc
|
if is_gcc
|
||||||
compiler_supports_float16_args += '-mfp16-format=ieee'
|
compiler_supports_float16_args += '-mfp16-format=ieee'
|
||||||
@ -364,8 +340,6 @@ compiler_supports_fp16 = compiler.links('''
|
|||||||
args: compiler_supports_float16_args
|
args: compiler_supports_float16_args
|
||||||
)
|
)
|
||||||
compiler_supports_float16 = compiler.links('''
|
compiler_supports_float16 = compiler.links('''
|
||||||
@0@
|
|
||||||
|
|
||||||
int main()
|
int main()
|
||||||
{
|
{
|
||||||
static_assert(sizeof(_Float16) == 2);
|
static_assert(sizeof(_Float16) == 2);
|
||||||
@ -374,7 +348,7 @@ compiler_supports_float16 = compiler.links('''
|
|||||||
const auto f3 = static_cast<_Float16>(0.2L);
|
const auto f3 = static_cast<_Float16>(0.2L);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
'''.format(float_16_preprocessor_checks),
|
''',
|
||||||
name: 'supports _Float16',
|
name: 'supports _Float16',
|
||||||
args: compiler_supports_float16_args
|
args: compiler_supports_float16_args
|
||||||
)
|
)
|
||||||
|
@ -430,16 +430,16 @@ zyx = 42)"sv;
|
|||||||
zyx = 42)"sv;
|
zyx = 42)"sv;
|
||||||
static constexpr auto table_quoted_no_close = R"(["where will it end]
|
static constexpr auto table_quoted_no_close = R"(["where will it end]
|
||||||
name = value)"sv;
|
name = value)"sv;
|
||||||
static constexpr auto table_redefine = R"(# Define b as int, and try to use it as a table: error
|
static constexpr auto table_redefine = R"(# Define b as int, and try to use it as a table: error
|
||||||
[a]
|
[a]
|
||||||
b = 1
|
b = 1
|
||||||
|
|
||||||
[a.b]
|
[a.b]
|
||||||
c = 2)"sv;
|
c = 2)"sv;
|
||||||
static constexpr auto table_rrbrace = R"([[table] ])"sv;
|
static constexpr auto table_rrbrace = R"([[table] ])"sv;
|
||||||
static constexpr auto table_text_after_table = R"([error] this shouldn't be here)"sv;
|
static constexpr auto table_text_after_table = R"([error] this shouldn't be here)"sv;
|
||||||
static constexpr auto table_whitespace = R"([invalid key])"sv;
|
static constexpr auto table_whitespace = R"([invalid key])"sv;
|
||||||
static constexpr auto table_with_pound = R"([key#group]
|
static constexpr auto table_with_pound = R"([key#group]
|
||||||
answer = 42)"sv;
|
answer = 42)"sv;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -64,9 +64,6 @@ namespace toml
|
|||||||
CHECK_CAN_REPRESENT_NATIVE(TOML_INT128, true);
|
CHECK_CAN_REPRESENT_NATIVE(TOML_INT128, true);
|
||||||
CHECK_CAN_REPRESENT_NATIVE(TOML_UINT128, false);
|
CHECK_CAN_REPRESENT_NATIVE(TOML_UINT128, false);
|
||||||
#endif
|
#endif
|
||||||
#ifdef TOML_FP16
|
|
||||||
CHECK_CAN_REPRESENT_NATIVE(TOML_FP16, false);
|
|
||||||
#endif
|
|
||||||
#ifdef TOML_FLOAT16
|
#ifdef TOML_FLOAT16
|
||||||
CHECK_CAN_REPRESENT_NATIVE(TOML_FLOAT16, false);
|
CHECK_CAN_REPRESENT_NATIVE(TOML_FLOAT16, false);
|
||||||
#endif
|
#endif
|
||||||
@ -292,9 +289,6 @@ namespace toml
|
|||||||
CHECK_INSERTED_AS(uint32_t, value<int64_t>);
|
CHECK_INSERTED_AS(uint32_t, value<int64_t>);
|
||||||
CHECK_INSERTED_AS(float, value<double>);
|
CHECK_INSERTED_AS(float, value<double>);
|
||||||
CHECK_INSERTED_AS(double, value<double>);
|
CHECK_INSERTED_AS(double, value<double>);
|
||||||
#ifdef TOML_FP16
|
|
||||||
CHECK_INSERTED_AS(TOML_FP16, value<double>);
|
|
||||||
#endif
|
|
||||||
#ifdef TOML_FLOAT16
|
#ifdef TOML_FLOAT16
|
||||||
CHECK_INSERTED_AS(TOML_FLOAT16, value<double>);
|
CHECK_INSERTED_AS(TOML_FLOAT16, value<double>);
|
||||||
#endif
|
#endif
|
||||||
|
@ -40,10 +40,10 @@ endif
|
|||||||
#######################################################################################################################
|
#######################################################################################################################
|
||||||
|
|
||||||
compiler_supports_fast_math_args = []
|
compiler_supports_fast_math_args = []
|
||||||
if compiler.get_id() == 'gcc' or compiler.get_id() == 'clang'
|
if is_gcc or is_clang
|
||||||
compiler_supports_fast_math_args += '-ffast-math'
|
compiler_supports_fast_math_args += '-ffast-math'
|
||||||
compiler_supports_fast_math_args += '-ffp-contract=fast'
|
compiler_supports_fast_math_args += '-ffp-contract=fast'
|
||||||
elif compiler.get_id() == 'msvc' or compiler.get_id() == 'intel-cl'
|
elif is_msvc or is_icc_cl
|
||||||
compiler_supports_fast_math_args += '/fp:fast'
|
compiler_supports_fast_math_args += '/fp:fast'
|
||||||
endif
|
endif
|
||||||
compiler_supports_fast_math = compiler.links('''
|
compiler_supports_fast_math = compiler.links('''
|
||||||
@ -186,13 +186,8 @@ foreach cpp20 : cpp20_modes
|
|||||||
test_args += compiler_supports_fast_math_args
|
test_args += compiler_supports_fast_math_args
|
||||||
endif
|
endif
|
||||||
|
|
||||||
if compiler_supports_float16 or compiler_supports_fp16
|
if compiler_supports_float16
|
||||||
if compiler_supports_fp16
|
test_args += '-DSHOULD_HAVE_FLOAT16=1'
|
||||||
test_args += '-DSHOULD_HAVE_FP16=1'
|
|
||||||
endif
|
|
||||||
if compiler_supports_float16
|
|
||||||
test_args += '-DSHOULD_HAVE_FLOAT16=1'
|
|
||||||
endif
|
|
||||||
endif
|
endif
|
||||||
if compiler_supports_int128
|
if compiler_supports_int128
|
||||||
test_args += '-DSHOULD_HAVE_INT128=1'
|
test_args += '-DSHOULD_HAVE_INT128=1'
|
||||||
|
@ -11,9 +11,6 @@
|
|||||||
#else
|
#else
|
||||||
#include "../include/toml++/toml.h"
|
#include "../include/toml++/toml.h"
|
||||||
#endif
|
#endif
|
||||||
#if defined(TOML_FP16) ^ SHOULD_HAVE_FP16
|
|
||||||
#error TOML_FP16 was not deduced correctly
|
|
||||||
#endif
|
|
||||||
#if defined(TOML_FLOAT16) ^ SHOULD_HAVE_FLOAT16
|
#if defined(TOML_FLOAT16) ^ SHOULD_HAVE_FLOAT16
|
||||||
#error TOML_FLOAT16 was not deduced correctly
|
#error TOML_FLOAT16 was not deduced correctly
|
||||||
#endif
|
#endif
|
||||||
@ -410,3 +407,20 @@ namespace Catch
|
|||||||
extern template std::string stringify(const node_view<const node>&);
|
extern template std::string stringify(const node_view<const node>&);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if TOML_CPP >= 20 && TOML_CLANG && TOML_CLANG <= 14 // https://github.com/llvm/llvm-project/issues/55560
|
||||||
|
|
||||||
|
TOML_PUSH_WARNINGS;
|
||||||
|
TOML_DISABLE_WARNINGS;
|
||||||
|
|
||||||
|
namespace
|
||||||
|
{
|
||||||
|
[[maybe_unused]] static std::u8string clang_string_workaround(const char8_t* a, const char8_t* b)
|
||||||
|
{
|
||||||
|
return { a, b };
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
TOML_POP_WARNINGS;
|
||||||
|
|
||||||
|
#endif
|
||||||
|
95
toml.hpp
95
toml.hpp
@ -111,11 +111,42 @@
|
|||||||
#else
|
#else
|
||||||
#define TOML_INTELLISENSE 0
|
#define TOML_INTELLISENSE 0
|
||||||
#endif
|
#endif
|
||||||
#if defined(__aarch64__) || defined(__ARM_ARCH_ISA_A64) || defined(_M_ARM64) || defined(__ARM_64BIT_STATE) \
|
|
||||||
|| defined(__arm__) || defined(_M_ARM) || defined(__ARM_32BIT_STATE)
|
// IA64
|
||||||
#define TOML_ARM 1
|
#if defined(__ia64__) || defined(__ia64) || defined(_IA64) || defined(__IA64__) || defined(_M_IA64)
|
||||||
|
#define TOML_ARCH_ITANIUM 1
|
||||||
#else
|
#else
|
||||||
#define TOML_ARM 0
|
#define TOML_ARCH_ITANIUM 0
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// AMD64
|
||||||
|
#if defined(__amd64__) || defined(__amd64) || defined(__x86_64__) || defined(__x86_64) || defined(_M_AMD64)
|
||||||
|
#define TOML_ARCH_AMD64 1
|
||||||
|
#else
|
||||||
|
#define TOML_ARCH_AMD64 0
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// 32-bit x86
|
||||||
|
#if defined(__i386__) || defined(_M_IX86)
|
||||||
|
#define TOML_ARCH_X86 1
|
||||||
|
#else
|
||||||
|
#define TOML_ARCH_X86 0
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// ARM
|
||||||
|
#if defined(__aarch64__) || defined(__ARM_ARCH_ISA_A64) || defined(_M_ARM64) || defined(__ARM_64BIT_STATE) \
|
||||||
|
|| defined(_M_ARM64EC)
|
||||||
|
#define TOML_ARCH_ARM32 0
|
||||||
|
#define TOML_ARCH_ARM64 1
|
||||||
|
#define TOML_ARCH_ARM 1
|
||||||
|
#elif defined(__arm__) || defined(_M_ARM) || defined(__ARM_32BIT_STATE)
|
||||||
|
#define TOML_ARCH_ARM32 1
|
||||||
|
#define TOML_ARCH_ARM64 0
|
||||||
|
#define TOML_ARCH_ARM 1
|
||||||
|
#else
|
||||||
|
#define TOML_ARCH_ARM32 0
|
||||||
|
#define TOML_ARCH_ARM64 0
|
||||||
|
#define TOML_ARCH_ARM 0
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
// TOML_HAS_INCLUDE
|
// TOML_HAS_INCLUDE
|
||||||
@ -898,39 +929,29 @@ TOML_ENABLE_WARNINGS;
|
|||||||
TOML_REQUIRES(condition)
|
TOML_REQUIRES(condition)
|
||||||
#define TOML_HIDDEN_CONSTRAINT(condition, ...) TOML_CONSTRAINED_TEMPLATE(condition, __VA_ARGS__)
|
#define TOML_HIDDEN_CONSTRAINT(condition, ...) TOML_CONSTRAINED_TEMPLATE(condition, __VA_ARGS__)
|
||||||
|
|
||||||
// clang-format off
|
#if TOML_CLANG
|
||||||
|
#if (TOML_ARCH_ARM || TOML_ARCH_X86 || TOML_ARCH_AMD64) && defined(__FLT16_MANT_DIG__)
|
||||||
|
#define TOML_FLOAT16 _Float16
|
||||||
|
#endif
|
||||||
|
#elif TOML_GCC
|
||||||
|
/*
|
||||||
|
|
||||||
#ifdef __FLT16_MANT_DIG__
|
*/
|
||||||
#if __FLT_RADIX__ == 2 \
|
#if (TOML_ARCH_ARM /*|| TOML_ARCH_X86 || TOML_ARCH_AMD64*/) && defined(__FLT16_MANT_DIG__)
|
||||||
&& __FLT16_MANT_DIG__ == 11 \
|
#define TOML_FLOAT16 _Float16
|
||||||
&& __FLT16_DIG__ == 3 \
|
#endif
|
||||||
&& __FLT16_MIN_EXP__ == -13 \
|
|
||||||
&& __FLT16_MIN_10_EXP__ == -4 \
|
|
||||||
&& __FLT16_MAX_EXP__ == 16 \
|
|
||||||
&& __FLT16_MAX_10_EXP__ == 4
|
|
||||||
#if TOML_ARM && (TOML_GCC || TOML_CLANG)
|
|
||||||
#define TOML_FP16 __fp16
|
|
||||||
#endif
|
|
||||||
#if TOML_ARM && TOML_CLANG // not present in g++
|
|
||||||
#define TOML_FLOAT16 _Float16
|
|
||||||
#endif
|
|
||||||
#endif
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if defined(__SIZEOF_FLOAT128__) \
|
#if defined(__SIZEOF_FLOAT128__) && defined(__FLT128_MANT_DIG__) && defined(__LDBL_MANT_DIG__) \
|
||||||
&& defined(__FLT128_MANT_DIG__) \
|
|
||||||
&& defined(__LDBL_MANT_DIG__) \
|
|
||||||
&& __FLT128_MANT_DIG__ > __LDBL_MANT_DIG__
|
&& __FLT128_MANT_DIG__ > __LDBL_MANT_DIG__
|
||||||
#define TOML_FLOAT128 __float128
|
#define TOML_FLOAT128 __float128
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef __SIZEOF_INT128__
|
#ifdef __SIZEOF_INT128__
|
||||||
#define TOML_INT128 __int128_t
|
#define TOML_INT128 __int128_t
|
||||||
#define TOML_UINT128 __uint128_t
|
#define TOML_UINT128 __uint128_t
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
// clang-format on
|
|
||||||
|
|
||||||
// clang-format off
|
// clang-format off
|
||||||
|
|
||||||
//******** impl/version.h ********************************************************************************************
|
//******** impl/version.h ********************************************************************************************
|
||||||
@ -1678,11 +1699,6 @@ TOML_IMPL_NAMESPACE_START
|
|||||||
template <typename T>
|
template <typename T>
|
||||||
struct float_traits : float_traits_base<T, std::numeric_limits<T>::digits, std::numeric_limits<T>::digits10>
|
struct float_traits : float_traits_base<T, std::numeric_limits<T>::digits, std::numeric_limits<T>::digits10>
|
||||||
{};
|
{};
|
||||||
#ifdef TOML_FP16
|
|
||||||
template <>
|
|
||||||
struct float_traits<TOML_FP16> : float_traits_base<TOML_FP16, __FLT16_MANT_DIG__, __FLT16_DIG__>
|
|
||||||
{};
|
|
||||||
#endif
|
|
||||||
#ifdef TOML_FLOAT16
|
#ifdef TOML_FLOAT16
|
||||||
template <>
|
template <>
|
||||||
struct float_traits<TOML_FLOAT16> : float_traits_base<TOML_FLOAT16, __FLT16_MANT_DIG__, __FLT16_DIG__>
|
struct float_traits<TOML_FLOAT16> : float_traits_base<TOML_FLOAT16, __FLT16_MANT_DIG__, __FLT16_DIG__>
|
||||||
@ -1704,11 +1720,6 @@ TOML_IMPL_NAMESPACE_START
|
|||||||
template <>
|
template <>
|
||||||
struct value_traits<long double> : float_traits<long double>
|
struct value_traits<long double> : float_traits<long double>
|
||||||
{};
|
{};
|
||||||
#ifdef TOML_FP16
|
|
||||||
template <>
|
|
||||||
struct value_traits<TOML_FP16> : float_traits<TOML_FP16>
|
|
||||||
{};
|
|
||||||
#endif
|
|
||||||
#ifdef TOML_FLOAT16
|
#ifdef TOML_FLOAT16
|
||||||
template <>
|
template <>
|
||||||
struct value_traits<TOML_FLOAT16> : float_traits<TOML_FLOAT16>
|
struct value_traits<TOML_FLOAT16> : float_traits<TOML_FLOAT16>
|
||||||
@ -17056,7 +17067,12 @@ TOML_POP_WARNINGS;
|
|||||||
#undef TOML_ANON_NAMESPACE
|
#undef TOML_ANON_NAMESPACE
|
||||||
#undef TOML_ANON_NAMESPACE_END
|
#undef TOML_ANON_NAMESPACE_END
|
||||||
#undef TOML_ANON_NAMESPACE_START
|
#undef TOML_ANON_NAMESPACE_START
|
||||||
#undef TOML_ARM
|
#undef TOML_ARCH_ARM
|
||||||
|
#undef TOML_ARCH_AMD64
|
||||||
|
#undef TOML_ARCH_ARM32
|
||||||
|
#undef TOML_ARCH_ARM64
|
||||||
|
#undef TOML_ARCH_ITANIUM
|
||||||
|
#undef TOML_ARCH_X86
|
||||||
#undef TOML_ASSERT
|
#undef TOML_ASSERT
|
||||||
#undef TOML_ASSERT_ASSUME
|
#undef TOML_ASSERT_ASSUME
|
||||||
#undef TOML_ASSUME
|
#undef TOML_ASSUME
|
||||||
@ -17093,7 +17109,6 @@ TOML_POP_WARNINGS;
|
|||||||
#undef TOML_FLOAT_CHARCONV
|
#undef TOML_FLOAT_CHARCONV
|
||||||
#undef TOML_FLOAT128
|
#undef TOML_FLOAT128
|
||||||
#undef TOML_FLOAT16
|
#undef TOML_FLOAT16
|
||||||
#undef TOML_FP16
|
|
||||||
#undef TOML_GCC
|
#undef TOML_GCC
|
||||||
#undef TOML_HAS_ATTR
|
#undef TOML_HAS_ATTR
|
||||||
#undef TOML_HAS_BUILTIN
|
#undef TOML_HAS_BUILTIN
|
||||||
|
28
vendor/catch.hpp
vendored
28
vendor/catch.hpp
vendored
@ -1,6 +1,6 @@
|
|||||||
/*
|
/*
|
||||||
* Catch v2.13.9
|
* Catch v2.13.10
|
||||||
* Generated: 2022-04-12 22:37:23.260201
|
* Generated: 2022-10-16 11:01:23.452308
|
||||||
* ----------------------------------------------------------
|
* ----------------------------------------------------------
|
||||||
* This file has been merged from multiple headers. Please don't edit it directly
|
* This file has been merged from multiple headers. Please don't edit it directly
|
||||||
* Copyright (c) 2022 Two Blue Cubes Ltd. All rights reserved.
|
* Copyright (c) 2022 Two Blue Cubes Ltd. All rights reserved.
|
||||||
@ -15,7 +15,7 @@
|
|||||||
|
|
||||||
#define CATCH_VERSION_MAJOR 2
|
#define CATCH_VERSION_MAJOR 2
|
||||||
#define CATCH_VERSION_MINOR 13
|
#define CATCH_VERSION_MINOR 13
|
||||||
#define CATCH_VERSION_PATCH 9
|
#define CATCH_VERSION_PATCH 10
|
||||||
|
|
||||||
#ifdef __clang__
|
#ifdef __clang__
|
||||||
# pragma clang system_header
|
# pragma clang system_header
|
||||||
@ -7395,8 +7395,6 @@ namespace Catch {
|
|||||||
template <typename T, bool Destruct>
|
template <typename T, bool Destruct>
|
||||||
struct ObjectStorage
|
struct ObjectStorage
|
||||||
{
|
{
|
||||||
using TStorage = typename std::aligned_storage<sizeof(T), std::alignment_of<T>::value>::type;
|
|
||||||
|
|
||||||
ObjectStorage() : data() {}
|
ObjectStorage() : data() {}
|
||||||
|
|
||||||
ObjectStorage(const ObjectStorage& other)
|
ObjectStorage(const ObjectStorage& other)
|
||||||
@ -7439,7 +7437,7 @@ namespace Catch {
|
|||||||
return *static_cast<T*>(static_cast<void*>(&data));
|
return *static_cast<T*>(static_cast<void*>(&data));
|
||||||
}
|
}
|
||||||
|
|
||||||
TStorage data;
|
struct { alignas(T) unsigned char data[sizeof(T)]; } data;
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -7949,7 +7947,7 @@ namespace Catch {
|
|||||||
#if defined(__i386__) || defined(__x86_64__)
|
#if defined(__i386__) || defined(__x86_64__)
|
||||||
#define CATCH_TRAP() __asm__("int $3\n" : : ) /* NOLINT */
|
#define CATCH_TRAP() __asm__("int $3\n" : : ) /* NOLINT */
|
||||||
#elif defined(__aarch64__)
|
#elif defined(__aarch64__)
|
||||||
#define CATCH_TRAP() __asm__(".inst 0xd4200000")
|
#define CATCH_TRAP() __asm__(".inst 0xd43e0000")
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#elif defined(CATCH_PLATFORM_IPHONE)
|
#elif defined(CATCH_PLATFORM_IPHONE)
|
||||||
@ -13558,7 +13556,7 @@ namespace Catch {
|
|||||||
|
|
||||||
// Handle list request
|
// Handle list request
|
||||||
if( Option<std::size_t> listed = list( m_config ) )
|
if( Option<std::size_t> listed = list( m_config ) )
|
||||||
return static_cast<int>( *listed );
|
return (std::min) (MaxExitCode, static_cast<int>(*listed));
|
||||||
|
|
||||||
TestGroup tests { m_config };
|
TestGroup tests { m_config };
|
||||||
auto const totals = tests.execute();
|
auto const totals = tests.execute();
|
||||||
@ -15391,7 +15389,7 @@ namespace Catch {
|
|||||||
}
|
}
|
||||||
|
|
||||||
Version const& libraryVersion() {
|
Version const& libraryVersion() {
|
||||||
static Version version( 2, 13, 9, "", 0 );
|
static Version version( 2, 13, 10, "", 0 );
|
||||||
return version;
|
return version;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -17526,12 +17524,20 @@ namespace Catch {
|
|||||||
|
|
||||||
#ifndef __OBJC__
|
#ifndef __OBJC__
|
||||||
|
|
||||||
|
#ifndef CATCH_INTERNAL_CDECL
|
||||||
|
#ifdef _MSC_VER
|
||||||
|
#define CATCH_INTERNAL_CDECL __cdecl
|
||||||
|
#else
|
||||||
|
#define CATCH_INTERNAL_CDECL
|
||||||
|
#endif
|
||||||
|
#endif
|
||||||
|
|
||||||
#if defined(CATCH_CONFIG_WCHAR) && defined(CATCH_PLATFORM_WINDOWS) && defined(_UNICODE) && !defined(DO_NOT_USE_WMAIN)
|
#if defined(CATCH_CONFIG_WCHAR) && defined(CATCH_PLATFORM_WINDOWS) && defined(_UNICODE) && !defined(DO_NOT_USE_WMAIN)
|
||||||
// Standard C/C++ Win32 Unicode wmain entry point
|
// Standard C/C++ Win32 Unicode wmain entry point
|
||||||
extern "C" int wmain (int argc, wchar_t * argv[], wchar_t * []) {
|
extern "C" int CATCH_INTERNAL_CDECL wmain (int argc, wchar_t * argv[], wchar_t * []) {
|
||||||
#else
|
#else
|
||||||
// Standard C/C++ main entry point
|
// Standard C/C++ main entry point
|
||||||
int main (int argc, char * argv[]) {
|
int CATCH_INTERNAL_CDECL main (int argc, char * argv[]) {
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
return Catch::Session().run( argc, argv );
|
return Catch::Session().run( argc, argv );
|
||||||
|
Loading…
Reference in New Issue
Block a user