From 1702a6e043f01bd61b50f22875bb71412120b580 Mon Sep 17 00:00:00 2001 From: John Wellbelove Date: Mon, 26 Jul 2021 17:17:22 +0100 Subject: [PATCH 1/7] Type traits refactor --- .gitignore | 2 + .../ArmTimerCallbacks.uvoptx | 2 +- .../ArmTimerCallbacks.uvprojx | 24 +- .../etl/generators/type_traits_generator.h | 522 +- include/etl/type_traits.h | 631 ++- test/etl_profile.h | 4 - test/runsanitychecks.sh | 84 +- test/runtests.sh | 12 +- test/test_pool.cpp | 21 + test/test_type_traits.cpp | 160 +- test/test_variant_new.cpp | 2 +- test/vs2019/etl.sln | 14 +- test/vs2019/etl.vcxproj | 4408 ++++++++++++----- test/vs2019/etl.vcxproj.filters | 1402 +++--- 14 files changed, 4818 insertions(+), 2470 deletions(-) diff --git a/.gitignore b/.gitignore index 5effe158..870ab075 100644 --- a/.gitignore +++ b/.gitignore @@ -316,3 +316,5 @@ test/vs2019/Debug LLVM test/vs2019/DebugLLVMNoSTL test/vs2019/DebugNoSTL test/vs2022/Debug LLVM +test/vs2019/Debug MSVC - No STL - Built-ins/etl.exe +test/vs2019/Debug-LLVM-NoSTL-Builtins/etl.exe diff --git a/examples/ArmTimerCallbacks - C++/ArmTimerCallbacks.uvoptx b/examples/ArmTimerCallbacks - C++/ArmTimerCallbacks.uvoptx index 52e14341..fb554746 100644 --- a/examples/ArmTimerCallbacks - C++/ArmTimerCallbacks.uvoptx +++ b/examples/ArmTimerCallbacks - C++/ArmTimerCallbacks.uvoptx @@ -103,7 +103,7 @@ 1 0 0 - 5 + 6 diff --git a/examples/ArmTimerCallbacks - C++/ArmTimerCallbacks.uvprojx b/examples/ArmTimerCallbacks - C++/ArmTimerCallbacks.uvprojx index ab543f66..9991280c 100644 --- a/examples/ArmTimerCallbacks - C++/ArmTimerCallbacks.uvprojx +++ b/examples/ArmTimerCallbacks - C++/ArmTimerCallbacks.uvprojx @@ -16,7 +16,7 @@ STM32F401RETx STMicroelectronics - Keil.STM32F4xx_DFP.2.14.0 + Keil.STM32F4xx_DFP.2.15.0 http://www.keil.com/pack/ IRAM(0x20000000,0x18000) IROM(0x08000000,0x80000) CPUTYPE("Cortex-M4") FPU2 CLOCK(12000000) ELITTLE @@ -185,6 +185,7 @@ 0 2 0 + 0 0 0 8 @@ -351,7 +352,7 @@ 0 0 0 - 0 + 4 @@ -452,7 +453,7 @@ RTE\Device\STM32F401RETx\startup_stm32f401xe.s - + @@ -460,7 +461,7 @@ RTE\Device\STM32F401RETx\system_stm32f4xx.c - + @@ -468,4 +469,19 @@ + + + + <Project Info> + + + + + + 0 + 1 + + + + diff --git a/include/etl/generators/type_traits_generator.h b/include/etl/generators/type_traits_generator.h index 91b3bfef..24653e00 100644 --- a/include/etl/generators/type_traits_generator.h +++ b/include/etl/generators/type_traits_generator.h @@ -452,56 +452,6 @@ namespace etl inline constexpr bool is_pod_v = etl::is_pod::value; #endif - //*************************************************************************** - /// is_trivially_constructible - /// Only POD types are recognised. - template struct is_trivially_constructible : etl::is_pod {}; - -#if ETL_CPP17_SUPPORTED - template - inline constexpr bool is_trivially_constructible_v = etl::is_trivially_constructible::value; -#endif - - //*************************************************************************** - /// is_trivially_copy_constructible - /// Only POD types are recognised. - template struct is_trivially_copy_constructible : etl::is_pod {}; - -#if ETL_CPP17_SUPPORTED - template - inline constexpr bool is_trivially_copy_constructible_v = etl::is_trivially_copy_constructible::value; -#endif - - //*************************************************************************** - /// is_trivially_destructible - /// Only POD types are recognised. - template struct is_trivially_destructible : etl::is_pod {}; - -#if ETL_CPP17_SUPPORTED - template - inline constexpr bool is_trivially_destructible_v = etl::is_trivially_destructible::value; -#endif - - //*************************************************************************** - /// is_trivially_copy_assignable - /// Only POD types are recognised. - template struct is_trivially_copy_assignable : etl::is_pod {}; - -#if ETL_CPP17_SUPPORTED - template - inline constexpr bool is_trivially_copy_assignable_v = etl::is_trivially_copy_assignable::value; -#endif - - //*************************************************************************** - /// is_trivially_copyable - /// Only POD types are recognised. - template struct is_trivially_copyable : etl::is_pod {}; - -#if ETL_CPP17_SUPPORTED - template - inline constexpr bool is_trivially_copyable_v = etl::is_trivially_copyable::value; -#endif - //*************************************************************************** /// conditional template struct conditional { typedef T type; }; @@ -653,7 +603,7 @@ namespace etl /// is_base_of template::value || etl::is_fundamental::value)> + const bool IsFundamental = (etl::is_fundamental::value || etl::is_fundamental::value || etl::is_array::value)> struct is_base_of { private: @@ -661,8 +611,10 @@ namespace etl template struct dummy {}; struct internal: TDerived, dummy{}; - static TBase* check(TBase*); - template static char check(dummy*); + static TBase* check(TBase*) { return (TBase*)0; } + + template + static char check(dummy*) { return 0; } public: @@ -1103,128 +1055,6 @@ namespace etl #endif #endif -#if !defined(ARDUINO) && ETL_NOT_USING_STLPORT && defined(ETL_GCC_V5_TYPE_TRAITS_SUPPORTED) - //*************************************************************************** - /// is_trivially_constructible - ///\ingroup type_traits - template struct is_trivially_constructible : std::is_trivially_constructible {}; - -#if ETL_CPP17_SUPPORTED - template - inline constexpr bool is_trivially_constructible_v = std::is_trivially_constructible_v; -#endif - - //*************************************************************************** - /// is_trivially_copy_constructible - ///\ingroup type_traits - template struct is_trivially_copy_constructible : std::is_trivially_copy_constructible {}; - -#if ETL_CPP17_SUPPORTED - template - inline constexpr bool is_trivially_copy_constructible_v = std::is_trivially_copy_constructible_v; -#endif - - //*************************************************************************** - /// is_trivially_destructible - ///\ingroup type_traits - template struct is_trivially_destructible : std::is_trivially_destructible {}; - -#if ETL_CPP17_SUPPORTED - template - inline constexpr bool is_trivially_destructible_v = std::is_trivially_destructible_v; -#endif - - //*************************************************************************** - /// is_trivially_copy_assignable - ///\ingroup type_traits - template struct is_trivially_copy_assignable : std::is_trivially_copy_assignable {}; - -#if ETL_CPP17_SUPPORTED - template - inline constexpr bool is_trivially_copy_assignable_v = std::is_trivially_copy_assignable_v; -#endif - - //*************************************************************************** - /// is_trivially_copyable - ///\ingroup type_traits - template struct is_trivially_copyable : std::is_trivially_copyable {}; - -#if ETL_CPP17_SUPPORTED - template - inline constexpr bool is_trivially_copyable_v = std::is_trivially_copyable_v; -#endif -#else - //*************************************************************************** - /// is_trivially_constructible - ///\ingroup type_traits -#if ETL_CPP11_SUPPORTED && ETL_CPP11_TYPE_TRAITS_IS_TRIVIAL_SUPPORTED - template struct is_trivially_constructible : std::is_trivially_constructible {}; -#else - template struct is_trivially_constructible : std::is_pod {}; -#endif - - #if ETL_CPP17_SUPPORTED - template - inline constexpr bool is_trivially_constructible_v = etl::is_trivially_constructible::value; - #endif - - //*************************************************************************** - /// is_trivially_copy_constructible - ///\ingroup type_traits -#if ETL_CPP11_SUPPORTED && ETL_CPP11_TYPE_TRAITS_IS_TRIVIAL_SUPPORTED - template struct is_trivially_copy_constructible : std::is_trivially_copy_constructible {}; -#else - template struct is_trivially_copy_constructible : std::is_pod {}; -#endif - - #if ETL_CPP17_SUPPORTED - template - inline constexpr bool is_trivially_copy_constructible_v = etl::is_trivially_copy_constructible::value; - #endif - - //*************************************************************************** - /// is_trivially_destructible - ///\ingroup type_traits -#if ETL_CPP11_SUPPORTED && ETL_CPP11_TYPE_TRAITS_IS_TRIVIAL_SUPPORTED - template struct is_trivially_destructible : std::is_trivially_destructible {}; -#else - template struct is_trivially_destructible : std::is_pod {}; -#endif - - #if ETL_CPP17_SUPPORTED - template - inline constexpr bool is_trivially_destructible_v = etl::is_trivially_destructible::value; - #endif - - //*************************************************************************** - /// is_trivially_copy_assignable - ///\ingroup type_traits -#if ETL_CPP11_SUPPORTED && ETL_CPP11_TYPE_TRAITS_IS_TRIVIAL_SUPPORTED - template struct is_trivially_copy_assignable : std::is_trivially_copy_assignable {}; -#else - template struct is_trivially_copy_assignable : std::is_pod {}; -#endif - - #if ETL_CPP17_SUPPORTED - template - inline constexpr bool is_trivially_copy_assignable_v = etl::is_trivially_copy_assignable::value; - #endif - - //*************************************************************************** - /// is_trivially_copyable - ///\ingroup type_traits -#if ETL_CPP11_SUPPORTED && ETL_CPP11_TYPE_TRAITS_IS_TRIVIAL_SUPPORTED - template struct is_trivially_copyable : std::is_trivially_copyable {}; -#else - template struct is_trivially_copyable : std::is_pod {}; -#endif - - #if ETL_CPP17_SUPPORTED - template - inline constexpr bool is_trivially_copyable_v = etl::is_trivially_copyable::value; - #endif -#endif - //*************************************************************************** /// conditional ///\ingroup type_traits @@ -1681,68 +1511,224 @@ namespace etl #endif //*************************************************************************** -#if ETL_CPP11_SUPPORTED && ETL_USING_STL && !defined(ETL_USE_TYPE_TRAITS_BUILTINS) && ((!defined(ARDUINO) && ETL_NOT_USING_STLPORT) || defined(ETL_GCC_V5_TYPE_TRAITS_SUPPORTED)) +#if ETL_CPP11_SUPPORTED && ETL_USING_STL && !defined(ETL_USE_TYPE_TRAITS_BUILTINS) && !defined(ETL_USER_DEFINED_TYPE_TRAITS) && ((!defined(ARDUINO) && ETL_NOT_USING_STLPORT) || defined(ETL_GCC_V5_TYPE_TRAITS_SUPPORTED)) //********************************************* // Use the STL's definitions. //********************************************* + + //********************************************* + // is_assignable template struct is_assignable : public std::is_assignable { }; + //********************************************* + // is_constructible template struct is_constructible : public std::is_constructible { }; + //********************************************* + // is_copy_constructible template struct is_copy_constructible : public std::is_copy_constructible { }; + //********************************************* + // is_move_constructible template struct is_move_constructible : public std::is_move_constructible { }; + //********************************************* + // is_trivially_constructible +#if ETL_CPP11_TYPE_TRAITS_IS_TRIVIAL_SUPPORTED + template + struct is_trivially_constructible : public std::is_trivially_constructible + { + }; +#else + template ::value || etl::is_pointer::value> + struct is_trivially_constructible; + + template + struct is_trivially_constructible : public etl::true_type + { + }; + + template + struct is_trivially_constructible; +#endif + + //*************************************************************************** + // is_trivially_copy_constructible +#if ETL_CPP11_TYPE_TRAITS_IS_TRIVIAL_SUPPORTED + template + struct is_trivially_copy_constructible : public std::is_trivially_copy_constructible + { + }; +#else + template ::value || etl::is_pointer::value> + struct is_trivially_copy_constructible; + + template + struct is_trivially_copy_constructible : public etl::true_type + { + }; + + template + struct is_trivially_copy_constructible; +#endif + + //*************************************************************************** + // is_trivially_destructible +#if ETL_CPP11_TYPE_TRAITS_IS_TRIVIAL_SUPPORTED + template + struct is_trivially_destructible : public std::is_trivially_destructible + { + }; +#else + template ::value || etl::is_pointer::value> + struct is_trivially_destructible; + + template + struct is_trivially_destructible : public etl::true_type + { + }; + + template + struct is_trivially_destructible; +#endif + + //*************************************************************************** + // is_trivially_copy_assignable +#if ETL_CPP11_TYPE_TRAITS_IS_TRIVIAL_SUPPORTED + template + struct is_trivially_copy_assignable : public std::is_trivially_copy_assignable + { + }; +#else + template ::value || etl::is_pointer::value> + struct is_trivially_copy_assignable; + + template + struct is_trivially_copy_assignable : public etl::true_type + { + }; + + template + struct is_trivially_copy_assignable; +#endif + + //*************************************************************************** + // is_trivially_copyable +#if ETL_CPP11_TYPE_TRAITS_IS_TRIVIAL_SUPPORTED + template + struct is_trivially_copyable : public std::is_trivially_copyable + { + }; +#else + template ::value || etl::is_pointer::value> + struct is_trivially_copyable; + + template + struct is_trivially_copyable : public etl::true_type + { + }; + + template + struct is_trivially_copyable; +#endif + #elif defined(ETL_USE_TYPE_TRAITS_BUILTINS) //********************************************* // Use the compiler's builtins. //********************************************* + + //********************************************* + // is_assignable template - struct is_assignable : public bool_constant<__is_assignable(T1, T2)> + struct is_assignable : public etl::bool_constant<__is_assignable(T1, T2)> { }; #if ETL_CPP11_SUPPORTED + //********************************************* + // is_constructible template - struct is_constructible : public bool_constant<__is_constructible(T, TArgs...)> + struct is_constructible : public etl::bool_constant<__is_constructible(T, TArgs...)> { }; #endif + //********************************************* + // is_copy_constructible template struct is_copy_constructible : public etl::is_constructible> { }; + //********************************************* + // is_move_constructible template struct is_move_constructible : public etl::is_constructible { }; -#else + //********************************************* + // is_trivially_constructible + template + struct is_trivially_constructible : public etl::bool_constant<__is_trivially_constructible(T)> + { + }; + + //*************************************************************************** + // is_trivially_copy_constructible + template + struct is_trivially_copy_constructible : public etl::bool_constant<__is_trivially_copyable(T)> + { + }; + + //*************************************************************************** + // is_trivially_destructible + template + struct is_trivially_destructible : public etl::bool_constant<__is_trivially_destructible(T)> + { + }; + + //*************************************************************************** + // is_trivially_copy_assignable + template + struct is_trivially_copy_assignable : public etl::bool_constant<__is_trivially_copyable(T)> + { + }; + + //*************************************************************************** + // is_trivially_copyable + template + struct is_trivially_copyable : public etl::bool_constant<__is_trivially_copyable(T)> + { + }; + +#elif defined(ETL_USER_DEFINED_TYPE_TRAITS) //********************************************* // Force the user to provide specialisations for // anything other than arithmetics and pointers. //********************************************* + + //********************************************* + // is_assignable template ::value || etl::is_pointer::value) && (etl::is_arithmetic::value || etl::is_pointer::value)> - struct is_assignable; + typename T2, + bool B = (etl::is_arithmetic::value || etl::is_pointer::value) && (etl::is_arithmetic::value || etl::is_pointer::value)> + struct is_assignable; template struct is_assignable : public etl::true_type @@ -1754,6 +1740,7 @@ namespace etl #if ETL_CPP11_SUPPORTED //********************************************* + // is_constructible template struct is_constructible_helper; @@ -1772,6 +1759,7 @@ namespace etl #endif //********************************************* + // is_copy_constructible template ::value || etl::is_pointer::value> struct is_copy_constructible; @@ -1784,6 +1772,7 @@ namespace etl struct is_copy_constructible; //********************************************* + // is_move_constructible template ::value || etl::is_pointer::value> struct is_move_constructible; @@ -1795,21 +1784,182 @@ namespace etl template struct is_move_constructible; + //********************************************* + // is_trivially_constructible + template ::value || etl::is_pointer::value> + struct is_trivially_constructible; + + template + struct is_trivially_constructible : public etl::true_type + { + }; + + template + struct is_trivially_constructible; + + //*************************************************************************** + // is_trivially_copy_constructible + template ::value || etl::is_pointer::value> + struct is_trivially_copy_constructible; + + template + struct is_trivially_copy_constructible : public etl::true_type + { + }; + + template + struct is_trivially_copy_constructible; + + //*************************************************************************** + // is_trivially_destructible + template ::value || etl::is_pointer::value> + struct is_trivially_destructible; + + template + struct is_trivially_destructible : public etl::true_type + { + }; + + template + struct is_trivially_destructible; + + //*************************************************************************** + // is_trivially_copy_assignable + template ::value || etl::is_pointer::value> + struct is_trivially_copy_assignable; + + template + struct is_trivially_copy_assignable : public etl::true_type + { + }; + + template + struct is_trivially_copy_assignable; + + //*************************************************************************** + // is_trivially_copyable + template ::value || etl::is_pointer::value> + struct is_trivially_copyable; + + template + struct is_trivially_copyable : public etl::true_type + { + }; + + template + struct is_trivially_copyable; + +#else + + //********************************************* + // Assume that anything other than arithmetics + // and pointers return false for the traits. + //********************************************* + + //********************************************* + // is_assignable + template + struct is_assignable : public etl::bool_constant<(etl::is_arithmetic::value || etl::is_pointer::value) && (etl::is_arithmetic::value || etl::is_pointer::value)> + { + }; + +#if ETL_CPP11_SUPPORTED + //********************************************* + // is_constructible + template + struct is_constructible : public etl::bool_constant::value || etl::is_pointer::value> + { + }; #endif + //********************************************* + // is_copy_constructible + template + struct is_copy_constructible : public etl::bool_constant::value || etl::is_pointer::value> + { + }; + + //********************************************* + // is_move_constructible + template + struct is_move_constructible : public etl::bool_constant::value || etl::is_pointer::value> + { + }; + + //********************************************* + // is_trivially_constructible + template + struct is_trivially_constructible : public etl::bool_constant::value || etl::is_pointer::value> + { + }; + + //*************************************************************************** + // is_trivially_copy_constructible + template + struct is_trivially_copy_constructible : public etl::bool_constant::value || etl::is_pointer::value> + { + }; + + //*************************************************************************** + // is_trivially_destructible + template + struct is_trivially_destructible : public etl::bool_constant::value || etl::is_pointer::value> + { + }; + + //*************************************************************************** + // is_trivially_copy_assignable + template + struct is_trivially_copy_assignable : public etl::bool_constant::value || etl::is_pointer::value> + { + }; + + //*************************************************************************** + // is_trivially_copyable + template + struct is_trivially_copyable : public etl::bool_constant::value || etl::is_pointer::value> + { + }; + +#endif + + template + struct is_lvalue_assignable : public etl::is_assignable::type, + typename etl::add_lvalue_reference::type>::type> + { + }; + #if ETL_CPP17_SUPPORTED template - inline constexpr size_t is_assignable_v = etl::is_assignable::value; + inline constexpr bool is_assignable_v = etl::is_assignable::value; + + template + inline constexpr bool is_lvalue_assignable_v = etl::is_lvalue_assignable::value; template - inline constexpr size_t is_constructible_v = etl::is_constructible::value; + inline constexpr bool is_constructible_v = etl::is_constructible::value; template - inline constexpr size_t is_copy_constructible_v = etl::is_copy_constructible::value; + inline constexpr bool is_copy_constructible_v = etl::is_copy_constructible::value; template - inline constexpr size_t is_move_constructible_v = etl::is_move_constructible::value; + inline constexpr bool is_move_constructible_v = etl::is_move_constructible::value; + + template + inline constexpr bool is_trivially_constructible_v = etl::is_trivially_constructible::value; + + template + inline constexpr bool is_trivially_copy_constructible_v = etl::is_trivially_copy_constructible::value; + + template + inline constexpr bool is_trivially_destructible_v = etl::is_trivially_destructible::value; + + template + inline constexpr bool is_trivially_copy_assignable_v = etl::is_trivially_copy_assignable::value; + + template + inline constexpr bool is_trivially_copyable_v = etl::is_trivially_copyable::value; #endif } diff --git a/include/etl/type_traits.h b/include/etl/type_traits.h index d8622266..82bf041d 100644 --- a/include/etl/type_traits.h +++ b/include/etl/type_traits.h @@ -440,56 +440,6 @@ namespace etl inline constexpr bool is_pod_v = etl::is_pod::value; #endif - //*************************************************************************** - /// is_trivially_constructible - /// Only POD types are recognised. - template struct is_trivially_constructible : etl::is_pod {}; - -#if ETL_CPP17_SUPPORTED - template - inline constexpr bool is_trivially_constructible_v = etl::is_trivially_constructible::value; -#endif - - //*************************************************************************** - /// is_trivially_copy_constructible - /// Only POD types are recognised. - template struct is_trivially_copy_constructible : etl::is_pod {}; - -#if ETL_CPP17_SUPPORTED - template - inline constexpr bool is_trivially_copy_constructible_v = etl::is_trivially_copy_constructible::value; -#endif - - //*************************************************************************** - /// is_trivially_destructible - /// Only POD types are recognised. - template struct is_trivially_destructible : etl::is_pod {}; - -#if ETL_CPP17_SUPPORTED - template - inline constexpr bool is_trivially_destructible_v = etl::is_trivially_destructible::value; -#endif - - //*************************************************************************** - /// is_trivially_copy_assignable - /// Only POD types are recognised. - template struct is_trivially_copy_assignable : etl::is_pod {}; - -#if ETL_CPP17_SUPPORTED - template - inline constexpr bool is_trivially_copy_assignable_v = etl::is_trivially_copy_assignable::value; -#endif - - //*************************************************************************** - /// is_trivially_copyable - /// Only POD types are recognised. - template struct is_trivially_copyable : etl::is_pod {}; - -#if ETL_CPP17_SUPPORTED - template - inline constexpr bool is_trivially_copyable_v = etl::is_trivially_copyable::value; -#endif - //*************************************************************************** /// conditional template struct conditional { typedef T type; }; @@ -509,10 +459,10 @@ namespace etl template <> struct make_signed { typedef etl::conditional::type>::type type; + int16_t, + etl::conditional::type>::type type; }; template <> struct make_signed { typedef short type; }; @@ -641,7 +591,7 @@ namespace etl /// is_base_of template::value || etl::is_fundamental::value)> + const bool IsFundamental = (etl::is_fundamental::value || etl::is_fundamental::value || etl::is_array::value)> struct is_base_of { private: @@ -649,8 +599,10 @@ namespace etl template struct dummy {}; struct internal: TDerived, dummy{}; - static TBase* check(TBase*); - template static char check(dummy*); + static TBase* check(TBase*) { return (TBase*)0; } + + template + static char check(dummy*) { return 0; } public: @@ -1091,128 +1043,6 @@ namespace etl #endif #endif -#if !defined(ARDUINO) && ETL_NOT_USING_STLPORT && defined(ETL_GCC_V5_TYPE_TRAITS_SUPPORTED) - //*************************************************************************** - /// is_trivially_constructible - ///\ingroup type_traits - template struct is_trivially_constructible : std::is_trivially_constructible {}; - -#if ETL_CPP17_SUPPORTED - template - inline constexpr bool is_trivially_constructible_v = std::is_trivially_constructible_v; -#endif - - //*************************************************************************** - /// is_trivially_copy_constructible - ///\ingroup type_traits - template struct is_trivially_copy_constructible : std::is_trivially_copy_constructible {}; - -#if ETL_CPP17_SUPPORTED - template - inline constexpr bool is_trivially_copy_constructible_v = std::is_trivially_copy_constructible_v; -#endif - - //*************************************************************************** - /// is_trivially_destructible - ///\ingroup type_traits - template struct is_trivially_destructible : std::is_trivially_destructible {}; - -#if ETL_CPP17_SUPPORTED - template - inline constexpr bool is_trivially_destructible_v = std::is_trivially_destructible_v; -#endif - - //*************************************************************************** - /// is_trivially_copy_assignable - ///\ingroup type_traits - template struct is_trivially_copy_assignable : std::is_trivially_copy_assignable {}; - -#if ETL_CPP17_SUPPORTED - template - inline constexpr bool is_trivially_copy_assignable_v = std::is_trivially_copy_assignable_v; -#endif - - //*************************************************************************** - /// is_trivially_copyable - ///\ingroup type_traits - template struct is_trivially_copyable : std::is_trivially_copyable {}; - -#if ETL_CPP17_SUPPORTED - template - inline constexpr bool is_trivially_copyable_v = std::is_trivially_copyable_v; -#endif -#else - //*************************************************************************** - /// is_trivially_constructible - ///\ingroup type_traits -#if ETL_CPP11_SUPPORTED && ETL_CPP11_TYPE_TRAITS_IS_TRIVIAL_SUPPORTED - template struct is_trivially_constructible : std::is_trivially_constructible {}; -#else - template struct is_trivially_constructible : std::is_pod {}; -#endif - - #if ETL_CPP17_SUPPORTED - template - inline constexpr bool is_trivially_constructible_v = etl::is_trivially_constructible::value; - #endif - - //*************************************************************************** - /// is_trivially_copy_constructible - ///\ingroup type_traits -#if ETL_CPP11_SUPPORTED && ETL_CPP11_TYPE_TRAITS_IS_TRIVIAL_SUPPORTED - template struct is_trivially_copy_constructible : std::is_trivially_copy_constructible {}; -#else - template struct is_trivially_copy_constructible : std::is_pod {}; -#endif - - #if ETL_CPP17_SUPPORTED - template - inline constexpr bool is_trivially_copy_constructible_v = etl::is_trivially_copy_constructible::value; - #endif - - //*************************************************************************** - /// is_trivially_destructible - ///\ingroup type_traits -#if ETL_CPP11_SUPPORTED && ETL_CPP11_TYPE_TRAITS_IS_TRIVIAL_SUPPORTED - template struct is_trivially_destructible : std::is_trivially_destructible {}; -#else - template struct is_trivially_destructible : std::is_pod {}; -#endif - - #if ETL_CPP17_SUPPORTED - template - inline constexpr bool is_trivially_destructible_v = etl::is_trivially_destructible::value; - #endif - - //*************************************************************************** - /// is_trivially_copy_assignable - ///\ingroup type_traits -#if ETL_CPP11_SUPPORTED && ETL_CPP11_TYPE_TRAITS_IS_TRIVIAL_SUPPORTED - template struct is_trivially_copy_assignable : std::is_trivially_copy_assignable {}; -#else - template struct is_trivially_copy_assignable : std::is_pod {}; -#endif - - #if ETL_CPP17_SUPPORTED - template - inline constexpr bool is_trivially_copy_assignable_v = etl::is_trivially_copy_assignable::value; - #endif - - //*************************************************************************** - /// is_trivially_copyable - ///\ingroup type_traits -#if ETL_CPP11_SUPPORTED && ETL_CPP11_TYPE_TRAITS_IS_TRIVIAL_SUPPORTED - template struct is_trivially_copyable : std::is_trivially_copyable {}; -#else - template struct is_trivially_copyable : std::is_pod {}; -#endif - - #if ETL_CPP17_SUPPORTED - template - inline constexpr bool is_trivially_copyable_v = etl::is_trivially_copyable::value; - #endif -#endif - //*************************************************************************** /// conditional ///\ingroup type_traits @@ -1675,7 +1505,7 @@ namespace etl #endif //*************************************************************************** -#if ETL_CPP11_SUPPORTED && ETL_USING_STL && !defined(ETL_USE_TYPE_TRAITS_BUILTINS) && ((!defined(ARDUINO) && ETL_NOT_USING_STLPORT) || defined(ETL_GCC_V5_TYPE_TRAITS_SUPPORTED)) +#if ETL_CPP11_SUPPORTED && ETL_USING_STL && !defined(ETL_USE_TYPE_TRAITS_BUILTINS) && !defined(ETL_USER_DEFINED_TYPE_TRAITS) && ((!defined(ARDUINO) && ETL_NOT_USING_STLPORT) || defined(ETL_GCC_V5_TYPE_TRAITS_SUPPORTED)) //********************************************* // Use the STL's definitions. @@ -1709,124 +1539,178 @@ namespace etl { }; -// //********************************************* -// // is_trivially_constructible -//#if ETL_CPP11_TYPE_TRAITS_IS_TRIVIAL_SUPPORTED -// template -// struct is_trivially_constructible : public std::is_trivially_constructible -//#else -// template ::value || etl::is_pointer::value> -// struct is_trivially_constructible; -// -// template -// struct is_trivially_constructible : public etl::true_type -// { -// }; -// -// template -// struct is_trivially_constructible; -//#endif -// -// //*************************************************************************** -// // is_trivially_copy_constructible -//#if ETL_CPP11_TYPE_TRAITS_IS_TRIVIAL_SUPPORTED -// template -// struct is_trivially_copy_constructible : public std::is_trivially_copy_constructible -//#else -// template ::value || etl::is_pointer::value> -// struct is_trivially_copy_constructible; -// -// template -// struct is_trivially_copy_constructible : public etl::true_type -// { -// }; -// -// template -// struct is_trivially_copy_constructible; -//#endif -// -// //*************************************************************************** -// // is_trivially_destructible -//#if ETL_CPP11_TYPE_TRAITS_IS_TRIVIAL_SUPPORTED -// template -// struct is_trivially_destructible : public std::is_trivially_destructible -//#else -// template ::value || etl::is_pointer::value> -// struct is_trivially_destructible; -// -// template -// struct is_trivially_destructible : public etl::true_type -// { -// }; -// -// template -// struct is_trivially_destructible; -//#endif -// -// //*************************************************************************** -// // is_trivially_copy_assignable -//#if ETL_CPP11_TYPE_TRAITS_IS_TRIVIAL_SUPPORTED -// template -// struct is_trivially_copy_assignable : public std::is_trivially_copy_assignable -//#else -// template ::value || etl::is_pointer::value> -// struct is_trivially_copy_assignable; -// -// template -// struct is_trivially_copy_assignable : public etl::true_type -// { -// }; -// -// template -// struct is_trivially_copy_assignable; -//#endif -// -// //*************************************************************************** -// // is_trivially_copyable -//#if ETL_CPP11_TYPE_TRAITS_IS_TRIVIAL_SUPPORTED -// template -// struct is_trivially_copyable : public std::is_trivially_copyable -//#else -// template ::value || etl::is_pointer::value> -// struct is_trivially_copyable; -// -// template -// struct is_trivially_copyable : public etl::true_type -// { -// }; -// -// template -// struct is_trivially_copyable; -//#endif + //********************************************* + // is_trivially_constructible +#if ETL_CPP11_TYPE_TRAITS_IS_TRIVIAL_SUPPORTED + template + struct is_trivially_constructible : public std::is_trivially_constructible + { + }; +#else + template ::value || etl::is_pointer::value> + struct is_trivially_constructible; -#elif defined(ETL_USE_TYPE_TRAITS_BUILTINS) + template + struct is_trivially_constructible : public etl::true_type + { + }; + + template + struct is_trivially_constructible; +#endif + + //*************************************************************************** + // is_trivially_copy_constructible +#if ETL_CPP11_TYPE_TRAITS_IS_TRIVIAL_SUPPORTED + template + struct is_trivially_copy_constructible : public std::is_trivially_copy_constructible + { + }; +#else + template ::value || etl::is_pointer::value> + struct is_trivially_copy_constructible; + + template + struct is_trivially_copy_constructible : public etl::true_type + { + }; + + template + struct is_trivially_copy_constructible; +#endif + + //*************************************************************************** + // is_trivially_destructible +#if ETL_CPP11_TYPE_TRAITS_IS_TRIVIAL_SUPPORTED + template + struct is_trivially_destructible : public std::is_trivially_destructible + { + }; +#else + template ::value || etl::is_pointer::value> + struct is_trivially_destructible; + + template + struct is_trivially_destructible : public etl::true_type + { + }; + + template + struct is_trivially_destructible; +#endif + + //*************************************************************************** + // is_trivially_copy_assignable +#if ETL_CPP11_TYPE_TRAITS_IS_TRIVIAL_SUPPORTED + template + struct is_trivially_copy_assignable : public std::is_trivially_copy_assignable + { + }; +#else + template ::value || etl::is_pointer::value> + struct is_trivially_copy_assignable; + + template + struct is_trivially_copy_assignable : public etl::true_type + { + }; + + template + struct is_trivially_copy_assignable; +#endif + + //*************************************************************************** + // is_trivially_copyable +#if ETL_CPP11_TYPE_TRAITS_IS_TRIVIAL_SUPPORTED + template + struct is_trivially_copyable : public std::is_trivially_copyable + { + }; +#else + template ::value || etl::is_pointer::value> + struct is_trivially_copyable; + + template + struct is_trivially_copyable : public etl::true_type + { + }; + + template + struct is_trivially_copyable; +#endif + +#elif defined(ETL_USE_TYPE_TRAITS_BUILTINS) && !defined(ETL_USER_DEFINED_TYPE_TRAITS) //********************************************* // Use the compiler's builtins. //********************************************* + + //********************************************* + // is_assignable template - struct is_assignable : public bool_constant<__is_assignable(T1, T2)> + struct is_assignable : public etl::bool_constant<__is_assignable(T1, T2)> { }; #if ETL_CPP11_SUPPORTED + //********************************************* + // is_constructible template - struct is_constructible : public bool_constant<__is_constructible(T, TArgs...)> + struct is_constructible : public etl::bool_constant<__is_constructible(T, TArgs...)> { }; #endif + //********************************************* + // is_copy_constructible template struct is_copy_constructible : public etl::is_constructible> { }; + //********************************************* + // is_move_constructible template struct is_move_constructible : public etl::is_constructible { }; -#else + //********************************************* + // is_trivially_constructible + template + struct is_trivially_constructible : public etl::bool_constant<__is_trivially_constructible(T)> + { + }; + + //*************************************************************************** + // is_trivially_copy_constructible + template + struct is_trivially_copy_constructible : public etl::bool_constant<__is_trivially_copyable(T)> + { + }; + + //*************************************************************************** + // is_trivially_destructible + template + struct is_trivially_destructible : public etl::bool_constant<__is_trivially_destructible(T)> + { + }; + + //*************************************************************************** + // is_trivially_copy_assignable + template + struct is_trivially_copy_assignable : public etl::bool_constant<__is_trivially_copyable(T)> + { + }; + + //*************************************************************************** + // is_trivially_copyable + template + struct is_trivially_copyable : public etl::bool_constant<__is_trivially_copyable(T)> + { + }; + +#elif defined(ETL_USER_DEFINED_TYPE_TRAITS) && !defined(ETL_USE_TYPE_TRAITS_BUILTINS) //********************************************* // Force the user to provide specialisations for @@ -1894,78 +1778,159 @@ namespace etl template struct is_move_constructible; - ////********************************************* - //// is_trivially_constructible - //template ::value || etl::is_pointer::value> - //struct is_trivially_constructible; + //********************************************* + // is_trivially_constructible + template ::value || etl::is_pointer::value> + struct is_trivially_constructible; - //template - //struct is_trivially_constructible : public etl::true_type - //{ - //}; + template + struct is_trivially_constructible : public etl::true_type + { + }; - //template - //struct is_trivially_constructible; + template + struct is_trivially_constructible; - ////*************************************************************************** - //// is_trivially_copy_constructible - //template ::value || etl::is_pointer::value> - //struct is_trivially_copy_constructible; + //*************************************************************************** + // is_trivially_copy_constructible + template ::value || etl::is_pointer::value> + struct is_trivially_copy_constructible; - //template - //struct is_trivially_copy_constructible : public etl::true_type - //{ - //}; + template + struct is_trivially_copy_constructible : public etl::true_type + { + }; - //template - //struct is_trivially_copy_constructible; + template + struct is_trivially_copy_constructible; - ////*************************************************************************** - //// is_trivially_destructible - //template ::value || etl::is_pointer::value> - //struct is_trivially_destructible; + //*************************************************************************** + // is_trivially_destructible + template ::value || etl::is_pointer::value> + struct is_trivially_destructible; - //template - //struct is_trivially_destructible : public etl::true_type - //{ - //}; + template + struct is_trivially_destructible : public etl::true_type + { + }; - //template - //struct is_trivially_destructible; + template + struct is_trivially_destructible; - ////*************************************************************************** - //// is_trivially_copy_assignable - //template ::value || etl::is_pointer::value> - //struct is_trivially_copy_assignable; + //*************************************************************************** + // is_trivially_copy_assignable + template ::value || etl::is_pointer::value> + struct is_trivially_copy_assignable; - //template - //struct is_trivially_copy_assignable : public etl::true_type - //{ - //}; + template + struct is_trivially_copy_assignable : public etl::true_type + { + }; - //template - //struct is_trivially_copy_assignable; + template + struct is_trivially_copy_assignable; - ////*************************************************************************** - //// is_trivially_copyable - //template ::value || etl::is_pointer::value> - //struct is_trivially_copyable; + //*************************************************************************** + // is_trivially_copyable + template ::value || etl::is_pointer::value> + struct is_trivially_copyable; - //template - //struct is_trivially_copyable : public etl::true_type - //{ - //}; + template + struct is_trivially_copyable : public etl::true_type + { + }; - //template - //struct is_trivially_copyable; + template + struct is_trivially_copyable; + +#else + + //********************************************* + // Assume that anything other than arithmetics + // and pointers return false for the traits. + //********************************************* + + //********************************************* + // is_assignable + template + struct is_assignable : public etl::bool_constant<(etl::is_arithmetic::value || etl::is_pointer::value) && (etl::is_arithmetic::value || etl::is_pointer::value)> + { + }; + + #if ETL_CPP11_SUPPORTED + //********************************************* + // is_constructible + template + struct is_constructible : public etl::bool_constant::value || etl::is_pointer::value> + { + }; + #endif + + //********************************************* + // is_copy_constructible + template + struct is_copy_constructible : public etl::bool_constant::value || etl::is_pointer::value> + { + }; + + //********************************************* + // is_move_constructible + template + struct is_move_constructible : public etl::bool_constant::value || etl::is_pointer::value> + { + }; + + //********************************************* + // is_trivially_constructible + template + struct is_trivially_constructible : public etl::bool_constant::value || etl::is_pointer::value> + { + }; + + //*************************************************************************** + // is_trivially_copy_constructible + template + struct is_trivially_copy_constructible : public etl::bool_constant::value || etl::is_pointer::value> + { + }; + + //*************************************************************************** + // is_trivially_destructible + template + struct is_trivially_destructible : public etl::bool_constant::value || etl::is_pointer::value> + { + }; + + //*************************************************************************** + // is_trivially_copy_assignable + template + struct is_trivially_copy_assignable : public etl::bool_constant::value || etl::is_pointer::value> + { + }; + + //*************************************************************************** + // is_trivially_copyable + template + struct is_trivially_copyable : public etl::bool_constant::value || etl::is_pointer::value> + { + }; #endif + template + struct is_lvalue_assignable : public etl::is_assignable::type, + typename etl::add_lvalue_reference::type>::type> + { + }; + #if ETL_CPP17_SUPPORTED template inline constexpr bool is_assignable_v = etl::is_assignable::value; + template + inline constexpr bool is_lvalue_assignable_v = etl::is_lvalue_assignable::value; + template inline constexpr bool is_constructible_v = etl::is_constructible::value; @@ -1975,20 +1940,20 @@ namespace etl template inline constexpr bool is_move_constructible_v = etl::is_move_constructible::value; - //template - //inline constexpr bool is_trivially_constructible_v = etl::is_trivially_constructible::value; + template + inline constexpr bool is_trivially_constructible_v = etl::is_trivially_constructible::value; - //template - //inline constexpr bool is_trivially_copy_constructible_v = etl::is_trivially_copy_constructible::value; + template + inline constexpr bool is_trivially_copy_constructible_v = etl::is_trivially_copy_constructible::value; - //template - //inline constexpr bool is_trivially_destructible_v = etl::is_trivially_destructible::value; + template + inline constexpr bool is_trivially_destructible_v = etl::is_trivially_destructible::value; - //template - //inline constexpr bool is_trivially_copy_assignable_v = etl::is_trivially_copy_assignable::value; + template + inline constexpr bool is_trivially_copy_assignable_v = etl::is_trivially_copy_assignable::value; - //template - //inline constexpr bool is_trivially_copyable_v = etl::is_trivially_copyable::value; + template + inline constexpr bool is_trivially_copyable_v = etl::is_trivially_copyable::value; #endif } diff --git a/test/etl_profile.h b/test/etl_profile.h index 796182cd..f4c983ce 100644 --- a/test/etl_profile.h +++ b/test/etl_profile.h @@ -78,10 +78,6 @@ SOFTWARE. //#define ETL_MESSAGES_ARE_VIRTUAL //#define ETL_POLYMORPHIC_MESSAGES -//#define ETL_NO_STL - -//#define ETL_USE_TYPE_TRAITS_BUILTINS - #if defined(ETL_FORCE_TEST_CPP03) #define ETL_FUNCTION_FORCE_CPP03 #define ETL_PRIORITY_QUEUE_FORCE_CPP03 diff --git a/test/runsanitychecks.sh b/test/runsanitychecks.sh index dd3a1c32..42f7adbb 100755 --- a/test/runsanitychecks.sh +++ b/test/runsanitychecks.sh @@ -23,6 +23,16 @@ g++ --version | head --lines=1 >> ../log.txt CC=gcc CXX=g++ cmake -E chdir bgcc cmake --cmake-clean-cache -DNO_STL=ON .. cmake --build bgcc || echo "****************\n**** Failed ****\n****************" >> ../log.txt +{ echo ""; echo "GCC - No STL - Builtins"; } >> ../log.txt +g++ --version | head --lines=1 >> ../log.txt +CC=gcc CXX=g++ cmake -E chdir bgcc cmake --cmake-clean-cache -DNO_STL=ON -DETL_USE_TYPE_TRAITS_BUILTINS=ON .. +cmake --build bgcc || echo "****************\n**** Failed ****\n****************" >> ../log.txt + +{ echo ""; echo "GCC - No STL - User defined traits"; } >> ../log.txt +g++ --version | head --lines=1 >> ../log.txt +CC=gcc CXX=g++ cmake -E chdir bgcc cmake --cmake-clean-cache -DNO_STL=ON -DETL_USER_DEFINED_TYPE_TRAITS=ON .. +cmake --build bgcc || echo "****************\n**** Failed ****\n****************" >> ../log.txt + { echo ""; echo "Clang - STL"; } >> ../log.txt clang++ --version | head --lines=1 >> ../log.txt CC=clang CXX=clang++ cmake -E chdir bclang cmake --cmake-clean-cache -DNO_STL=OFF .. @@ -33,6 +43,16 @@ clang++ --version | head --lines=1 >> ../log.txt CC=clang CXX=clang++ cmake -E chdir bclang cmake --cmake-clean-cache -DNO_STL=ON .. cmake --build bclang || echo "****************\n**** Failed ****\n****************" >> ../log.txt +{ echo ""; echo "Clang - No STL - Builtins"; } >> ../log.txt +clang++ --version | head --lines=1 >> ../log.txt +CC=clang CXX=clang++ cmake -E chdir bclang cmake --cmake-clean-cache -DNO_STL=ON -DETL_USE_TYPE_TRAITS_BUILTINS=ON .. +cmake --build bclang || echo "****************\n**** Failed ****\n****************" >> ../log.txt + +{ echo ""; echo "Clang - No STL - User defined traits"; } >> ../log.txt +clang++ --version | head --lines=1 >> ../log.txt +CC=clang CXX=clang++ cmake -E chdir bclang cmake --cmake-clean-cache -DNO_STL=ON -DETL_USER_DEFINED_TYPE_TRAITS=ON .. +cmake --build bclang || echo "****************\n**** Failed ****\n****************" >> ../log.txt + ############################################################################### cd ../c++11 || exit 1 cmake -E make_directory bgcc bclang @@ -51,6 +71,16 @@ g++ --version | head --lines=1 >> ../log.txt CC=gcc CXX=g++ cmake -E chdir bgcc cmake --cmake-clean-cache -DNO_STL=ON .. cmake --build bgcc || echo "****************\n**** Failed ****\n****************" >> ../log.txt +{ echo ""; echo "GCC - No STL - Builtins"; } >> ../log.txt +g++ --version | head --lines=1 >> ../log.txt +CC=gcc CXX=g++ cmake -E chdir bgcc cmake --cmake-clean-cache -DNO_STL=ON -DETL_USE_TYPE_TRAITS_BUILTINS=ON .. +cmake --build bgcc || echo "****************\n**** Failed ****\n****************" >> ../log.txt + +{ echo ""; echo "GCC - No STL - User defined traits"; } >> ../log.txt +g++ --version | head --lines=1 >> ../log.txt +CC=gcc CXX=g++ cmake -E chdir bgcc cmake --cmake-clean-cache -DNO_STL=ON -DETL_USER_DEFINED_TYPE_TRAITS=ON .. +cmake --build bgcc || echo "****************\n**** Failed ****\n****************" >> ../log.txt + { echo ""; echo "Clang - STL"; } >> ../log.txt clang++ --version | head --lines=1 >> ../log.txt CC=clang CXX=clang++ cmake -E chdir bclang cmake --cmake-clean-cache -DNO_STL=OFF .. @@ -61,6 +91,16 @@ clang++ --version | head --lines=1 >> ../log.txt CC=clang CXX=clang++ cmake -E chdir bclang cmake --cmake-clean-cache -DNO_STL=ON .. cmake --build bclang || echo "****************\n**** Failed ****\n****************" >> ../log.txt +{ echo ""; echo "Clang - No STL - Builtins"; } >> ../log.txt +clang++ --version | head --lines=1 >> ../log.txt +CC=clang CXX=clang++ cmake -E chdir bclang cmake --cmake-clean-cache -DNO_STL=ON -DETL_USE_TYPE_TRAITS_BUILTINS=ON .. +cmake --build bclang || echo "****************\n**** Failed ****\n****************" >> ../log.txt + +{ echo ""; echo "Clang - No STL - User defined traits"; } >> ../log.txt +clang++ --version | head --lines=1 >> ../log.txt +CC=clang CXX=clang++ cmake -E chdir bclang cmake --cmake-clean-cache -DNO_STL=ON -DETL_USER_DEFINED_TYPE_TRAITS=ON .. +cmake --build bclang || echo "****************\n**** Failed ****\n****************" >> ../log.txt + ############################################################################### cd ../c++14 || exit 1 cmake -E make_directory bgcc bclang @@ -69,7 +109,7 @@ echo "-----------------------------------------------" echo " C++14" echo "-----------------------------------------------" -echo " GCC - STL"; } >> ../log.txt +echo "GCC - STL"; } >> ../log.txt g++ --version | head --lines=1 >> ../log.txt CC=gcc CXX=g++ cmake -E chdir bgcc cmake --cmake-clean-cache -DNO_STL=OFF .. cmake --build bgcc || echo "****************\n**** Failed ****\n****************" >> ../log.txt @@ -79,6 +119,16 @@ g++ --version | head --lines=1 >> ../log.txt CC=gcc CXX=g++ cmake -E chdir bgcc cmake --cmake-clean-cache -DNO_STL=ON .. cmake --build bgcc || echo "****************\n**** Failed ****\n****************" >> ../log.txt +{ echo ""; echo "GCC - No STL - Builtins"; } >> ../log.txt +g++ --version | head --lines=1 >> ../log.txt +CC=gcc CXX=g++ cmake -E chdir bgcc cmake --cmake-clean-cache -DNO_STL=ON -DETL_USE_TYPE_TRAITS_BUILTINS=ON .. +cmake --build bgcc || echo "****************\n**** Failed ****\n****************" >> ../log.txt + +{ echo ""; echo "GCC - No STL - User defined traits"; } >> ../log.txt +g++ --version | head --lines=1 >> ../log.txt +CC=gcc CXX=g++ cmake -E chdir bgcc cmake --cmake-clean-cache -DNO_STL=ON -DETL_USER_DEFINED_TYPE_TRAITS=ON .. +cmake --build bgcc || echo "****************\n**** Failed ****\n****************" >> ../log.txt + { echo ""; echo "Clang - STL"; } >> ../log.txt clang++ --version | head --lines=1 >> ../log.txt CC=clang CXX=clang++ cmake -E chdir bclang cmake --cmake-clean-cache -DNO_STL=OFF .. @@ -89,7 +139,17 @@ clang++ --version | head --lines=1 >> ../log.txt CC=clang CXX=clang++ cmake -E chdir bclang cmake --cmake-clean-cache -DNO_STL=ON .. cmake --build bclang || echo "****************\n**** Failed ****\n****************" >> ../log.txt - ############################################################################### +{ echo ""; echo "Clang - No STL - Builtins"; } >> ../log.txt +clang++ --version | head --lines=1 >> ../log.txt +CC=clang CXX=clang++ cmake -E chdir bclang cmake --cmake-clean-cache -DNO_STL=ON -DETL_USE_TYPE_TRAITS_BUILTINS=ON .. +cmake --build bclang || echo "****************\n**** Failed ****\n****************" >> ../log.txt + +{ echo ""; echo "Clang - No STL - User defined traits"; } >> ../log.txt +clang++ --version | head --lines=1 >> ../log.txt +CC=clang CXX=clang++ cmake -E chdir bclang cmake --cmake-clean-cache -DNO_STL=ON -DETL_USER_DEFINED_TYPE_TRAITS=ON .. +cmake --build bclang || echo "****************\n**** Failed ****\n****************" >> ../log.txt + +############################################################################### cd ../c++17 || exit 1 cmake -E make_directory bgcc bclang { echo "" @@ -107,6 +167,16 @@ g++ --version | head --lines=1 >> ../log.txt CC=gcc CXX=g++ cmake -E chdir bgcc cmake --cmake-clean-cache -DNO_STL=ON .. cmake --build bgcc || echo "****************\n**** Failed ****\n****************" >> ../log.txt +{ echo ""; echo "GCC - No STL - Builtins"; } >> ../log.txt +g++ --version | head --lines=1 >> ../log.txt +CC=gcc CXX=g++ cmake -E chdir bgcc cmake --cmake-clean-cache -DNO_STL=ON -DETL_USE_TYPE_TRAITS_BUILTINS=ON .. +cmake --build bgcc || echo "****************\n**** Failed ****\n****************" >> ../log.txt + +{ echo ""; echo "GCC - No STL - User defined traits"; } >> ../log.txt +g++ --version | head --lines=1 >> ../log.txt +CC=gcc CXX=g++ cmake -E chdir bgcc cmake --cmake-clean-cache -DNO_STL=ON -DETL_USER_DEFINED_TYPE_TRAITS=ON .. +cmake --build bgcc || echo "****************\n**** Failed ****\n****************" >> ../log.txt + { echo ""; echo "Clang - STL"; } >> ../log.txt clang++ --version | head --lines=1 >> ../log.txt CC=clang CXX=clang++ cmake -E chdir bclang cmake --cmake-clean-cache -DNO_STL=OFF .. @@ -117,6 +187,16 @@ clang++ --version | head --lines=1 >> ../log.txt CC=clang CXX=clang++ cmake -E chdir bclang cmake --cmake-clean-cache -DNO_STL=ON .. cmake --build bclang || echo "****************\n**** Failed ****\n****************" >> ../log.txt +{ echo ""; echo "Clang - No STL - Builtins"; } >> ../log.txt +clang++ --version | head --lines=1 >> ../log.txt +CC=clang CXX=clang++ cmake -E chdir bclang cmake --cmake-clean-cache -DNO_STL=ON -DETL_USE_TYPE_TRAITS_BUILTINS=ON .. +cmake --build bclang || echo "****************\n**** Failed ****\n****************" >> ../log.txt + +{ echo ""; echo "Clang - No STL - User defined traits"; } >> ../log.txt +clang++ --version | head --lines=1 >> ../log.txt +CC=clang CXX=clang++ cmake -E chdir bclang cmake --cmake-clean-cache -DNO_STL=ON -DETL_USER_DEFINED_TYPE_TRAITS=ON .. +cmake --build bclang || echo "****************\n**** Failed ****\n****************" >> ../log.txt + { echo "" echo "-----------------------------------------------" echo " Completed" diff --git a/test/runtests.sh b/test/runtests.sh index ba924fc9..51feeff5 100755 --- a/test/runtests.sh +++ b/test/runtests.sh @@ -9,7 +9,7 @@ echo " GCC" >> log.txt echo "-----------------------------------------------" >> log.txt gcc --version | grep gcc >> log.txt CC=gcc CXX=g++ cmake --cmake-clean-cache -DNO_STL=OFF .. -make -j8 +make -j8 || echo "****************\n**** Failed ****\n****************" >> ../log.txt ./etl_tests | tee log.txt echo "" echo "-----------------------------------------------" >> log.txt @@ -17,7 +17,7 @@ echo " GCC - No STL" >> log.txt echo "-----------------------------------------------" >> log.txt gcc --version | grep gcc >> log.txt CC=gcc CXX=g++ cmake --cmake-clean-cache -DNO_STL=ON .. -make -j8 +make -j8 || echo "****************\n**** Failed ****\n****************" >> ../log.txt ./etl_tests | tee log.txt echo "" echo "-----------------------------------------------" >> log.txt @@ -25,7 +25,7 @@ echo " GCC - No STL - Builtins" >> log.txt echo "-----------------------------------------------" >> log.txt gcc --version | grep gcc >> log.txt CC=gcc CXX=g++ cmake --cmake-clean-cache -DNO_STL=ON -DETL_USE_TYPE_TRAITS_BUILTINS=ON .. -make -j8 +make -j8 || echo "****************\n**** Failed ****\n****************" >> ../log.txt ./etl_tests | tee log.txt echo "" echo "-----------------------------------------------" >> log.txt @@ -33,7 +33,7 @@ echo " Clang" >> log.txt echo "-----------------------------------------------" >> log.txt clang --version | grep clang >> log.txt CC=clang CXX=clang++ cmake --cmake-clean-cache -DNO_STL=OFF .. -make -j8 +make -j8 || echo "****************\n**** Failed ****\n****************" >> ../log.txt ./etl_tests | tee log.txt echo "" echo "-----------------------------------------------" >> log.txt @@ -41,7 +41,7 @@ echo " Clang - No STL" >> log.txt echo "-----------------------------------------------" >> log.txt clang --version | grep clang >> log.txt CC=clang CXX=clang++ cmake --cmake-clean-cache -DNO_STL=ON .. -make -j8 +make -j8 || echo "****************\n**** Failed ****\n****************" >> ../log.txt ./etl_tests | tee log.txt echo "" echo "-----------------------------------------------" >> log.txt @@ -49,7 +49,7 @@ echo " Clang - No STL - Builtins" >> log.txt echo "-----------------------------------------------" >> log.txt clang --version | grep clang >> log.txt CC=clang CXX=clang++ cmake --cmake-clean-cache -DNO_STL=ON -DETL_USE_TYPE_TRAITS_BUILTINS=ON .. -make -j8 +make -j8 || echo "****************\n**** Failed ****\n****************" >> ../log.txt ./etl_tests | tee log.txt echo "" echo "-----------------------------------------------" >> log.txt diff --git a/test/test_pool.cpp b/test/test_pool.cpp index 4c6d32a8..0779e33e 100644 --- a/test/test_pool.cpp +++ b/test/test_pool.cpp @@ -448,6 +448,27 @@ namespace int* i = pool.allocate(); pool.release(i); + } + + //************************************************************************* + TEST(test_issue_406_pool_of_c_array) + { + using elem_type = uint8_t[10]; + + etl::pool memPool{}; + + CHECK_EQUAL(3, memPool.available()); + CHECK_EQUAL(0, memPool.size()); + + elem_type* memory = memPool.allocate(); + + CHECK_EQUAL(2, memPool.available()); + CHECK_EQUAL(1, memPool.size()); + + memPool.release(memory); + + CHECK_EQUAL(3, memPool.available()); + CHECK_EQUAL(0, memPool.size()); } } diff --git a/test/test_type_traits.cpp b/test/test_type_traits.cpp index da6f740d..b3f8b938 100644 --- a/test/test_type_traits.cpp +++ b/test/test_type_traits.cpp @@ -98,67 +98,67 @@ using etl::is_copy_constructible; using etl::is_move_constructible; //************************* - template <> - struct etl::is_assignable : public etl::true_type - { - }; +template <> +struct etl::is_assignable : public etl::true_type +{ +}; - template <> - struct etl::is_constructible : public etl::true_type - { - }; +template <> +struct etl::is_constructible : public etl::true_type +{ +}; - template <> - struct etl::is_copy_constructible : public etl::true_type - { - }; +template <> +struct etl::is_copy_constructible : public etl::true_type +{ +}; - template <> - struct etl::is_move_constructible : public etl::false_type - { - }; +template <> +struct etl::is_move_constructible : public etl::false_type +{ +}; - //************************* - template <> - struct etl::is_assignable : public etl::true_type - { - }; +//************************* +template <> +struct etl::is_assignable : public etl::true_type +{ +}; - template <> - struct etl::is_constructible : public etl::true_type - { - }; +template <> +struct etl::is_constructible : public etl::true_type +{ +}; - template <> - struct etl::is_copy_constructible : public etl::false_type - { - }; +template <> +struct etl::is_copy_constructible : public etl::false_type +{ +}; - template <> - struct etl::is_move_constructible : public etl::true_type - { - }; +template <> +struct etl::is_move_constructible : public etl::true_type +{ +}; - //************************* - template <> - struct etl::is_assignable : public etl::true_type - { - }; +//************************* +template <> +struct etl::is_assignable : public etl::true_type +{ +}; - template <> - struct etl::is_constructible : public etl::true_type - { - }; +template <> +struct etl::is_constructible : public etl::true_type +{ +}; - template <> - struct etl::is_copy_constructible : public etl::true_type - { - }; +template <> +struct etl::is_copy_constructible : public etl::true_type +{ +}; - template <> - struct etl::is_move_constructible : public etl::true_type - { - }; +template <> +struct etl::is_move_constructible : public etl::true_type +{ +}; #endif namespace @@ -1001,6 +1001,16 @@ namespace CHECK((etl::is_assignable_v) == (std::is_assignable_v)); } + //************************************************************************* + TEST(test_is_lvalue_assignable) + { +#if ETL_USING_STL || defined(ETL_USE_TYPE_TRAITS_BUILTINS) || defined(ETL_USER_DEFINED_TYPE_TRAITS) + CHECK((etl::is_lvalue_assignable_v)); + CHECK(!(etl::is_lvalue_assignable_v)); + CHECK((etl::is_lvalue_assignable_v)); +#endif + } + //************************************************************************* TEST(test_is_constructible) { @@ -1024,4 +1034,54 @@ namespace CHECK((etl::is_move_constructible_v) == (std::is_move_constructible_v)); CHECK((etl::is_move_constructible_v) == (std::is_move_constructible_v)); } + + //************************************************************************* + TEST(test_is_trivially_constructible) + { +#if ETL_USING_STL || defined(ETL_USE_TYPE_TRAITS_BUILTINS) || defined(ETL_USER_DEFINED_TYPE_TRAITS) + CHECK((etl::is_trivially_constructible_v) == (std::is_trivially_constructible_v)); + CHECK((etl::is_trivially_constructible_v) == (std::is_trivially_constructible_v)); + CHECK((etl::is_trivially_constructible_v) == (std::is_trivially_constructible_v)); +#endif + } + + //************************************************************************* + TEST(test_is_trivially_copy_constructible) + { +#if ETL_USING_STL || defined(ETL_USE_TYPE_TRAITS_BUILTINS) || defined(ETL_USER_DEFINED_TYPE_TRAITS) + CHECK((etl::is_trivially_copy_constructible_v) == (std::is_trivially_copy_constructible_v)); + CHECK((etl::is_trivially_copy_constructible_v) == (std::is_trivially_copy_constructible_v)); + CHECK((etl::is_trivially_copy_constructible_v) == (std::is_trivially_copy_constructible_v)); +#endif + } + + //************************************************************************* + TEST(test_is_trivially_destructible) + { +#if ETL_USING_STL || defined(ETL_USE_TYPE_TRAITS_BUILTINS) || defined(ETL_USER_DEFINED_TYPE_TRAITS) + CHECK((etl::is_trivially_destructible_v) == (std::is_trivially_destructible_v)); + CHECK((etl::is_trivially_destructible_v) == (std::is_trivially_destructible_v)); + CHECK((etl::is_trivially_destructible_v) == (std::is_trivially_destructible_v)); +#endif + } + + //************************************************************************* + TEST(test_is_trivially_copy_assignable) + { +#if ETL_USING_STL || defined(ETL_USE_TYPE_TRAITS_BUILTINS) || defined(ETL_USER_DEFINED_TYPE_TRAITS) + CHECK((etl::is_trivially_copy_assignable_v) == (std::is_trivially_copy_assignable_v)); + CHECK((etl::is_trivially_copy_assignable_v) == (std::is_trivially_copy_assignable_v)); + CHECK((etl::is_trivially_copy_assignable_v) == (std::is_trivially_copy_assignable_v)); +#endif + } + + //************************************************************************* + TEST(test_is_trivially_copyable) + { +#if ETL_USING_STL || defined(ETL_USE_TYPE_TRAITS_BUILTINS) || defined(ETL_USER_DEFINED_TYPE_TRAITS) + CHECK((etl::is_trivially_copyable_v) == (std::is_trivially_copyable_v)); + CHECK((etl::is_trivially_copyable_v) == (std::is_trivially_copyable_v)); + CHECK((etl::is_trivially_copyable_v) == (std::is_trivially_copyable_v)); +#endif + } } diff --git a/test/test_variant_new.cpp b/test/test_variant_new.cpp index d4ca78db..bb70329b 100644 --- a/test/test_variant_new.cpp +++ b/test/test_variant_new.cpp @@ -375,7 +375,7 @@ struct etl::is_move_constructible : public etl::true_type //************************* template <> -struct etl::is_copy_constructible : public etl::true_type +struct etl::is_copy_constructible : public etl::true_type { }; diff --git a/test/vs2019/etl.sln b/test/vs2019/etl.sln index ce177c05..7e198816 100644 --- a/test/vs2019/etl.sln +++ b/test/vs2019/etl.sln @@ -11,6 +11,8 @@ Global Debug LLVM - No STL|x64 = Debug LLVM - No STL|x64 Debug LLVM|Win32 = Debug LLVM|Win32 Debug LLVM|x64 = Debug LLVM|x64 + Debug MSVC - No STL - Builtins|Win32 = Debug MSVC - No STL - Builtins|Win32 + Debug MSVC - No STL - Builtins|x64 = Debug MSVC - No STL - Builtins|x64 Debug MSVC - No STL - Force No Advanced|Win32 = Debug MSVC - No STL - Force No Advanced|Win32 Debug MSVC - No STL - Force No Advanced|x64 = Debug MSVC - No STL - Force No Advanced|x64 Debug MSVC - No STL|Win32 = Debug MSVC - No STL|Win32 @@ -27,6 +29,8 @@ Global Debug MSVC No Checks|x64 = Debug MSVC No Checks|x64 Debug MSVC|Win32 = Debug MSVC|Win32 Debug MSVC|x64 = Debug MSVC|x64 + Debug LLVM - No STL - Builtins|Win32 = Debug LLVM - No STL - Builtins|Win32 + Debug LLVM - No STL - Builtins|x64 = Debug LLVM - No STL - Builtins|x64 LLVM New|Win32 = LLVM New|Win32 LLVM New|x64 = LLVM New|x64 MSVCDebugAppveyor|Win32 = MSVCDebugAppveyor|Win32 @@ -45,6 +49,10 @@ Global {C21DF78C-D8E0-46AB-9D6F-D38A3C1CB0FB}.Debug LLVM|Win32.Build.0 = Debug LLVM|Win32 {C21DF78C-D8E0-46AB-9D6F-D38A3C1CB0FB}.Debug LLVM|x64.ActiveCfg = Debug LLVM|x64 {C21DF78C-D8E0-46AB-9D6F-D38A3C1CB0FB}.Debug LLVM|x64.Build.0 = Debug LLVM|x64 + {C21DF78C-D8E0-46AB-9D6F-D38A3C1CB0FB}.Debug MSVC - No STL - Builtins|Win32.ActiveCfg = Debug|Win32 + {C21DF78C-D8E0-46AB-9D6F-D38A3C1CB0FB}.Debug MSVC - No STL - Builtins|Win32.Build.0 = Debug|Win32 + {C21DF78C-D8E0-46AB-9D6F-D38A3C1CB0FB}.Debug MSVC - No STL - Builtins|x64.ActiveCfg = Debug-MSVC-No-STL-Builtins|x64 + {C21DF78C-D8E0-46AB-9D6F-D38A3C1CB0FB}.Debug MSVC - No STL - Builtins|x64.Build.0 = Debug-MSVC-No-STL-Builtins|x64 {C21DF78C-D8E0-46AB-9D6F-D38A3C1CB0FB}.Debug MSVC - No STL - Force No Advanced|Win32.ActiveCfg = DebugNoSTLForceNoAdvanced|Win32 {C21DF78C-D8E0-46AB-9D6F-D38A3C1CB0FB}.Debug MSVC - No STL - Force No Advanced|Win32.Build.0 = DebugNoSTLForceNoAdvanced|Win32 {C21DF78C-D8E0-46AB-9D6F-D38A3C1CB0FB}.Debug MSVC - No STL - Force No Advanced|x64.ActiveCfg = DebugNoSTLForceNoAdvanced|x64 @@ -60,7 +68,7 @@ Global {C21DF78C-D8E0-46AB-9D6F-D38A3C1CB0FB}.Debug MSVC - Small Strings|Win32.ActiveCfg = DebugMSVCSmallStrings|Win32 {C21DF78C-D8E0-46AB-9D6F-D38A3C1CB0FB}.Debug MSVC - Small Strings|Win32.Build.0 = DebugMSVCSmallStrings|Win32 {C21DF78C-D8E0-46AB-9D6F-D38A3C1CB0FB}.Debug MSVC - Small Strings|x64.ActiveCfg = DebugMSVCSmallStrings|x64 - {C21DF78C-D8E0-46AB-9D6F-D38A3C1CB0FB}.Debug MSVC - Small Strings|x64.Build.0 = DebugMSVCSmall Strings|x64 + {C21DF78C-D8E0-46AB-9D6F-D38A3C1CB0FB}.Debug MSVC - Small Strings|x64.Build.0 = DebugMSVCSmallStrings|x64 {C21DF78C-D8E0-46AB-9D6F-D38A3C1CB0FB}.Debug MSVC - String Truncation Is Error|Win32.ActiveCfg = DebugStringTruncationIsError|Win32 {C21DF78C-D8E0-46AB-9D6F-D38A3C1CB0FB}.Debug MSVC - String Truncation Is Error|Win32.Build.0 = DebugStringTruncationIsError|Win32 {C21DF78C-D8E0-46AB-9D6F-D38A3C1CB0FB}.Debug MSVC - String Truncation Is Error|x64.ActiveCfg = DebugStringTruncationIsError|x64 @@ -77,6 +85,10 @@ Global {C21DF78C-D8E0-46AB-9D6F-D38A3C1CB0FB}.Debug MSVC|Win32.Build.0 = Debug|Win32 {C21DF78C-D8E0-46AB-9D6F-D38A3C1CB0FB}.Debug MSVC|x64.ActiveCfg = Debug|x64 {C21DF78C-D8E0-46AB-9D6F-D38A3C1CB0FB}.Debug MSVC|x64.Build.0 = Debug|x64 + {C21DF78C-D8E0-46AB-9D6F-D38A3C1CB0FB}.Debug LLVM - No STL - Builtins|Win32.ActiveCfg = Debug-LLVM-NoSTL-Builtins|Win32 + {C21DF78C-D8E0-46AB-9D6F-D38A3C1CB0FB}.Debug LLVM - No STL - Builtins|Win32.Build.0 = Debug-LLVM-NoSTL-Builtins|Win32 + {C21DF78C-D8E0-46AB-9D6F-D38A3C1CB0FB}.Debug LLVM - No STL - Builtins|x64.ActiveCfg = Debug-LLVM-NoSTL-Builtins|x64 + {C21DF78C-D8E0-46AB-9D6F-D38A3C1CB0FB}.Debug LLVM - No STL - Builtins|x64.Build.0 = Debug-LLVM-NoSTL-Builtins|x64 {C21DF78C-D8E0-46AB-9D6F-D38A3C1CB0FB}.LLVM New|Win32.ActiveCfg = LLVM New|Win32 {C21DF78C-D8E0-46AB-9D6F-D38A3C1CB0FB}.LLVM New|Win32.Build.0 = LLVM New|Win32 {C21DF78C-D8E0-46AB-9D6F-D38A3C1CB0FB}.LLVM New|x64.ActiveCfg = LLVM New|x64 diff --git a/test/vs2019/etl.vcxproj b/test/vs2019/etl.vcxproj index b29e60e0..50bb65df 100644 --- a/test/vs2019/etl.vcxproj +++ b/test/vs2019/etl.vcxproj @@ -9,6 +9,14 @@ Debug Clang x64 + + Debug LLVM - No STL - Built-ins + Win32 + + + Debug LLVM - No STL - Built-ins + x64 + Debug LLVM Win32 @@ -17,6 +25,22 @@ Debug LLVM x64 + + Debug MSVC - No STL - Built-ins + Win32 + + + Debug MSVC - No STL - Built-ins + x64 + + + Debug-LLVM-NoSTL-Builtins + Win32 + + + Debug-LLVM-NoSTL-Builtins + x64 + DebugMSVCSmallStrings Win32 @@ -174,6 +198,13 @@ Unicode false + + Application + true + v142 + Unicode + false + Application true @@ -198,6 +229,18 @@ ClangCL Unicode + + Application + true + ClangCL + Unicode + + + Application + true + ClangCL + Unicode + Application true @@ -246,6 +289,12 @@ v142 Unicode + + Application + true + v142 + Unicode + Application true @@ -270,6 +319,18 @@ v142 Unicode + + Application + true + v142 + Unicode + + + Application + true + v142 + Unicode + Application true @@ -338,6 +399,9 @@ + + + @@ -350,6 +414,12 @@ + + + + + + @@ -374,6 +444,9 @@ + + + @@ -386,6 +459,12 @@ + + + + + + @@ -443,6 +522,11 @@ true \$(IntDir) + + true + true + \$(IntDir) + true true @@ -463,6 +547,16 @@ true \$(IntDir) + + false + true + \$(IntDir) + + + false + true + \$(IntDir) + false true @@ -496,6 +590,10 @@ true true + + true + true + true true @@ -512,6 +610,14 @@ true true + + true + true + + + true + true + true true @@ -690,6 +796,28 @@ $(OutDir)\etl.exe + + + + + Level3 + Disabled + WIN32;_DEBUG;_CONSOLE;_LIB;_CRT_SECURE_NO_WARNINGS;_SCL_SECURE_NO_WARNINGS;_SILENCE_CXX17_ADAPTOR_TYPEDEFS_DEPRECATION_WARNING;ETL_NO_STL;ETL_USE_TYPE_TRAITS_BUILTINS;%(PreprocessorDefinitions) + ./;../../../unittest-cpp/;../../include;../../test + + + true + stdcpp17 + ProgramDatabase + + + Console + true + + + $(OutDir)\etl.exe + + @@ -780,6 +908,54 @@ "$(OutDir)etl.exe" + + + + + Level3 + Disabled + WIN32;_DEBUG;_CONSOLE;_LIB;_CRT_SECURE_NO_WARNINGS;_SCL_SECURE_NO_WARNINGS;ETL_NO_STL;__clang__;%(PreprocessorDefinitions) + ../../../unittest-cpp/;../../include;../../test + + + false + stdcpp17 + false + ProgramDatabase + -Wno-self-assign /Zc:__cplusplus %(AdditionalOptions) + + + Console + false + + + "$(OutDir)etl.exe" + + + + + + + Level3 + Disabled + WIN32;_DEBUG;_CONSOLE;_LIB;_CRT_SECURE_NO_WARNINGS;_SCL_SECURE_NO_WARNINGS;ETL_NO_STL;ETL_USE_TYPE_TRAITS_BUILTINS;__clang__;%(PreprocessorDefinitions) + ../../../unittest-cpp/;../../include;../../test + + + false + stdcpp17 + false + ProgramDatabase + -Wno-self-assign /Zc:__cplusplus %(AdditionalOptions) + + + Console + false + + + "$(OutDir)etl.exe" + + @@ -975,6 +1151,27 @@ $(OutDir)\etl.exe + + + + + Level3 + Disabled + WIN32;_DEBUG;_CONSOLE;_LIB;_CRT_SECURE_NO_WARNINGS;_SCL_SECURE_NO_WARNINGS;%(PreprocessorDefinitions) + ../../unittest-cpp/UnitTest++/;../../include/etl;../../test + + + false + stdcpp14 + + + Console + true + + + $(OutDir)\etl.exe + + @@ -1059,6 +1256,48 @@ $(OutDir)\etl.exe + + + + + Level3 + Disabled + WIN32;_DEBUG;_CONSOLE;_LIB;_CRT_SECURE_NO_WARNINGS;_SCL_SECURE_NO_WARNINGS;%(PreprocessorDefinitions) + ../../unittest-cpp/UnitTest++/;../../include/etl;../../test + + + false + stdcpp14 + + + Console + true + + + $(OutDir)\etl.exe + + + + + + + Level3 + Disabled + WIN32;_DEBUG;_CONSOLE;_LIB;_CRT_SECURE_NO_WARNINGS;_SCL_SECURE_NO_WARNINGS;%(PreprocessorDefinitions) + ../../unittest-cpp/UnitTest++/;../../include/etl;../../test + + + false + stdcpp14 + + + Console + true + + + $(OutDir)\etl.exe + + @@ -1570,2923 +1809,4664 @@ - true - true + true true - true - true - true + true true + true true + true + true true + true + true + true + true + true + true true + true + true - true - true + true true - true - true - true + true true + true true + true + true true + true + true + true + true + true + true true + true + true - true - true + true true - true - true - true + true true + true true + true + true true + true + true + true + true + true + true true + true + true - true - true + true true - true - true - true + true true + true true + true + true true + true + true + true + true + true + true true + true + true - true - true + true true - true - true - true + true true + true true + true + true true + true + true + true + true + true + true true + true + true - true - true + true true - true - true - true + true true + true true + true + true true + true + true + true + true + true + true true + true + true - true - true + true true - true - true - true + true true + true true + true + true true + true + true + true + true + true + true true + true + true - true - true + true true - true - true - true + true true + true true + true + true true + true + true + true + true + true + true true + true + true - true - true + true true - true - true - true + true true + true true + true + true true + true + true + true + true + true + true true + true + true - true - true + true true - true - true - true + true true + true true + true + true true + true + true + true + true + true + true true + true + true - true - true + true true - true - true - true + true true + true true + true + true true + true + true + true + true + true + true true + true + true - true - true + true true - true - true - true + true true + true true + true + true true + true + true + true + true + true + true true + true + true - true - true + true true - true - true - true + true true + true true + true + true true + true + true + true + true + true + true true + true + true - true - true + true true - true - true - true + true true + true true + true + true true + true + true + true + true + true + true true + true + true - true - true + true true - true - true - true + true true + true true + true + true true + true + true + true + true + true + true true + true + true - true - true + true true - true - true - true + true true + true true + true + true true + true + true + true + true + true + true true + true + true - true - true + true true - true - true - true + true true + true true + true + true true + true + true + true + true + true + true true + true + true - true - true + true true - true - true - true + true true + true true + true + true true + true + true + true + true + true + true true + true + true - true - true + true true - true - true - true + true true + true true + true + true true + true + true + true + true + true + true true + true + true - true - true + true true - true - true - true + true true + true true + true + true true + true + true + true + true + true + true true + true + true - true - true + true true - true - true - true + true true + true true + true + true true + true + true + true + true + true + true true + true + true - true - true + true true - true - true - true + true true + true true + true + true true + true + true + true + true + true + true true + true + true - true - true + true true - true - true - true + true true + true true + true + true true + true + true + true + true + true + true true + true + true - true - true + true true - true - true - true + true true + true true + true + true true + true + true + true + true + true + true true + true + true - true - true + true true - true - true - true + true true + true true + true + true true + true + true + true + true + true + true true + true + true - true - true + true true - true - true - true + true true + true true + true + true true + true + true + true + true + true + true true + true + true - true - true - true - true + true + true + true true true true - true true true + true true - true - true + true + true true + true + true true - true + true + true - true - true - true - true + true + true + true true true true - true true true + true true - true - true + true + true true + true + true true - true + true + true - true - true + true true - true - true - true + true true + true true + true + true true + true + true + true + true + true + true true + true + true - true - true - true + true true + true true true true - true true true true + true + true + true + true + true + true + true + true + true - true - true - true + true true + true true true true - true true true true + true + true + true + true + true + true + true + true + true - true - true + true true - true - true - true + true true + true true + true + true true + true + true + true + true + true + true true + true + true - true - true - true - true + true + true + true true true true - true true true + true true - true - true + true + true true + true + true true - true + true + true - true - true + true true - true - true - true + true true + true true + true + true true + true + true + true + true + true + true true + true + true - true - true - true - true + true + true + true true true true - true true true + true true - true - true + true + true true + true + true true - true + true + true - true - true - true + true true + true true true true - true true true true + true + true + true + true + true + true + true + true + true - true - true - true + true true + true true true true - true true true true + true + true + true + true + true + true + true + true + true - true - true - true + true true + true true true true - true true true true + true + true + true + true + true + true + true + true + true - true - true - true + true true + true true true true - true true true true + true + true + true + true + true + true + true + true + true - true - true - true + true true + true true true true - true true true true + true + true + true + true + true + true + true + true + true - true - true + true true - true - true - true + true true + true true + true + true true + true + true + true + true + true + true true + true + true - true - true + true true - true - true - true + true true + true true + true + true true + true + true + true + true + true + true true + true + true - true - true - true + true true + true true true true - true true true true + true + true + true + true + true + true + true + true + true - true - true - true + true true + true true true true - true true true true + true + true + true + true + true + true + true + true + true - true - true + true true - true - true - true + true true + true true + true + true true + true + true + true + true + true + true true + true + true - true - true - true + true true + true true true true - true true true true + true + true + true + true + true + true + true + true + true - true - true - true + true true + true true true true - true true true true + true + true + true + true + true + true + true + true + true - true - true - true + true true + true true true true - true true true true + true + true + true + true + true + true + true + true + true - true - true - true + true true + true true true true - true true true true + true + true + true + true + true + true + true + true + true - true - true - true + true true + true true true true - true true true true + true + true + true + true + true + true + true + true + true - true - true + true true - true - true - true + true true + true true + true + true true + true + true + true + true + true + true true + true + true - true - true + true true - true - true - true + true true + true true + true + true true + true + true + true + true + true + true true + true + true - true - true + true true - true - true - true + true true + true true + true + true true + true + true + true + true + true + true true + true + true - true - true + true true - true - true - true + true true + true true + true + true true + true + true + true + true + true + true true + true + true - true - true + true true - true - true - true + true true + true true + true + true true + true + true + true + true + true + true true + true + true - true - true + true true - true - true - true + true true + true true + true + true true + true + true + true + true + true + true true + true + true - true - true - true + true true + true true true true - true true true true + true + true + true + true + true + true + true + true + true - true - true - true + true true + true true true true - true true true true + true + true + true + true + true + true + true + true + true - true - true + true true - true - true - true + true true + true true + true + true true + true + true + true + true + true + true true + true + true - true - true + true true - true - true - true + true true + true true + true + true true + true + true + true + true + true + true true + true + true - true - true - true + true true + true true true true - true true true true + true + true + true + true + true + true + true + true + true - true - true - true + true true + true true true true - true true true true + true + true + true + true + true + true + true + true + true - true - true + true true - true - true - true + true true + true true + true + true true + true + true + true + true + true + true true + true + true - true - true + true true - true - true - true + true true + true true + true + true true + true + true + true + true + true + true true + true + true - true - true + true true + true true true true - true true true true true + true + true + true + true + true + true + true + true - true - true + true true + true true true true - true true true true true + true + true + true + true + true + true + true + true - true - true + true true + true true true true - true true true true true + true + true + true + true + true + true + true + true - true - true + true true + true true true true - true true true true true + true + true + true + true + true + true + true + true - true - true + true true + true true true true - true true true true true + true + true + true + true + true + true + true + true - true - true + true true + true true true true - true true true true true + true + true + true + true + true + true + true + true - true - true + true true + true true true true - true true true true true + true + true + true + true + true + true + true + true - true - true + true true - true - true - true + true true + true true + true + true true + true + true + true + true + true + true true + true + true - true - true - true + true true + true true true true - true true true true + true + true + true + true + true + true + true + true + true - true - true + true true - true - true - true + true true + true true + true + true true + true + true + true + true + true + true true + true + true - true - true + true true - true - true - true + true true + true true + true + true true + true + true + true + true + true + true true + true + true - true - true + true true - true - true - true + true true + true true + true + true true + true + true + true + true + true + true true + true + true - true - true + true true - true - true - true + true true + true true + true + true true + true + true + true + true + true + true true + true + true - true - true + true true - true - true - true + true true + true true + true + true true + true + true + true + true + true + true true + true + true - true - true + true true - true - true - true + true true + true true + true + true true + true + true + true + true + true + true true + true + true - true - true + true true - true - true - true + true true + true true + true + true true + true + true + true + true + true + true true + true + true - true - true + true true - true - true - true + true true + true true + true + true true + true + true + true + true + true + true true + true + true - true - true + true true - true - true - true + true true + true true + true + true true + true + true + true + true + true + true true + true + true - true - true + true true - true - true - true + true true + true true + true + true true + true + true + true + true + true + true true + true + true - true - true + true true - true - true - true + true true + true true + true + true true + true + true + true + true + true + true true + true + true - true - true + true true - true - true - true + true true + true true + true + true true + true + true + true + true + true + true true + true + true - true - true + true true - true - true - true + true true + true true + true + true true + true + true + true + true + true + true true + true + true - true - true + true true - true - true - true + true true + true true + true + true true + true + true + true + true + true + true true + true + true - true - true + true true - true - true - true + true true + true true + true + true true + true + true + true + true + true + true true + true + true - true - true + true true - true - true - true + true true + true true + true + true true + true + true + true + true + true + true true + true + true - true - true + true true - true - true - true + true true + true true + true + true true + true + true + true + true + true + true true + true + true - true - true + true true - true - true - true + true true + true true + true + true true + true + true + true + true + true + true true + true + true - true - true + true true - true - true - true + true true + true true + true + true true + true + true + true + true + true + true true + true + true - true - true + true true - true - true - true + true true + true true + true + true true + true + true + true + true + true + true true + true + true - true - true + true true - true - true - true + true true + true true + true + true true + true + true + true + true + true + true true + true + true - true - true + true true - true - true - true + true true + true true + true + true true + true + true + true + true + true + true true + true + true - true - true + true true - true - true - true + true true + true true + true + true true + true + true + true + true + true + true true + true + true - true - true + true true - true - true - true + true true + true true + true + true true + true + true + true + true + true + true true + true + true - true - true + true true - true - true - true + true true + true true + true + true true + true + true + true + true + true + true true + true + true - true - true + true true - true - true - true + true true + true true + true + true true + true + true + true + true + true + true true + true + true - true - true + true true - true - true - true + true true + true true + true + true true + true + true + true + true + true + true true + true + true - true - true + true true - true - true - true + true true + true true + true + true true + true + true + true + true + true + true true + true + true - true - true - true - true + true + true + true true true true - true true true + true true - true - true + true + true true + true + true true - true + true + true - true - true + true true - true - true - true + true true + true true + true + true true + true + true + true + true + true + true true + true + true - true - true + true true - true - true - true + true true + true true + true + true true + true + true + true + true + true + true true + true + true - true - true - true - true + true + true + true true true true - true true true + true true - true - true + true + true true + true + true true - true + true + true - true - true + true true - true - true - true + true true + true true + true + true true + true + true + true + true + true + true true + true + true - true - true + true true - true - true - true + true true + true true + true + true true + true + true + true + true + true + true true + true + true - true - true + true true - true - true - true + true true + true true + true + true true + true + true + true + true + true + true true + true + true - true - true + true true - true - true - true + true true + true true + true + true true + true + true + true + true + true + true true + true + true - true - true + true true - true - true - true + true true + true true + true + true true + true + true + true + true + true + true true + true + true - true - true + true true - true - true - true + true true + true true + true + true true + true + true + true + true + true + true true + true + true - true - true + true true - true - true - true + true true + true true + true + true true + true + true + true + true + true + true true + true + true - true - true + true true - true - true - true + true true + true true + true + true true + true + true + true + true + true + true true + true + true - true - true + true true - true - true - true + true true + true true + true + true true + true + true + true + true + true + true true + true + true - true - true + true true - true - true - true + true true + true true + true + true true + true + true + true + true + true + true true + true + true - true - true - true - true + true + true + true true true true - true true true + true true - true - true + true + true true + true + true true - true + true + true - true - true + true true - true - true - true + true true + true true + true + true true + true + true + true + true + true + true true + true + true - true - true + true true - true - true - true + true true + true true + true + true true + true + true + true + true + true + true true + true + true - true - true + true true - true - true - true + true true + true true + true + true true + true + true + true + true + true + true true + true + true - true - true + true true - true - true - true + true true + true true + true + true true + true + true + true + true + true + true true + true + true - true - true + true true - true - true - true + true true + true true + true + true true + true + true + true + true + true + true true + true + true - true - true + true true - true - true - true + true true + true true + true + true true + true + true + true + true + true + true true + true + true - true - true - true - true + true + true + true true true true - true true true + true true - true - true + true + true true + true + true true - true + true + true - true - true + true true - true - true - true + true true + true true + true + true true + true + true + true + true + true + true true + true + true - true - true + true true - true - true - true + true true + true true + true + true true + true + true + true + true + true + true true + true + true - true - true + true true - true - true - true + true true + true true + true + true true + true + true + true + true + true + true true + true + true - true - true + true true - true - true - true + true true + true true + true + true true + true + true + true + true + true + true true + true + true - true - true + true true - true - true - true + true true + true true + true + true true + true + true + true + true + true + true true + true + true - true - true + true true - true - true - true + true true + true true + true + true true + true + true + true + true + true + true true + true + true - true - true - true - true + true + true + true true true true - true true true + true true - true - true + true + true true + true + true true - true + true + true - true - true + true true - true - true - true + true true + true true + true + true true + true + true + true + true + true + true true + true + true - true - true + true true - true - true - true + true true + true true + true + true true + true + true + true + true + true + true true + true + true - true - true - true + true true + true true true true - true true + true true true - true - true + true + true true + true + true + true + true + true - true - true + true true - true - true - true + true true + true true + true + true true + true + true + true + true + true + true true + true + true - true - true + true true - true - true - true + true true + true true + true + true true + true + true + true + true + true + true true + true + true - true - true + true true - true - true - true + true true + true true + true + true true + true + true + true + true + true + true true + true + true - true - true + true true - true - true - true + true true + true true + true + true true + true + true + true + true + true + true true + true + true - true - true + true true - true - true - true + true true + true true + true + true true + true + true + true + true + true + true true + true + true - true - true + true true - true - true - true + true true + true true + true + true true + true + true + true + true + true + true true + true + true - true - true + true true - true - true - true + true true + true true + true + true true + true + true + true + true + true + true true + true + true - true - true + true true - true - true - true + true true + true true + true + true true + true + true + true + true + true + true true + true + true - true - true + true true - true - true - true + true true + true true + true + true true + true + true + true + true + true + true true + true + true - true - true + true true - true - true - true + true true + true true + true + true true + true + true + true + true + true + true true + true + true - true - true + true true - true - true - true + true true + true true + true + true true + true + true + true + true + true + true true + true + true - true - true + true true - true - true - true + true true + true true + true + true true + true + true + true + true + true + true true + true + true - true - true + true true - true - true - true + true true + true true + true + true true + true + true + true + true + true + true true + true + true - true - true + true true - true - true - true + true true + true true + true + true true + true + true + true + true + true + true true + true + true - true - true + true true - true - true - true + true true + true true + true + true true + true + true + true + true + true + true true + true + true - true - true + true true - true - true - true + true true + true true + true + true true + true + true + true + true + true + true true + true + true - true - true + true true - true - true - true + true true + true true + true + true true + true + true + true + true + true + true true + true + true - true - true + true true - true - true - true + true true + true true + true + true true + true + true + true + true + true + true true + true + true - true - true + true true - true - true - true + true true + true true + true + true true + true + true + true + true + true + true true + true + true + true + true + true + true + true + true + true + true + true + true true true true - true - true - true true - true - true - true - true + true true true true - true - true - true + true true - true - true - true + true true + true true + true + true true + true + true + true + true + true + true true + true + true - true - true + true true - true - true - true + true true + true true + true + true true + true + true + true + true + true + true true + true + true - true - true + true true - true - true - true + true true + true true + true + true true + true + true + true + true + true + true true + true + true - true - true + true true - true - true - true + true true + true true + true + true true + true + true + true + true + true + true true + true + true - true - true + true true - true - true - true + true true + true true + true + true true + true + true + true + true + true + true true + true + true - true - true + true true - true - true - true + true true + true true + true + true true + true + true + true + true + true + true true + true + true - true - true + true true - true - true - true + true true + true true + true + true true + true + true + true + true + true + true true + true + true - true - true + true true - true - true - true + true true + true true + true + true true + true + true + true + true + true + true true + true + true - true - true + true true - true - true - true + true true + true true + true + true true + true + true + true + true + true + true true + true + true - true - true + true true - true - true - true + true true + true true + true + true true + true + true + true + true + true + true true + true + true - true - true - true - true + true + true + true true true true - true true true + true true - true - true + true + true true + true + true true - true + true + true - true - true + true true - true - true - true + true true + true true + true + true true + true + true + true + true + true + true true + true + true - true - true + true true - true - true - true + true true + true true + true + true true + true + true + true + true + true + true true + true + true - true - true + true true - true - true - true + true true + true true + true + true true + true + true + true + true + true + true true + true + true - true - true + true true - true - true - true + true true + true true + true + true true + true + true + true + true + true + true true + true + true - true - true + true true - true - true - true + true true + true true + true + true true + true + true + true + true + true + true true + true + true - true - true + true true - true - true - true + true true + true true + true + true true + true + true + true + true + true + true true + true + true - true - true + true true - true - true - true + true true + true true + true + true true + true + true + true + true + true + true true + true + true - true - true + true true - true - true - true + true true + true true + true + true true + true + true + true + true + true + true true + true + true - true - true + true true - true - true - true + true true + true true + true + true true + true + true + true + true + true + true true + true + true - true - true + true true - true - true - true + true true + true true + true + true true + true + true + true + true + true + true true + true + true - true - true + true true - true - true - true + true true + true true + true + true true + true + true + true + true + true + true true + true + true - true - true + true true - true - true - true + true true + true true + true + true true + true + true + true + true + true + true true + true + true - true - true + true true - true - true - true + true true + true true + true + true true + true + true + true + true + true + true true + true + true - true - true + true true - true - true - true + true true + true true + true + true true + true + true + true + true + true + true true + true + true - true - true + true true - true - true - true + true true + true true + true + true true + true + true + true + true + true + true true + true + true - true - true + true true - true - true - true + true true + true true + true + true true + true + true + true + true + true + true true + true + true - true - true - true - true + true + true + true true true true - true true true + true true - true - true + true + true true + true + true true - true + true + true - true - true - true - true + true + true + true true true true - true true true + true true - true - true + true + true true + true + true true - true + true + true - true - true + true true - true - true - true + true true + true true + true + true true + true + true + true + true + true + true true + true + true - true - true + true true - true - true - true + true true + true true + true + true true + true + true + true + true + true + true true + true + true - true - true + true true - true - true - true + true true + true true + true + true true + true + true + true + true + true + true true + true + true - true - true + true true - true - true - true + true true + true true + true + true true + true + true + true + true + true + true true + true + true - true - true + true true - true - true - true + true true + true true + true + true true + true + true + true + true + true + true true + true + true - true - true + true true - true - true - true + true true + true true + true + true true + true + true + true + true + true + true true + true + true - true - true + true true - true - true - true + true true + true true + true + true true + true + true + true + true + true + true true + true + true - true - true + true true - true - true - true + true true + true true + true + true true + true + true + true + true + true + true true + true + true - true - true - true - true + true + true + true true true true - true true true + true true - true - true + true + true true + true + true true - true + true + true - true - true + true true - true - true - true + true true + true true + true + true true + true + true + true + true + true + true true + true + true - true - true + true true - true - true - true + true true + true true + true + true true + true + true + true + true + true + true true + true + true - true - true + true true - true - true - true + true true + true true + true + true true + true + true + true + true + true + true true + true + true - true - true + true true - true - true - true + true true + true true + true + true true + true + true + true + true + true + true true + true + true - true - true + true true - true - true - true + true true + true true + true + true true + true + true + true + true + true + true true + true + true - true - true + true true - true - true - true + true true + true true + true + true true + true + true + true + true + true + true true + true + true - true - true + true true - true - true - true + true true + true true + true + true true + true + true + true + true + true + true true + true + true - true - true + true true - true - true - true + true true + true true + true + true true + true + true + true + true + true + true true + true + true - true - true - true - true + true + true + true true true true - true true true + true true - true - true + true + true true + true + true true - true + true + true - true - true + true true - true - true - true + true true + true true + true + true true + true + true + true + true + true + true true + true + true - true - true + true true - true - true - true + true true + true true + true + true true + true + true + true + true + true + true true + true + true - true - true + true true - true - true - true + true true + true true + true + true true + true + true + true + true + true + true true + true + true - true - true + true true - true - true - true + true true + true true + true + true true + true + true + true + true + true + true true + true + true - true - true + true true - true - true - true + true true + true true + true + true true + true + true + true + true + true + true true + true + true - true - true + true true - true - true - true + true true + true true + true + true true + true + true + true + true + true + true true + true + true - true - true + true true - true - true - true + true true + true true + true + true true + true + true + true + true + true + true true + true + true - true - true + true true - true - true - true + true true + true true + true + true true + true + true + true + true + true + true true + true + true - true - true + true true - true - true - true + true true + true true + true + true true + true + true + true + true + true + true true + true + true - true - true + true true - true - true - true + true true + true true + true + true true + true + true + true + true + true + true true + true + true - true - true + true true - true - true - true + true true + true true + true + true true + true + true + true + true + true + true true + true + true - true - true + true true - true - true - true + true true + true true + true + true true + true + true + true + true + true + true true + true + true - true - true + true true - true - true - true + true true + true true + true + true true + true + true + true + true + true + true true + true + true - true - true + true true - true - true - true + true true + true true + true + true true + true + true + true + true + true + true true + true + true - true - true + true true - true - true - true + true true + true true + true + true true + true + true + true + true + true + true true + true + true - true - true + true true - true - true - true + true true + true true + true + true true + true + true + true + true + true + true true + true + true - true - true + true true - true - true - true + true true + true true + true + true true + true + true + true + true + true + true true + true + true - true - true + true true - true - true - true + true true + true true + true + true true + true + true + true + true + true + true true + true + true - true - true + true true - true - true - true + true true + true true + true + true true + true + true + true + true + true + true true + true + true - true - true + true true - true - true - true + true true + true true + true + true true + true + true + true + true + true + true true + true + true - true - true + true true - true - true - true + true true + true true + true + true true + true + true + true + true + true + true true + true + true - true - true - true - true + true + true + true true true true - true true true + true true - true - true + true + true true + true + true true - true + true + true - true - true + true true - true - true - true + true true + true true + true + true true - true - - + true true true true - true - true - true true - true - true - true - true + true true true true - true + true + true + true + true + true + true + true + true + true + true true true true - true - true - true true - true - true - true - true + true true true true + + + true + true + true + true + true + true + true + true true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + true + true + true + true + true + true - true - true + true true - true - true - true + true true + true true + true + true true + true + true + true + true + true + true true + true + true - true - true + true true - true - true - true + true true + true true + true + true true + true + true + true + true + true + true true + true + true - true - true + true true - true - true - true + true true + true true + true + true true + true + true + true + true + true + true true + true + true - true - true + true true - true - true - true + true true + true true + true + true true + true + true + true + true + true + true true + true + true - true - true + true true - true - true - true + true true + true true + true + true true + true + true + true + true + true + true true + true + true - true - true + true true - true - true - true + true true + true true + true + true true + true + true + true + true + true + true true + true + true - true - true + true true - true - true - true + true true + true true + true + true true + true + true + true + true + true + true true + true + true @@ -4601,10 +6581,13 @@ false false false + false false false false false + false + false false false false @@ -4614,10 +6597,13 @@ false false false + false false false false false + false + false false false false @@ -4646,10 +6632,13 @@ false false false + false false false false false + false + false false false false @@ -4659,10 +6648,13 @@ false false false + false false false false false + false + false false false false @@ -4686,10 +6678,13 @@ false false false + false false false false false + false + false false false false @@ -4699,10 +6694,13 @@ false false false + false false false false false + false + false false false false @@ -4716,10 +6714,13 @@ false false false + false false false false false + false + false false false false @@ -4729,10 +6730,13 @@ false false false + false false false false false + false + false false false false @@ -4746,10 +6750,13 @@ false false false + false false false false false + false + false false false false @@ -4759,10 +6766,13 @@ false false false + false false false false false + false + false false false false @@ -4776,10 +6786,13 @@ false false false + false false false false false + false + false false false false @@ -4789,10 +6802,13 @@ false false false + false false false false false + false + false false false false @@ -4806,10 +6822,13 @@ false false false + false false false false false + false + false false false false @@ -4819,10 +6838,13 @@ false false false + false false false false false + false + false false false false @@ -4841,10 +6863,13 @@ false false false + false false false false false + false + false false false false @@ -4854,10 +6879,13 @@ false false false + false false false false false + false + false false false false @@ -4875,10 +6903,13 @@ false false false + false false false false false + false + false false false false @@ -4888,10 +6919,13 @@ false false false + false false false false false + false + false false false false @@ -4915,10 +6949,13 @@ false false false + false false false false false + false + false false false false @@ -4928,10 +6965,13 @@ false false false + false false false false false + false + false false false false diff --git a/test/vs2019/etl.vcxproj.filters b/test/vs2019/etl.vcxproj.filters index a6f1e78e..a69d030f 100644 --- a/test/vs2019/etl.vcxproj.filters +++ b/test/vs2019/etl.vcxproj.filters @@ -118,6 +118,9 @@ {0e4d2126-b9b7-4eef-b5ca-18363b1e01ce} + + {5b76fd56-eb83-489f-b9a6-798c07c5fa76} + @@ -1691,567 +1694,6 @@ Source Files - - Source Files\Sanity Checks - - - Source Files\Sanity Checks - - - Source Files\Sanity Checks - - - Source Files\Sanity Checks - - - Source Files\Sanity Checks - - - Source Files\Sanity Checks - - - Source Files\Sanity Checks - - - Source Files\Sanity Checks - - - Source Files\Sanity Checks - - - Source Files\Sanity Checks - - - Source Files\Sanity Checks - - - Source Files\Sanity Checks - - - Source Files\Sanity Checks - - - Source Files\Sanity Checks - - - Source Files\Sanity Checks - - - Source Files\Sanity Checks - - - Source Files\Sanity Checks - - - Source Files\Sanity Checks - - - Source Files\Sanity Checks - - - Source Files\Sanity Checks - - - Source Files\Sanity Checks - - - Source Files\Sanity Checks - - - Source Files\Sanity Checks - - - Source Files\Sanity Checks - - - Source Files\Sanity Checks - - - Source Files\Sanity Checks - - - Source Files\Sanity Checks - - - Source Files\Sanity Checks - - - Source Files\Sanity Checks - - - Source Files\Sanity Checks - - - Source Files\Sanity Checks - - - Source Files\Sanity Checks - - - Source Files\Sanity Checks - - - Source Files\Sanity Checks - - - Source Files\Sanity Checks - - - Source Files\Sanity Checks - - - Source Files\Sanity Checks - - - Source Files\Sanity Checks - - - Source Files\Sanity Checks - - - Source Files\Sanity Checks - - - Source Files\Sanity Checks - - - Source Files\Sanity Checks - - - Source Files\Sanity Checks - - - Source Files\Sanity Checks - - - Source Files\Sanity Checks - - - Source Files\Sanity Checks - - - Source Files\Sanity Checks - - - Source Files\Sanity Checks - - - Source Files\Sanity Checks - - - Source Files\Sanity Checks - - - Source Files\Sanity Checks - - - Source Files\Sanity Checks - - - Source Files\Sanity Checks - - - Source Files\Sanity Checks - - - Source Files\Sanity Checks - - - Source Files\Sanity Checks - - - Source Files\Sanity Checks - - - Source Files\Sanity Checks - - - Source Files\Sanity Checks - - - Source Files\Sanity Checks - - - Source Files\Sanity Checks - - - Source Files\Sanity Checks - - - Source Files\Sanity Checks - - - Source Files\Sanity Checks - - - Source Files\Sanity Checks - - - Source Files\Sanity Checks - - - Source Files\Sanity Checks - - - Source Files\Sanity Checks - - - Source Files\Sanity Checks - - - Source Files\Sanity Checks - - - Source Files\Sanity Checks - - - Source Files\Sanity Checks - - - Source Files\Sanity Checks - - - Source Files\Sanity Checks - - - Source Files\Sanity Checks - - - Source Files\Sanity Checks - - - Source Files\Sanity Checks - - - Source Files\Sanity Checks - - - Source Files\Sanity Checks - - - Source Files\Sanity Checks - - - Source Files\Sanity Checks - - - Source Files\Sanity Checks - - - Source Files\Sanity Checks - - - Source Files\Sanity Checks - - - Source Files\Sanity Checks - - - Source Files\Sanity Checks - - - Source Files\Sanity Checks - - - Source Files\Sanity Checks - - - Source Files\Sanity Checks - - - Source Files\Sanity Checks - - - Source Files\Sanity Checks - - - Source Files\Sanity Checks - - - Source Files\Sanity Checks - - - Source Files\Sanity Checks - - - Source Files\Sanity Checks - - - Source Files\Sanity Checks - - - Source Files\Sanity Checks - - - Source Files\Sanity Checks - - - Source Files\Sanity Checks - - - Source Files\Sanity Checks - - - Source Files\Sanity Checks - - - Source Files\Sanity Checks - - - Source Files\Sanity Checks - - - Source Files\Sanity Checks - - - Source Files\Sanity Checks - - - Source Files\Sanity Checks - - - Source Files\Sanity Checks - - - Source Files\Sanity Checks - - - Source Files\Sanity Checks - - - Source Files\Sanity Checks - - - Source Files\Sanity Checks - - - Source Files\Sanity Checks - - - Source Files\Sanity Checks - - - Source Files\Sanity Checks - - - Source Files\Sanity Checks - - - Source Files\Sanity Checks - - - Source Files\Sanity Checks - - - Source Files\Sanity Checks - - - Source Files\Sanity Checks - - - Source Files\Sanity Checks - - - Source Files\Sanity Checks - - - Source Files\Sanity Checks - - - Source Files\Sanity Checks - - - Source Files\Sanity Checks - - - Source Files\Sanity Checks - - - Source Files\Sanity Checks - - - Source Files\Sanity Checks - - - Source Files\Sanity Checks - - - Source Files\Sanity Checks - - - Source Files\Sanity Checks - - - Source Files\Sanity Checks - - - Source Files\Sanity Checks - - - Source Files\Sanity Checks - - - Source Files\Sanity Checks - - - Source Files\Sanity Checks - - - Source Files\Sanity Checks - - - Source Files\Sanity Checks - - - Source Files\Sanity Checks - - - Source Files\Sanity Checks - - - Source Files\Sanity Checks - - - Source Files\Sanity Checks - - - Source Files\Sanity Checks - - - Source Files\Sanity Checks - - - Source Files\Sanity Checks - - - Source Files\Sanity Checks - - - Source Files\Sanity Checks - - - Source Files\Sanity Checks - - - Source Files\Sanity Checks - - - Source Files\Sanity Checks - - - Source Files\Sanity Checks - - - Source Files\Sanity Checks - - - Source Files\Sanity Checks - - - Source Files\Sanity Checks - - - Source Files\Sanity Checks - - - Source Files\Sanity Checks - - - Source Files\Sanity Checks - - - Source Files\Sanity Checks - - - Source Files\Sanity Checks - - - Source Files\Sanity Checks - - - Source Files\Sanity Checks - - - Source Files\Sanity Checks - - - Source Files\Sanity Checks - - - Source Files\Sanity Checks - - - Source Files\Sanity Checks - - - Source Files\Sanity Checks - - - Source Files\Sanity Checks - - - Source Files\Sanity Checks - - - Source Files\Sanity Checks - - - Source Files\Sanity Checks - - - Source Files\Sanity Checks - - - Source Files\Sanity Checks - - - Source Files\Sanity Checks - - - Source Files\Sanity Checks - - - Source Files\Sanity Checks - - - Source Files\Sanity Checks - - - Source Files\Sanity Checks - - - Source Files\Sanity Checks - - - Source Files\Sanity Checks - - - Source Files\Sanity Checks - - - Source Files\Sanity Checks - - - Source Files\Sanity Checks - - - Source Files\Sanity Checks - - - Source Files\Sanity Checks - - - Source Files\Sanity Checks - - - Source Files\Sanity Checks - - - Source Files\Sanity Checks - - - Source Files\Sanity Checks - Source Files @@ -2384,87 +1826,6 @@ Source Files - - Source Files\Sanity Checks - - - Source Files\Sanity Checks - - - Source Files\Sanity Checks - - - Source Files\Sanity Checks - - - Source Files\Sanity Checks - - - Source Files\Sanity Checks - - - Source Files\Sanity Checks - - - Source Files\Sanity Checks - - - Source Files\Sanity Checks - - - Source Files\Sanity Checks - - - Source Files\Sanity Checks - - - Source Files\Sanity Checks - - - Source Files\Sanity Checks - - - Source Files\Sanity Checks - - - Source Files\Sanity Checks - - - Source Files\Sanity Checks - - - Source Files\Sanity Checks - - - Source Files\Sanity Checks - - - Source Files\Sanity Checks - - - Source Files\Sanity Checks - - - Source Files\Sanity Checks - - - Source Files\Sanity Checks - - - Source Files\Sanity Checks - - - Source Files\Sanity Checks - - - Source Files\Sanity Checks - - - Source Files\Sanity Checks - - - Source Files\Sanity Checks - Source Files @@ -2495,9 +1856,6 @@ Source Files - - Source Files\Sanity Checks - Source Files @@ -2510,45 +1868,6 @@ Source Files - - Source Files\Sanity Checks - - - Source Files\Sanity Checks - - - Source Files\Sanity Checks - - - Source Files\Sanity Checks - - - Source Files\Sanity Checks - - - Source Files\Sanity Checks - - - Source Files\Sanity Checks - - - Source Files\Sanity Checks - - - Source Files\Sanity Checks - - - Source Files\Sanity Checks - - - Source Files\Sanity Checks - - - Source Files\Sanity Checks - - - Source Files\Sanity Checks - Source Files @@ -2573,24 +1892,711 @@ Source Files - - Source Files\Sanity Checks - - - Source Files\Sanity Checks - - - Source Files\Sanity Checks - - - Source Files\Sanity Checks - Source Files Source Files + + Source Files\Sanity Checks + + + Source Files\Sanity Checks + + + Source Files\Sanity Checks + + + Source Files\Sanity Checks + + + Source Files\Sanity Checks + + + Source Files\Sanity Checks + + + Source Files\Sanity Checks + + + Source Files\Sanity Checks + + + Source Files\Sanity Checks + + + Source Files\Sanity Checks + + + Source Files\Sanity Checks + + + Source Files\Sanity Checks + + + Source Files\Sanity Checks + + + Source Files\Sanity Checks + + + Source Files\Sanity Checks + + + Source Files\Sanity Checks + + + Source Files\Sanity Checks + + + Source Files\Sanity Checks + + + Source Files\Sanity Checks + + + Source Files\Sanity Checks + + + Source Files\Sanity Checks + + + Source Files\Sanity Checks + + + Source Files\Sanity Checks + + + Source Files\Sanity Checks + + + Source Files\Sanity Checks + + + Source Files\Sanity Checks + + + Source Files\Sanity Checks + + + Source Files\Sanity Checks + + + Source Files\Sanity Checks + + + Source Files\Sanity Checks + + + Source Files\Sanity Checks + + + Source Files\Sanity Checks + + + Source Files\Sanity Checks + + + Source Files\Sanity Checks + + + Source Files\Sanity Checks + + + Source Files\Sanity Checks + + + Source Files\Sanity Checks + + + Source Files\Sanity Checks + + + Source Files\Sanity Checks + + + Source Files\Sanity Checks + + + Source Files\Sanity Checks + + + Source Files\Sanity Checks + + + Source Files\Sanity Checks + + + Source Files\Sanity Checks + + + Source Files\Sanity Checks + + + Source Files\Sanity Checks + + + Source Files\Sanity Checks + + + Source Files\Sanity Checks + + + Source Files\Sanity Checks + + + Source Files\Sanity Checks + + + Source Files\Sanity Checks + + + Source Files\Sanity Checks + + + Source Files\Sanity Checks + + + Source Files\Sanity Checks + + + Source Files\Sanity Checks + + + Source Files\Sanity Checks + + + Source Files\Sanity Checks + + + Source Files\Sanity Checks + + + Source Files\Sanity Checks + + + Source Files\Sanity Checks + + + Source Files\Sanity Checks + + + Source Files\Sanity Checks + + + Source Files\Sanity Checks + + + Source Files\Sanity Checks + + + Source Files\Sanity Checks + + + Source Files\Sanity Checks + + + Source Files\Sanity Checks + + + Source Files\Sanity Checks + + + Source Files\Sanity Checks + + + Source Files\Sanity Checks + + + Source Files\Sanity Checks + + + Source Files\Sanity Checks + + + Source Files\Sanity Checks + + + Source Files\Sanity Checks + + + Source Files\Sanity Checks + + + Source Files\Sanity Checks + + + Source Files\Sanity Checks + + + Source Files\Sanity Checks + + + Source Files\Sanity Checks + + + Source Files\Sanity Checks + + + Source Files\Sanity Checks + + + Source Files\Sanity Checks + + + Source Files\Sanity Checks + + + Source Files\Sanity Checks + + + Source Files\Sanity Checks + + + Source Files\Sanity Checks + + + Source Files\Sanity Checks + + + Source Files\Sanity Checks + + + Source Files\Sanity Checks + + + Source Files\Sanity Checks + + + Source Files\Sanity Checks + + + Source Files\Sanity Checks + + + Source Files\Sanity Checks + + + Source Files\Sanity Checks + + + Source Files\Sanity Checks + + + Source Files\Sanity Checks + + + Source Files\Sanity Checks + + + Source Files\Sanity Checks + + + Source Files\Sanity Checks + + + Source Files\Sanity Checks + + + Source Files\Sanity Checks + + + Source Files\Sanity Checks + + + Source Files\Sanity Checks + + + Source Files\Sanity Checks + + + Source Files\Sanity Checks + + + Source Files\Sanity Checks + + + Source Files\Sanity Checks + + + Source Files\Sanity Checks + + + Source Files\Sanity Checks + + + Source Files\Sanity Checks + + + Source Files\Sanity Checks + + + Source Files\Sanity Checks + + + Source Files\Sanity Checks + + + Source Files\Sanity Checks + + + Source Files\Sanity Checks + + + Source Files\Sanity Checks + + + Source Files\Sanity Checks + + + Source Files\Sanity Checks + + + Source Files\Sanity Checks + + + Source Files\Sanity Checks + + + Source Files\Sanity Checks + + + Source Files\Sanity Checks + + + Source Files\Sanity Checks + + + Source Files\Sanity Checks + + + Source Files\Sanity Checks + + + Source Files\Sanity Checks + + + Source Files\Sanity Checks + + + Source Files\Sanity Checks + + + Source Files\Sanity Checks + + + Source Files\Sanity Checks + + + Source Files\Sanity Checks + + + Source Files\Sanity Checks + + + Source Files\Sanity Checks + + + Source Files\Sanity Checks + + + Source Files\Sanity Checks + + + Source Files\Sanity Checks + + + Source Files\Sanity Checks + + + Source Files\Sanity Checks + + + Source Files\Sanity Checks + + + Source Files\Sanity Checks + + + Source Files\Sanity Checks + + + Source Files\Sanity Checks + + + Source Files\Sanity Checks + + + Source Files\Sanity Checks + + + Source Files\Sanity Checks + + + Source Files\Sanity Checks + + + Source Files\Sanity Checks + + + Source Files\Sanity Checks + + + Source Files\Sanity Checks + + + Source Files\Sanity Checks + + + Source Files\Sanity Checks + + + Source Files\Sanity Checks + + + Source Files\Sanity Checks + + + Source Files\Sanity Checks + + + Source Files\Sanity Checks + + + Source Files\Sanity Checks + + + Source Files\Sanity Checks + + + Source Files\Sanity Checks + + + Source Files\Sanity Checks + + + Source Files\Sanity Checks + + + Source Files\Sanity Checks + + + Source Files\Sanity Checks + + + Source Files\Sanity Checks + + + Source Files\Sanity Checks + + + Source Files\Sanity Checks + + + Source Files\Sanity Checks + + + Source Files\Sanity Checks + + + Source Files\Sanity Checks + + + Source Files\Sanity Checks + + + Source Files\Sanity Checks + + + Source Files\Sanity Checks + + + Source Files\Sanity Checks + + + Source Files\Sanity Checks + + + Source Files\Sanity Checks + + + Source Files\Sanity Checks + + + Source Files\Sanity Checks + + + Source Files\Sanity Checks + + + Source Files\Sanity Checks + + + Source Files\Sanity Checks + + + Source Files\Sanity Checks + + + Source Files\Sanity Checks + + + Source Files\Sanity Checks + + + Source Files\Sanity Checks + + + Source Files\Sanity Checks + + + Source Files\Sanity Checks + + + Source Files\Sanity Checks + + + Source Files\Sanity Checks + + + Source Files\Sanity Checks + + + Source Files\Sanity Checks + + + Source Files\Sanity Checks + + + Source Files\Sanity Checks + + + Source Files\Sanity Checks + + + Source Files\Sanity Checks + + + Source Files\Sanity Checks + + + Source Files\Sanity Checks + + + Source Files\Sanity Checks + + + Source Files\Sanity Checks + + + Source Files\Sanity Checks + + + Source Files\Sanity Checks + + + Source Files\Sanity Checks + + + Source Files\Sanity Checks + + + Source Files\Sanity Checks + + + Source Files\Sanity Checks + + + Source Files\Sanity Checks + + + Source Files\Sanity Checks + + + Source Files\Sanity Checks + + + Source Files\Sanity Checks + + + Source Files\Sanity Checks + + + Source Files\Sanity Checks + + + Source Files\Sanity Checks + + + Source Files\Sanity Checks + + + Source Files\Sanity Checks + + + Source Files\Sanity Checks + + + Source Files\Sanity Checks + + + Source Files\Sanity Checks + + + Source Files\Sanity Checks + + + Source Files\Sanity Checks + + + Source Files\Sanity Checks + + + Source Files\Sanity Checks + + + Source Files\Sanity Checks + + + Source Files\Sanity Checks + + + Source Files\Sanity Checks + + + Source Files\Sanity Checks + + + Source Files\Sanity Checks + + + Source Files\Sanity Checks + + + Source Files\Sanity Checks + + + Source Files\Sanity Checks + + + Source Files\Sanity Checks + + + Source Files\Sanity Checks + + + Source Files\Sanity Checks + + + Source Files\Sanity Checks + + + Source Files\Sanity Checks + + + Source Files\Sanity Checks + @@ -2707,7 +2713,7 @@ Source Files\Sanity Checks\C++17 - Source Files\Sanity Checks + Source Files\Sanity Checks\Logs @@ -2735,4 +2741,4 @@ Resource Files - + \ No newline at end of file From da1daf64e22e38b0c9d0d3e5c81d333c90d15b97 Mon Sep 17 00:00:00 2001 From: John Wellbelove Date: Mon, 26 Jul 2021 17:17:22 +0100 Subject: [PATCH 2/7] Type traits refactor --- support/Release notes.txt | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/support/Release notes.txt b/support/Release notes.txt index c22c2eee..463015c7 100644 --- a/support/Release notes.txt +++ b/support/Release notes.txt @@ -2,8 +2,7 @@ 20.14.0 Added a vaiadic version of etl::variant. Usable for C++11 and up. Added etl::overload pattern class. Groups lambdas into a functor class. -Added etl::is_assignable, etl::is_lvalue_assignable, etl::is_constructible, etl::is_copy_constructible -and etl::is_move_constructible to type_traits.h. Uses STL, compiler built-ins or user defined specialisations, dependent on settings. +Refactored type_traits.h. Uses STL, compiler built-ins or user defined specialisations, dependent on settings. Added etl::conditional_t to type_traits.h Added etl::conjunction and etl::disjunction to type_traits.h Added etl::integer_sequence to utility.h From 734f14a8ec20dee1896f13a05a1048128fe55735 Mon Sep 17 00:00:00 2001 From: John Wellbelove Date: Thu, 29 Jul 2021 14:15:49 +0100 Subject: [PATCH 3/7] Changed variant files names --- include/etl/private/{variant_new.h => variant_variadic.h} | 0 include/etl/variant.h | 2 +- test/CMakeLists.txt | 2 +- test/sanity-check/c++03/CMakeLists.txt | 2 +- test/sanity-check/c++11/CMakeLists.txt | 2 +- test/sanity-check/c++14/CMakeLists.txt | 2 +- test/sanity-check/c++17/CMakeLists.txt | 2 +- .../{variant_new.h.t.cpp => variant_variadic.h.t.cpp} | 2 +- test/{test_variant_new.cpp => test_variant_variadic.cpp} | 2 +- test/vs2019/etl.vcxproj | 6 +++--- test/vs2019/etl.vcxproj.filters | 6 +++--- 11 files changed, 14 insertions(+), 14 deletions(-) rename include/etl/private/{variant_new.h => variant_variadic.h} (100%) rename test/sanity-check/{variant_new.h.t.cpp => variant_variadic.h.t.cpp} (96%) rename test/{test_variant_new.cpp => test_variant_variadic.cpp} (99%) diff --git a/include/etl/private/variant_new.h b/include/etl/private/variant_variadic.h similarity index 100% rename from include/etl/private/variant_new.h rename to include/etl/private/variant_variadic.h diff --git a/include/etl/variant.h b/include/etl/variant.h index 7f6b4546..c8664590 100644 --- a/include/etl/variant.h +++ b/include/etl/variant.h @@ -34,7 +34,7 @@ SOFTWARE. #if !ETL_CPP11_SUPPORTED || ETL_USE_LEGACY_VARIANT #include "private/variant_legacy.h" #else - #include "private/variant_new.h" + #include "private/variant_variadic.h" #endif #endif diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt index c0513466..74cf97b1 100644 --- a/test/CMakeLists.txt +++ b/test/CMakeLists.txt @@ -238,7 +238,7 @@ set(TEST_SOURCE_FILES test_utility.cpp test_variance.cpp test_variant_legacy.cpp - test_variant_new.cpp + test_variant_variadic.cpp test_variant_pool.cpp test_vector.cpp test_vector_external_buffer.cpp diff --git a/test/sanity-check/c++03/CMakeLists.txt b/test/sanity-check/c++03/CMakeLists.txt index 9361a7c5..5347a376 100644 --- a/test/sanity-check/c++03/CMakeLists.txt +++ b/test/sanity-check/c++03/CMakeLists.txt @@ -244,7 +244,7 @@ target_sources(t98 PRIVATE etl_profile.h ../utility.h.t.cpp ../variance.h.t.cpp ../variant_legacy.h.t.cpp - ../variant_new.h.t.cpp + ../variant_variadic.h.t.cpp ../variant_pool.h.t.cpp ../vector.h.t.cpp ../version.h.t.cpp diff --git a/test/sanity-check/c++11/CMakeLists.txt b/test/sanity-check/c++11/CMakeLists.txt index 89342ec0..087c9085 100644 --- a/test/sanity-check/c++11/CMakeLists.txt +++ b/test/sanity-check/c++11/CMakeLists.txt @@ -244,7 +244,7 @@ target_sources(t11 PRIVATE etl_profile.h ../utility.h.t.cpp ../variance.h.t.cpp ../variant_legacy.h.t.cpp - ../variant_new.h.t.cpp + ../variant_variadic.h.t.cpp ../variant_pool.h.t.cpp ../vector.h.t.cpp ../version.h.t.cpp diff --git a/test/sanity-check/c++14/CMakeLists.txt b/test/sanity-check/c++14/CMakeLists.txt index 65dcab43..fd9a2e2e 100644 --- a/test/sanity-check/c++14/CMakeLists.txt +++ b/test/sanity-check/c++14/CMakeLists.txt @@ -244,7 +244,7 @@ target_sources(t14 PRIVATE etl_profile.h ../utility.h.t.cpp ../variance.h.t.cpp ../variant_legacy.h.t.cpp - ../variant_new.h.t.cpp + ../variant_variadic.h.t.cpp ../variant_pool.h.t.cpp ../vector.h.t.cpp ../version.h.t.cpp diff --git a/test/sanity-check/c++17/CMakeLists.txt b/test/sanity-check/c++17/CMakeLists.txt index 4e691395..63d76bd3 100644 --- a/test/sanity-check/c++17/CMakeLists.txt +++ b/test/sanity-check/c++17/CMakeLists.txt @@ -244,7 +244,7 @@ target_sources(t17 PRIVATE etl_profile.h ../utility.h.t.cpp ../variance.h.t.cpp ../variant_legacy.h.t.cpp - ../variant_new.h.t.cpp + ../variant_variadic.h.t.cpp ../variant_pool.h.t.cpp ../vector.h.t.cpp ../version.h.t.cpp diff --git a/test/sanity-check/variant_new.h.t.cpp b/test/sanity-check/variant_variadic.h.t.cpp similarity index 96% rename from test/sanity-check/variant_new.h.t.cpp rename to test/sanity-check/variant_variadic.h.t.cpp index 62b5bea7..82835c85 100644 --- a/test/sanity-check/variant_new.h.t.cpp +++ b/test/sanity-check/variant_variadic.h.t.cpp @@ -26,4 +26,4 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ******************************************************************************/ -#include +#include diff --git a/test/test_variant_new.cpp b/test/test_variant_variadic.cpp similarity index 99% rename from test/test_variant_new.cpp rename to test/test_variant_variadic.cpp index bb70329b..3da00fd2 100644 --- a/test/test_variant_new.cpp +++ b/test/test_variant_variadic.cpp @@ -28,7 +28,7 @@ SOFTWARE. #include "unit_test_framework.h" -#include "etl/private/variant_new.h" +#include "etl/private/variant_variadic.h" #include "etl/visitor.h" #include "etl/overload.h" diff --git a/test/vs2019/etl.vcxproj b/test/vs2019/etl.vcxproj index 50bb65df..24cac775 100644 --- a/test/vs2019/etl.vcxproj +++ b/test/vs2019/etl.vcxproj @@ -1596,7 +1596,7 @@ - + @@ -6288,7 +6288,7 @@ true true - + true true true @@ -7061,7 +7061,7 @@ - + diff --git a/test/vs2019/etl.vcxproj.filters b/test/vs2019/etl.vcxproj.filters index a69d030f..1fe51913 100644 --- a/test/vs2019/etl.vcxproj.filters +++ b/test/vs2019/etl.vcxproj.filters @@ -1119,7 +1119,7 @@ ETL\Private - + ETL\Private @@ -1874,7 +1874,7 @@ Source Files - + Source Files @@ -2570,7 +2570,7 @@ Source Files\Sanity Checks - + Source Files\Sanity Checks From b886ee381b06249989ddf7e5dae986d2f6c7d88b Mon Sep 17 00:00:00 2001 From: John Wellbelove Date: Thu, 29 Jul 2021 14:27:41 +0100 Subject: [PATCH 4/7] Updated version numbers --- include/etl/version.h | 2 +- library.json | 2 +- library.properties | 2 +- meson.build | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/include/etl/version.h b/include/etl/version.h index 4d30e25f..12592eba 100644 --- a/include/etl/version.h +++ b/include/etl/version.h @@ -38,7 +38,7 @@ SOFTWARE. ///\ingroup utilities #define ETL_VERSION_MAJOR 20 -#define ETL_VERSION_MINOR 13 +#define ETL_VERSION_MINOR 14 #define ETL_VERSION_PATCH 0 #define ETL_VERSION ETL_STRINGIFY(ETL_VERSION_MAJOR) "." ETL_STRINGIFY(ETL_VERSION_MINOR) "." ETL_STRINGIFY(ETL_VERSION_PATCH) #define ETL_VERSION_W ETL_STRINGIFY(ETL_VERSION_MAJOR) L"." ETL_STRINGIFY(ETL_VERSION_MINOR) L"." ETL_STRINGIFY(ETL_VERSION_PATCH) diff --git a/library.json b/library.json index d18c46c6..990b2d31 100644 --- a/library.json +++ b/library.json @@ -1,6 +1,6 @@ { "name": "ETL Embedded Template Library", - "version": "20.13.0", + "version": "20.14.0", "author s": { "name": "John Wellbelove", "email": "john.wellbelove@etlcpp.com" diff --git a/library.properties b/library.properties index 37a22174..5021b0d1 100644 --- a/library.properties +++ b/library.properties @@ -1,5 +1,5 @@ name=Embedded Template Library ETL -version=20.13.0 +version=20.14.0 author= John Wellbelove maintainer=John Wellbelove license=MIT diff --git a/meson.build b/meson.build index 095f2da6..7d295964 100644 --- a/meson.build +++ b/meson.build @@ -8,7 +8,7 @@ project('PROJECT_NAME', 'cpp_std=c++17', 'build.cpp_std=c++17', ], meson_version: '>=0.54.0', - version: '20.13.0' + version: '20.14.0' ) ###################### From 9fbb6c80087b3ad6716bfd9e5028d72e8351837c Mon Sep 17 00:00:00 2001 From: John Wellbelove Date: Mon, 26 Jul 2021 17:17:22 +0100 Subject: [PATCH 5/7] Type traits refactor --- test/vs2019/etl.vcxproj | 2 +- test/vs2019/etl.vcxproj.filters | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/test/vs2019/etl.vcxproj b/test/vs2019/etl.vcxproj index 24cac775..5f65af23 100644 --- a/test/vs2019/etl.vcxproj +++ b/test/vs2019/etl.vcxproj @@ -7129,4 +7129,4 @@ - \ No newline at end of file + diff --git a/test/vs2019/etl.vcxproj.filters b/test/vs2019/etl.vcxproj.filters index 1fe51913..d1b3f4b4 100644 --- a/test/vs2019/etl.vcxproj.filters +++ b/test/vs2019/etl.vcxproj.filters @@ -2741,4 +2741,4 @@ Resource Files - \ No newline at end of file + From c1f7edeee63b0bfe74bb1ff834dc1c381e79551e Mon Sep 17 00:00:00 2001 From: John Wellbelove Date: Sun, 1 Aug 2021 19:34:40 +0100 Subject: [PATCH 6/7] Changed std::forward to etl::forward --- include/etl/private/variant_variadic.h | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/include/etl/private/variant_variadic.h b/include/etl/private/variant_variadic.h index 38e987a5..06ff1933 100644 --- a/include/etl/private/variant_variadic.h +++ b/include/etl/private/variant_variadic.h @@ -536,7 +536,7 @@ namespace etl { static_assert(etl::is_one_of, TTypes...>::value, "Unsupported type"); - construct_in_place>(data, std::forward(value)); + construct_in_place>(data, etl::forward(value)); } //*************************************************************************** @@ -550,7 +550,7 @@ namespace etl { static_assert(etl::is_one_of, TTypes...>::value, "Unsupported type"); - construct_in_place_args>(data, std::forward(args)...); + construct_in_place_args>(data, etl::forward(args)...); } //*************************************************************************** @@ -564,7 +564,7 @@ namespace etl using type = typename private_variant::parameter_pack:: template type_from_index_t; static_assert(etl::is_one_of ::value, "Unsupported type"); - construct_in_place_args(data, std::forward(args)...); + construct_in_place_args(data, etl::forward(args)...); operation = operation_type::value, etl::is_move_constructible::value>::do_operation; } @@ -581,7 +581,7 @@ namespace etl { static_assert(etl::is_one_of, TTypes...> ::value, "Unsupported type"); - construct_in_place_args>(data, init, std::forward(args)...); + construct_in_place_args>(data, init, etl::forward(args)...); } //*************************************************************************** @@ -595,7 +595,7 @@ namespace etl using type = typename private_variant::parameter_pack:: template type_from_index_t; static_assert(etl::is_one_of ::value, "Unsupported type"); - construct_in_place_args(data, init, std::forward(args)...); + construct_in_place_args(data, init, etl::forward(args)...); operation = operation_type::value, etl::is_move_constructible::value>::do_operation; } @@ -675,7 +675,7 @@ namespace etl operation(private_variant::Destroy, data, nullptr); - construct_in_place_args(data, std::forward(args)...); + construct_in_place_args(data, etl::forward(args)...); operation = operation_type::value, etl::is_move_constructible::value>::do_operation; From 78239ec2ef3e1fbf79e2b318089db3c19f0637b5 Mon Sep 17 00:00:00 2001 From: John Wellbelove Date: Sun, 1 Aug 2021 19:39:14 +0100 Subject: [PATCH 7/7] Updated versions --- include/etl/version.h | 2 +- library.json | 2 +- library.properties | 2 +- meson.build | 2 +- support/Release notes.txt | 4 ++++ 5 files changed, 8 insertions(+), 4 deletions(-) diff --git a/include/etl/version.h b/include/etl/version.h index 12592eba..3d86d6ee 100644 --- a/include/etl/version.h +++ b/include/etl/version.h @@ -39,7 +39,7 @@ SOFTWARE. #define ETL_VERSION_MAJOR 20 #define ETL_VERSION_MINOR 14 -#define ETL_VERSION_PATCH 0 +#define ETL_VERSION_PATCH 1 #define ETL_VERSION ETL_STRINGIFY(ETL_VERSION_MAJOR) "." ETL_STRINGIFY(ETL_VERSION_MINOR) "." ETL_STRINGIFY(ETL_VERSION_PATCH) #define ETL_VERSION_W ETL_STRINGIFY(ETL_VERSION_MAJOR) L"." ETL_STRINGIFY(ETL_VERSION_MINOR) L"." ETL_STRINGIFY(ETL_VERSION_PATCH) #define ETL_VERSION_U16 ETL_STRINGIFY(ETL_VERSION_MAJOR) u"." ETL_STRINGIFY(ETL_VERSION_MINOR) u"." ETL_STRINGIFY(ETL_VERSION_PATCH) diff --git a/library.json b/library.json index 990b2d31..e6ec5ef2 100644 --- a/library.json +++ b/library.json @@ -1,6 +1,6 @@ { "name": "ETL Embedded Template Library", - "version": "20.14.0", + "version": "20.14.1", "author s": { "name": "John Wellbelove", "email": "john.wellbelove@etlcpp.com" diff --git a/library.properties b/library.properties index 5021b0d1..ec1698a8 100644 --- a/library.properties +++ b/library.properties @@ -1,5 +1,5 @@ name=Embedded Template Library ETL -version=20.14.0 +version=20.14.1 author= John Wellbelove maintainer=John Wellbelove license=MIT diff --git a/meson.build b/meson.build index 7d295964..f5ac7c02 100644 --- a/meson.build +++ b/meson.build @@ -8,7 +8,7 @@ project('PROJECT_NAME', 'cpp_std=c++17', 'build.cpp_std=c++17', ], meson_version: '>=0.54.0', - version: '20.14.0' + version: '20.14.1' ) ###################### diff --git a/support/Release notes.txt b/support/Release notes.txt index 463015c7..f815aadf 100644 --- a/support/Release notes.txt +++ b/support/Release notes.txt @@ -1,3 +1,7 @@ +=============================================================================== +20.14.1 +Changed std::forward to etl::forward in etl::variant (variadic) + =============================================================================== 20.14.0 Added a vaiadic version of etl::variant. Usable for C++11 and up.