From fd89f5162167a02478b126b867e0b48df0631257 Mon Sep 17 00:00:00 2001 From: John Wellbelove Date: Mon, 26 Jul 2021 17:17:22 +0100 Subject: [PATCH] Type traits refactor --- .gitignore | 2 + .../ArmTimerCallbacks.uvoptx | 2 +- .../ArmTimerCallbacks.uvprojx | 24 +- .../etl/generators/type_traits_generator.h | 522 +- include/etl/type_traits.h | 631 ++- support/Release notes.txt | 3 +- 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 +++--- 15 files changed, 4819 insertions(+), 2472 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/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 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