From aa60b7efa56a83ead743718941d8b320ef4a05af Mon Sep 17 00:00:00 2001 From: Billy O'Neal Date: Thu, 4 Feb 2021 10:15:44 -0800 Subject: [vcpkg] Download vcpkg.exe rather than building it in bootstrap on Windows. (#15474) This reduces bootstrap cost for Windows customers, resolving the issue initially submitted as #12502 . The `toolsrc` tree was extracted to https://github.com/microsoft/vcpkg-tool. `bootstrap.sh` was changed to download the right source tarball, extract, and build it. This was chosen over the previous attempt, a submodule, over concerns of accidentally destroying people's local modifications. --- toolsrc/include/catch2/catch.hpp | 16865 -------------------- toolsrc/include/pch.h | 55 - toolsrc/include/vcpkg-test/mockcmakevarprovider.h | 42 - toolsrc/include/vcpkg-test/util.h | 132 - toolsrc/include/vcpkg/archives.h | 10 - toolsrc/include/vcpkg/base/basic_checks.h | 41 - toolsrc/include/vcpkg/base/cache.h | 21 - toolsrc/include/vcpkg/base/checks.h | 60 - toolsrc/include/vcpkg/base/chrono.h | 75 - toolsrc/include/vcpkg/base/cofffilereader.h | 25 - toolsrc/include/vcpkg/base/cstringview.h | 60 - toolsrc/include/vcpkg/base/delayed_init.h | 29 - toolsrc/include/vcpkg/base/downloads.h | 41 - toolsrc/include/vcpkg/base/enums.h | 11 - toolsrc/include/vcpkg/base/expected.h | 245 - toolsrc/include/vcpkg/base/files.h | 315 - toolsrc/include/vcpkg/base/fwd/json.h | 10 - toolsrc/include/vcpkg/base/fwd/lockguarded.h | 10 - toolsrc/include/vcpkg/base/fwd/optional.h | 7 - toolsrc/include/vcpkg/base/fwd/span.h | 10 - toolsrc/include/vcpkg/base/fwd/stringview.h | 6 - toolsrc/include/vcpkg/base/graphs.h | 113 - toolsrc/include/vcpkg/base/hash.h | 52 - toolsrc/include/vcpkg/base/ignore_errors.h | 10 - toolsrc/include/vcpkg/base/json.h | 302 - toolsrc/include/vcpkg/base/jsonreader.h | 367 - toolsrc/include/vcpkg/base/lazy.h | 26 - toolsrc/include/vcpkg/base/lineinfo.h | 13 - toolsrc/include/vcpkg/base/lockguarded.h | 35 - toolsrc/include/vcpkg/base/machinetype.h | 37 - toolsrc/include/vcpkg/base/optional.h | 382 - toolsrc/include/vcpkg/base/parse.h | 129 - toolsrc/include/vcpkg/base/pragmas.h | 35 - toolsrc/include/vcpkg/base/sortedvector.h | 52 - toolsrc/include/vcpkg/base/span.h | 55 - toolsrc/include/vcpkg/base/stringliteral.h | 18 - toolsrc/include/vcpkg/base/strings.h | 306 - toolsrc/include/vcpkg/base/stringview.h | 55 - toolsrc/include/vcpkg/base/system.debug.h | 45 - toolsrc/include/vcpkg/base/system.h | 50 - toolsrc/include/vcpkg/base/system.print.h | 67 - toolsrc/include/vcpkg/base/system.process.h | 144 - toolsrc/include/vcpkg/base/system_headers.h | 40 - toolsrc/include/vcpkg/base/uint128.h | 24 - toolsrc/include/vcpkg/base/unicode.h | 148 - toolsrc/include/vcpkg/base/util.h | 248 - toolsrc/include/vcpkg/base/view.h | 3 - toolsrc/include/vcpkg/base/xmlserializer.h | 31 - toolsrc/include/vcpkg/base/zstringview.h | 52 - toolsrc/include/vcpkg/binarycaching.h | 62 - toolsrc/include/vcpkg/binarycaching.private.h | 51 - toolsrc/include/vcpkg/binaryparagraph.h | 55 - toolsrc/include/vcpkg/build.h | 389 - toolsrc/include/vcpkg/buildenvironment.h | 15 - toolsrc/include/vcpkg/cmakevars.h | 38 - toolsrc/include/vcpkg/commands.add-version.h | 13 - toolsrc/include/vcpkg/commands.autocomplete.h | 13 - toolsrc/include/vcpkg/commands.buildexternal.h | 15 - toolsrc/include/vcpkg/commands.cache.h | 13 - toolsrc/include/vcpkg/commands.ci.h | 16 - toolsrc/include/vcpkg/commands.ciclean.h | 13 - toolsrc/include/vcpkg/commands.civerifyversions.h | 13 - toolsrc/include/vcpkg/commands.contact.h | 15 - toolsrc/include/vcpkg/commands.create.h | 15 - toolsrc/include/vcpkg/commands.dependinfo.h | 16 - toolsrc/include/vcpkg/commands.edit.h | 14 - toolsrc/include/vcpkg/commands.env.h | 16 - toolsrc/include/vcpkg/commands.fetch.h | 13 - toolsrc/include/vcpkg/commands.format-manifest.h | 14 - toolsrc/include/vcpkg/commands.h | 32 - toolsrc/include/vcpkg/commands.hash.h | 13 - toolsrc/include/vcpkg/commands.info.h | 13 - toolsrc/include/vcpkg/commands.integrate.h | 17 - toolsrc/include/vcpkg/commands.interface.h | 37 - toolsrc/include/vcpkg/commands.list.h | 14 - toolsrc/include/vcpkg/commands.owns.h | 15 - toolsrc/include/vcpkg/commands.porthistory.h | 13 - toolsrc/include/vcpkg/commands.portsdiff.h | 13 - toolsrc/include/vcpkg/commands.search.h | 15 - toolsrc/include/vcpkg/commands.setinstalled.h | 26 - toolsrc/include/vcpkg/commands.upgrade.h | 16 - toolsrc/include/vcpkg/commands.upload-metrics.h | 12 - toolsrc/include/vcpkg/commands.version.h | 15 - toolsrc/include/vcpkg/commands.xvsinstances.h | 14 - toolsrc/include/vcpkg/configuration.h | 25 - toolsrc/include/vcpkg/dependencies.h | 188 - toolsrc/include/vcpkg/export.chocolatey.h | 20 - toolsrc/include/vcpkg/export.h | 19 - toolsrc/include/vcpkg/export.ifw.h | 25 - toolsrc/include/vcpkg/export.prefab.h | 79 - toolsrc/include/vcpkg/fwd/build.h | 7 - toolsrc/include/vcpkg/fwd/cmakevars.h | 6 - toolsrc/include/vcpkg/fwd/configuration.h | 6 - toolsrc/include/vcpkg/fwd/dependencies.h | 7 - toolsrc/include/vcpkg/fwd/packagespec.h | 6 - toolsrc/include/vcpkg/fwd/portfileprovider.h | 10 - toolsrc/include/vcpkg/fwd/registries.h | 9 - toolsrc/include/vcpkg/fwd/vcpkgcmdarguments.h | 14 - toolsrc/include/vcpkg/fwd/vcpkgpaths.h | 8 - toolsrc/include/vcpkg/globalstate.h | 21 - toolsrc/include/vcpkg/help.h | 19 - toolsrc/include/vcpkg/input.h | 15 - toolsrc/include/vcpkg/install.h | 116 - toolsrc/include/vcpkg/metrics.h | 33 - toolsrc/include/vcpkg/packagespec.h | 226 - toolsrc/include/vcpkg/paragraphparser.h | 68 - toolsrc/include/vcpkg/paragraphs.h | 60 - toolsrc/include/vcpkg/platform-expression.h | 82 - toolsrc/include/vcpkg/portfileprovider.h | 70 - toolsrc/include/vcpkg/postbuildlint.buildtype.h | 65 - toolsrc/include/vcpkg/postbuildlint.h | 20 - toolsrc/include/vcpkg/registries.h | 111 - toolsrc/include/vcpkg/remove.h | 34 - toolsrc/include/vcpkg/sourceparagraph.h | 156 - toolsrc/include/vcpkg/statusparagraph.h | 68 - toolsrc/include/vcpkg/statusparagraphs.h | 82 - toolsrc/include/vcpkg/textrowcol.h | 17 - toolsrc/include/vcpkg/tools.h | 37 - toolsrc/include/vcpkg/triplet.h | 50 - toolsrc/include/vcpkg/update.h | 35 - toolsrc/include/vcpkg/userconfig.h | 23 - toolsrc/include/vcpkg/vcpkgcmdarguments.h | 236 - toolsrc/include/vcpkg/vcpkglib.h | 26 - toolsrc/include/vcpkg/vcpkgpaths.h | 178 - toolsrc/include/vcpkg/versiondeserializers.h | 41 - toolsrc/include/vcpkg/versions.h | 87 - toolsrc/include/vcpkg/versiont.h | 44 - toolsrc/include/vcpkg/visualstudio.h | 14 - 128 files changed, 24446 deletions(-) delete mode 100644 toolsrc/include/catch2/catch.hpp delete mode 100644 toolsrc/include/pch.h delete mode 100644 toolsrc/include/vcpkg-test/mockcmakevarprovider.h delete mode 100644 toolsrc/include/vcpkg-test/util.h delete mode 100644 toolsrc/include/vcpkg/archives.h delete mode 100644 toolsrc/include/vcpkg/base/basic_checks.h delete mode 100644 toolsrc/include/vcpkg/base/cache.h delete mode 100644 toolsrc/include/vcpkg/base/checks.h delete mode 100644 toolsrc/include/vcpkg/base/chrono.h delete mode 100644 toolsrc/include/vcpkg/base/cofffilereader.h delete mode 100644 toolsrc/include/vcpkg/base/cstringview.h delete mode 100644 toolsrc/include/vcpkg/base/delayed_init.h delete mode 100644 toolsrc/include/vcpkg/base/downloads.h delete mode 100644 toolsrc/include/vcpkg/base/enums.h delete mode 100644 toolsrc/include/vcpkg/base/expected.h delete mode 100644 toolsrc/include/vcpkg/base/files.h delete mode 100644 toolsrc/include/vcpkg/base/fwd/json.h delete mode 100644 toolsrc/include/vcpkg/base/fwd/lockguarded.h delete mode 100644 toolsrc/include/vcpkg/base/fwd/optional.h delete mode 100644 toolsrc/include/vcpkg/base/fwd/span.h delete mode 100644 toolsrc/include/vcpkg/base/fwd/stringview.h delete mode 100644 toolsrc/include/vcpkg/base/graphs.h delete mode 100644 toolsrc/include/vcpkg/base/hash.h delete mode 100644 toolsrc/include/vcpkg/base/ignore_errors.h delete mode 100644 toolsrc/include/vcpkg/base/json.h delete mode 100644 toolsrc/include/vcpkg/base/jsonreader.h delete mode 100644 toolsrc/include/vcpkg/base/lazy.h delete mode 100644 toolsrc/include/vcpkg/base/lineinfo.h delete mode 100644 toolsrc/include/vcpkg/base/lockguarded.h delete mode 100644 toolsrc/include/vcpkg/base/machinetype.h delete mode 100644 toolsrc/include/vcpkg/base/optional.h delete mode 100644 toolsrc/include/vcpkg/base/parse.h delete mode 100644 toolsrc/include/vcpkg/base/pragmas.h delete mode 100644 toolsrc/include/vcpkg/base/sortedvector.h delete mode 100644 toolsrc/include/vcpkg/base/span.h delete mode 100644 toolsrc/include/vcpkg/base/stringliteral.h delete mode 100644 toolsrc/include/vcpkg/base/strings.h delete mode 100644 toolsrc/include/vcpkg/base/stringview.h delete mode 100644 toolsrc/include/vcpkg/base/system.debug.h delete mode 100644 toolsrc/include/vcpkg/base/system.h delete mode 100644 toolsrc/include/vcpkg/base/system.print.h delete mode 100644 toolsrc/include/vcpkg/base/system.process.h delete mode 100644 toolsrc/include/vcpkg/base/system_headers.h delete mode 100644 toolsrc/include/vcpkg/base/uint128.h delete mode 100644 toolsrc/include/vcpkg/base/unicode.h delete mode 100644 toolsrc/include/vcpkg/base/util.h delete mode 100644 toolsrc/include/vcpkg/base/view.h delete mode 100644 toolsrc/include/vcpkg/base/xmlserializer.h delete mode 100644 toolsrc/include/vcpkg/base/zstringview.h delete mode 100644 toolsrc/include/vcpkg/binarycaching.h delete mode 100644 toolsrc/include/vcpkg/binarycaching.private.h delete mode 100644 toolsrc/include/vcpkg/binaryparagraph.h delete mode 100644 toolsrc/include/vcpkg/build.h delete mode 100644 toolsrc/include/vcpkg/buildenvironment.h delete mode 100644 toolsrc/include/vcpkg/cmakevars.h delete mode 100644 toolsrc/include/vcpkg/commands.add-version.h delete mode 100644 toolsrc/include/vcpkg/commands.autocomplete.h delete mode 100644 toolsrc/include/vcpkg/commands.buildexternal.h delete mode 100644 toolsrc/include/vcpkg/commands.cache.h delete mode 100644 toolsrc/include/vcpkg/commands.ci.h delete mode 100644 toolsrc/include/vcpkg/commands.ciclean.h delete mode 100644 toolsrc/include/vcpkg/commands.civerifyversions.h delete mode 100644 toolsrc/include/vcpkg/commands.contact.h delete mode 100644 toolsrc/include/vcpkg/commands.create.h delete mode 100644 toolsrc/include/vcpkg/commands.dependinfo.h delete mode 100644 toolsrc/include/vcpkg/commands.edit.h delete mode 100644 toolsrc/include/vcpkg/commands.env.h delete mode 100644 toolsrc/include/vcpkg/commands.fetch.h delete mode 100644 toolsrc/include/vcpkg/commands.format-manifest.h delete mode 100644 toolsrc/include/vcpkg/commands.h delete mode 100644 toolsrc/include/vcpkg/commands.hash.h delete mode 100644 toolsrc/include/vcpkg/commands.info.h delete mode 100644 toolsrc/include/vcpkg/commands.integrate.h delete mode 100644 toolsrc/include/vcpkg/commands.interface.h delete mode 100644 toolsrc/include/vcpkg/commands.list.h delete mode 100644 toolsrc/include/vcpkg/commands.owns.h delete mode 100644 toolsrc/include/vcpkg/commands.porthistory.h delete mode 100644 toolsrc/include/vcpkg/commands.portsdiff.h delete mode 100644 toolsrc/include/vcpkg/commands.search.h delete mode 100644 toolsrc/include/vcpkg/commands.setinstalled.h delete mode 100644 toolsrc/include/vcpkg/commands.upgrade.h delete mode 100644 toolsrc/include/vcpkg/commands.upload-metrics.h delete mode 100644 toolsrc/include/vcpkg/commands.version.h delete mode 100644 toolsrc/include/vcpkg/commands.xvsinstances.h delete mode 100644 toolsrc/include/vcpkg/configuration.h delete mode 100644 toolsrc/include/vcpkg/dependencies.h delete mode 100644 toolsrc/include/vcpkg/export.chocolatey.h delete mode 100644 toolsrc/include/vcpkg/export.h delete mode 100644 toolsrc/include/vcpkg/export.ifw.h delete mode 100644 toolsrc/include/vcpkg/export.prefab.h delete mode 100644 toolsrc/include/vcpkg/fwd/build.h delete mode 100644 toolsrc/include/vcpkg/fwd/cmakevars.h delete mode 100644 toolsrc/include/vcpkg/fwd/configuration.h delete mode 100644 toolsrc/include/vcpkg/fwd/dependencies.h delete mode 100644 toolsrc/include/vcpkg/fwd/packagespec.h delete mode 100644 toolsrc/include/vcpkg/fwd/portfileprovider.h delete mode 100644 toolsrc/include/vcpkg/fwd/registries.h delete mode 100644 toolsrc/include/vcpkg/fwd/vcpkgcmdarguments.h delete mode 100644 toolsrc/include/vcpkg/fwd/vcpkgpaths.h delete mode 100644 toolsrc/include/vcpkg/globalstate.h delete mode 100644 toolsrc/include/vcpkg/help.h delete mode 100644 toolsrc/include/vcpkg/input.h delete mode 100644 toolsrc/include/vcpkg/install.h delete mode 100644 toolsrc/include/vcpkg/metrics.h delete mode 100644 toolsrc/include/vcpkg/packagespec.h delete mode 100644 toolsrc/include/vcpkg/paragraphparser.h delete mode 100644 toolsrc/include/vcpkg/paragraphs.h delete mode 100644 toolsrc/include/vcpkg/platform-expression.h delete mode 100644 toolsrc/include/vcpkg/portfileprovider.h delete mode 100644 toolsrc/include/vcpkg/postbuildlint.buildtype.h delete mode 100644 toolsrc/include/vcpkg/postbuildlint.h delete mode 100644 toolsrc/include/vcpkg/registries.h delete mode 100644 toolsrc/include/vcpkg/remove.h delete mode 100644 toolsrc/include/vcpkg/sourceparagraph.h delete mode 100644 toolsrc/include/vcpkg/statusparagraph.h delete mode 100644 toolsrc/include/vcpkg/statusparagraphs.h delete mode 100644 toolsrc/include/vcpkg/textrowcol.h delete mode 100644 toolsrc/include/vcpkg/tools.h delete mode 100644 toolsrc/include/vcpkg/triplet.h delete mode 100644 toolsrc/include/vcpkg/update.h delete mode 100644 toolsrc/include/vcpkg/userconfig.h delete mode 100644 toolsrc/include/vcpkg/vcpkgcmdarguments.h delete mode 100644 toolsrc/include/vcpkg/vcpkglib.h delete mode 100644 toolsrc/include/vcpkg/vcpkgpaths.h delete mode 100644 toolsrc/include/vcpkg/versiondeserializers.h delete mode 100644 toolsrc/include/vcpkg/versions.h delete mode 100644 toolsrc/include/vcpkg/versiont.h delete mode 100644 toolsrc/include/vcpkg/visualstudio.h (limited to 'toolsrc/include') diff --git a/toolsrc/include/catch2/catch.hpp b/toolsrc/include/catch2/catch.hpp deleted file mode 100644 index f471a2ec6..000000000 --- a/toolsrc/include/catch2/catch.hpp +++ /dev/null @@ -1,16865 +0,0 @@ -/* - * Catch v2.9.1 - * Generated: 2019-06-17 11:59:24.363643 - * ---------------------------------------------------------- - * This file has been merged from multiple headers. Please don't edit it directly - * Copyright (c) 2019 Two Blue Cubes Ltd. All rights reserved. - * - * Distributed under the Boost Software License, Version 1.0. (See accompanying - * file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) - */ -#ifndef TWOBLUECUBES_SINGLE_INCLUDE_CATCH_HPP_INCLUDED -#define TWOBLUECUBES_SINGLE_INCLUDE_CATCH_HPP_INCLUDED -// start catch.hpp - - -#define CATCH_VERSION_MAJOR 2 -#define CATCH_VERSION_MINOR 9 -#define CATCH_VERSION_PATCH 1 - -#ifdef __clang__ -# pragma clang system_header -#elif defined __GNUC__ -# pragma GCC system_header -#endif - -// start catch_suppress_warnings.h - -#ifdef __clang__ -# ifdef __ICC // icpc defines the __clang__ macro -# pragma warning(push) -# pragma warning(disable: 161 1682) -# else // __ICC -# pragma clang diagnostic push -# pragma clang diagnostic ignored "-Wpadded" -# pragma clang diagnostic ignored "-Wswitch-enum" -# pragma clang diagnostic ignored "-Wcovered-switch-default" -# endif -#elif defined __GNUC__ - // Because REQUIREs trigger GCC's -Wparentheses, and because still - // supported version of g++ have only buggy support for _Pragmas, - // Wparentheses have to be suppressed globally. -# pragma GCC diagnostic ignored "-Wparentheses" // See #674 for details - -# pragma GCC diagnostic push -# pragma GCC diagnostic ignored "-Wunused-variable" -# pragma GCC diagnostic ignored "-Wpadded" -#endif -// end catch_suppress_warnings.h -#if defined(CATCH_CONFIG_MAIN) || defined(CATCH_CONFIG_RUNNER) -# define CATCH_IMPL -# define CATCH_CONFIG_ALL_PARTS -#endif - -// In the impl file, we want to have access to all parts of the headers -// Can also be used to sanely support PCHs -#if defined(CATCH_CONFIG_ALL_PARTS) -# define CATCH_CONFIG_EXTERNAL_INTERFACES -# if defined(CATCH_CONFIG_DISABLE_MATCHERS) -# undef CATCH_CONFIG_DISABLE_MATCHERS -# endif -# if !defined(CATCH_CONFIG_ENABLE_CHRONO_STRINGMAKER) -# define CATCH_CONFIG_ENABLE_CHRONO_STRINGMAKER -# endif -#endif - -#if !defined(CATCH_CONFIG_IMPL_ONLY) -// start catch_platform.h - -#ifdef __APPLE__ -# include -# if TARGET_OS_OSX == 1 -# define CATCH_PLATFORM_MAC -# elif TARGET_OS_IPHONE == 1 -# define CATCH_PLATFORM_IPHONE -# endif - -#elif defined(linux) || defined(__linux) || defined(__linux__) -# define CATCH_PLATFORM_LINUX - -#elif defined(WIN32) || defined(__WIN32__) || defined(_WIN32) || defined(_MSC_VER) || defined(__MINGW32__) -# define CATCH_PLATFORM_WINDOWS -#endif - -// end catch_platform.h - -#ifdef CATCH_IMPL -# ifndef CLARA_CONFIG_MAIN -# define CLARA_CONFIG_MAIN_NOT_DEFINED -# define CLARA_CONFIG_MAIN -# endif -#endif - -// start catch_user_interfaces.h - -namespace Catch { - unsigned int rngSeed(); -} - -// end catch_user_interfaces.h -// start catch_tag_alias_autoregistrar.h - -// start catch_common.h - -// start catch_compiler_capabilities.h - -// Detect a number of compiler features - by compiler -// The following features are defined: -// -// CATCH_CONFIG_COUNTER : is the __COUNTER__ macro supported? -// CATCH_CONFIG_WINDOWS_SEH : is Windows SEH supported? -// CATCH_CONFIG_POSIX_SIGNALS : are POSIX signals supported? -// CATCH_CONFIG_DISABLE_EXCEPTIONS : Are exceptions enabled? -// **************** -// Note to maintainers: if new toggles are added please document them -// in configuration.md, too -// **************** - -// In general each macro has a _NO_ form -// (e.g. CATCH_CONFIG_NO_POSIX_SIGNALS) which disables the feature. -// Many features, at point of detection, define an _INTERNAL_ macro, so they -// can be combined, en-mass, with the _NO_ forms later. - -#ifdef __cplusplus - -# if (__cplusplus >= 201402L) || (defined(_MSVC_LANG) && _MSVC_LANG >= 201402L) -# define CATCH_CPP14_OR_GREATER -# endif - -# if (__cplusplus >= 201703L) || (defined(_MSVC_LANG) && _MSVC_LANG >= 201703L) -# define CATCH_CPP17_OR_GREATER -# endif - -#endif - -#if defined(CATCH_CPP17_OR_GREATER) -# define CATCH_INTERNAL_CONFIG_CPP17_UNCAUGHT_EXCEPTIONS -#endif - -#ifdef __clang__ - -# define CATCH_INTERNAL_SUPPRESS_GLOBALS_WARNINGS \ - _Pragma( "clang diagnostic push" ) \ - _Pragma( "clang diagnostic ignored \"-Wexit-time-destructors\"" ) \ - _Pragma( "clang diagnostic ignored \"-Wglobal-constructors\"") -# define CATCH_INTERNAL_UNSUPPRESS_GLOBALS_WARNINGS \ - _Pragma( "clang diagnostic pop" ) - -# define CATCH_INTERNAL_SUPPRESS_PARENTHESES_WARNINGS \ - _Pragma( "clang diagnostic push" ) \ - _Pragma( "clang diagnostic ignored \"-Wparentheses\"" ) -# define CATCH_INTERNAL_UNSUPPRESS_PARENTHESES_WARNINGS \ - _Pragma( "clang diagnostic pop" ) - -# define CATCH_INTERNAL_SUPPRESS_UNUSED_WARNINGS \ - _Pragma( "clang diagnostic push" ) \ - _Pragma( "clang diagnostic ignored \"-Wunused-variable\"" ) -# define CATCH_INTERNAL_UNSUPPRESS_UNUSED_WARNINGS \ - _Pragma( "clang diagnostic pop" ) - -# define CATCH_INTERNAL_SUPPRESS_ZERO_VARIADIC_WARNINGS \ - _Pragma( "clang diagnostic push" ) \ - _Pragma( "clang diagnostic ignored \"-Wgnu-zero-variadic-macro-arguments\"" ) -# define CATCH_INTERNAL_UNSUPPRESS_ZERO_VARIADIC_WARNINGS \ - _Pragma( "clang diagnostic pop" ) - -#endif // __clang__ - -//////////////////////////////////////////////////////////////////////////////// -// Assume that non-Windows platforms support posix signals by default -#if !defined(CATCH_PLATFORM_WINDOWS) - #define CATCH_INTERNAL_CONFIG_POSIX_SIGNALS -#endif - -//////////////////////////////////////////////////////////////////////////////// -// We know some environments not to support full POSIX signals -#if defined(__CYGWIN__) || defined(__QNX__) || defined(__EMSCRIPTEN__) || defined(__DJGPP__) - #define CATCH_INTERNAL_CONFIG_NO_POSIX_SIGNALS -#endif - -#ifdef __OS400__ -# define CATCH_INTERNAL_CONFIG_NO_POSIX_SIGNALS -# define CATCH_CONFIG_COLOUR_NONE -#endif - -//////////////////////////////////////////////////////////////////////////////// -// Android somehow still does not support std::to_string -#if defined(__ANDROID__) -# define CATCH_INTERNAL_CONFIG_NO_CPP11_TO_STRING -#endif - -//////////////////////////////////////////////////////////////////////////////// -// Not all Windows environments support SEH properly -#if defined(__MINGW32__) -# define CATCH_INTERNAL_CONFIG_NO_WINDOWS_SEH -#endif - -//////////////////////////////////////////////////////////////////////////////// -// PS4 -#if defined(__ORBIS__) -# define CATCH_INTERNAL_CONFIG_NO_NEW_CAPTURE -#endif - -//////////////////////////////////////////////////////////////////////////////// -// Cygwin -#ifdef __CYGWIN__ - -// Required for some versions of Cygwin to declare gettimeofday -// see: http://stackoverflow.com/questions/36901803/gettimeofday-not-declared-in-this-scope-cygwin -# define _BSD_SOURCE -// some versions of cygwin (most) do not support std::to_string. Use the libstd check. -// https://gcc.gnu.org/onlinedocs/gcc-4.8.2/libstdc++/api/a01053_source.html line 2812-2813 -# if !((__cplusplus >= 201103L) && defined(_GLIBCXX_USE_C99) \ - && !defined(_GLIBCXX_HAVE_BROKEN_VSWPRINTF)) - -# define CATCH_INTERNAL_CONFIG_NO_CPP11_TO_STRING - -# endif -#endif // __CYGWIN__ - -//////////////////////////////////////////////////////////////////////////////// -// Visual C++ -#ifdef _MSC_VER - -# if _MSC_VER >= 1900 // Visual Studio 2015 or newer -# define CATCH_INTERNAL_CONFIG_CPP17_UNCAUGHT_EXCEPTIONS -# endif - -// Universal Windows platform does not support SEH -// Or console colours (or console at all...) -# if defined(WINAPI_FAMILY) && (WINAPI_FAMILY == WINAPI_FAMILY_APP) -# define CATCH_CONFIG_COLOUR_NONE -# else -# define CATCH_INTERNAL_CONFIG_WINDOWS_SEH -# endif - -// MSVC traditional preprocessor needs some workaround for __VA_ARGS__ -// _MSVC_TRADITIONAL == 0 means new conformant preprocessor -// _MSVC_TRADITIONAL == 1 means old traditional non-conformant preprocessor -# if !defined(_MSVC_TRADITIONAL) || (defined(_MSVC_TRADITIONAL) && _MSVC_TRADITIONAL) -# define CATCH_INTERNAL_CONFIG_TRADITIONAL_MSVC_PREPROCESSOR -# endif -#endif // _MSC_VER - -#if defined(_REENTRANT) || defined(_MSC_VER) -// Enable async processing, as -pthread is specified or no additional linking is required -# define CATCH_INTERNAL_CONFIG_USE_ASYNC -#endif // _MSC_VER - -//////////////////////////////////////////////////////////////////////////////// -// Check if we are compiled with -fno-exceptions or equivalent -#if defined(__EXCEPTIONS) || defined(__cpp_exceptions) || defined(_CPPUNWIND) -# define CATCH_INTERNAL_CONFIG_EXCEPTIONS_ENABLED -#endif - -//////////////////////////////////////////////////////////////////////////////// -// DJGPP -#ifdef __DJGPP__ -# define CATCH_INTERNAL_CONFIG_NO_WCHAR -#endif // __DJGPP__ - -//////////////////////////////////////////////////////////////////////////////// -// Embarcadero C++Build -#if defined(__BORLANDC__) - #define CATCH_INTERNAL_CONFIG_POLYFILL_ISNAN -#endif - -//////////////////////////////////////////////////////////////////////////////// - -// Use of __COUNTER__ is suppressed during code analysis in -// CLion/AppCode 2017.2.x and former, because __COUNTER__ is not properly -// handled by it. -// Otherwise all supported compilers support COUNTER macro, -// but user still might want to turn it off -#if ( !defined(__JETBRAINS_IDE__) || __JETBRAINS_IDE__ >= 20170300L ) - #define CATCH_INTERNAL_CONFIG_COUNTER -#endif - -//////////////////////////////////////////////////////////////////////////////// -// Check if string_view is available and usable -// The check is split apart to work around v140 (VS2015) preprocessor issue... -#if defined(__has_include) -#if __has_include() && defined(CATCH_CPP17_OR_GREATER) -# define CATCH_INTERNAL_CONFIG_CPP17_STRING_VIEW -#endif -#endif - -//////////////////////////////////////////////////////////////////////////////// -// Check if optional is available and usable -#if defined(__has_include) -# if __has_include() && defined(CATCH_CPP17_OR_GREATER) -# define CATCH_INTERNAL_CONFIG_CPP17_OPTIONAL -# endif // __has_include() && defined(CATCH_CPP17_OR_GREATER) -#endif // __has_include - -//////////////////////////////////////////////////////////////////////////////// -// Check if variant is available and usable -#if defined(__has_include) -# if __has_include() && defined(CATCH_CPP17_OR_GREATER) -# if defined(__clang__) && (__clang_major__ < 8) - // work around clang bug with libstdc++ https://bugs.llvm.org/show_bug.cgi?id=31852 - // fix should be in clang 8, workaround in libstdc++ 8.2 -# include -# if defined(__GLIBCXX__) && defined(_GLIBCXX_RELEASE) && (_GLIBCXX_RELEASE < 9) -# define CATCH_CONFIG_NO_CPP17_VARIANT -# else -# define CATCH_INTERNAL_CONFIG_CPP17_VARIANT -# endif // defined(__GLIBCXX__) && defined(_GLIBCXX_RELEASE) && (_GLIBCXX_RELEASE < 9) -# else -# define CATCH_INTERNAL_CONFIG_CPP17_VARIANT -# endif // defined(__clang__) && (__clang_major__ < 8) -# endif // __has_include() && defined(CATCH_CPP17_OR_GREATER) -#endif // __has_include - -#if defined(CATCH_INTERNAL_CONFIG_COUNTER) && !defined(CATCH_CONFIG_NO_COUNTER) && !defined(CATCH_CONFIG_COUNTER) -# define CATCH_CONFIG_COUNTER -#endif -#if defined(CATCH_INTERNAL_CONFIG_WINDOWS_SEH) && !defined(CATCH_CONFIG_NO_WINDOWS_SEH) && !defined(CATCH_CONFIG_WINDOWS_SEH) && !defined(CATCH_INTERNAL_CONFIG_NO_WINDOWS_SEH) -# define CATCH_CONFIG_WINDOWS_SEH -#endif -// This is set by default, because we assume that unix compilers are posix-signal-compatible by default. -#if defined(CATCH_INTERNAL_CONFIG_POSIX_SIGNALS) && !defined(CATCH_INTERNAL_CONFIG_NO_POSIX_SIGNALS) && !defined(CATCH_CONFIG_NO_POSIX_SIGNALS) && !defined(CATCH_CONFIG_POSIX_SIGNALS) -# define CATCH_CONFIG_POSIX_SIGNALS -#endif -// This is set by default, because we assume that compilers with no wchar_t support are just rare exceptions. -#if !defined(CATCH_INTERNAL_CONFIG_NO_WCHAR) && !defined(CATCH_CONFIG_NO_WCHAR) && !defined(CATCH_CONFIG_WCHAR) -# define CATCH_CONFIG_WCHAR -#endif - -#if !defined(CATCH_INTERNAL_CONFIG_NO_CPP11_TO_STRING) && !defined(CATCH_CONFIG_NO_CPP11_TO_STRING) && !defined(CATCH_CONFIG_CPP11_TO_STRING) -# define CATCH_CONFIG_CPP11_TO_STRING -#endif - -#if defined(CATCH_INTERNAL_CONFIG_CPP17_OPTIONAL) && !defined(CATCH_CONFIG_NO_CPP17_OPTIONAL) && !defined(CATCH_CONFIG_CPP17_OPTIONAL) -# define CATCH_CONFIG_CPP17_OPTIONAL -#endif - -#if defined(CATCH_INTERNAL_CONFIG_CPP17_UNCAUGHT_EXCEPTIONS) && !defined(CATCH_CONFIG_NO_CPP17_UNCAUGHT_EXCEPTIONS) && !defined(CATCH_CONFIG_CPP17_UNCAUGHT_EXCEPTIONS) -# define CATCH_CONFIG_CPP17_UNCAUGHT_EXCEPTIONS -#endif - -#if defined(CATCH_INTERNAL_CONFIG_CPP17_STRING_VIEW) && !defined(CATCH_CONFIG_NO_CPP17_STRING_VIEW) && !defined(CATCH_CONFIG_CPP17_STRING_VIEW) -# define CATCH_CONFIG_CPP17_STRING_VIEW -#endif - -#if defined(CATCH_INTERNAL_CONFIG_CPP17_VARIANT) && !defined(CATCH_CONFIG_NO_CPP17_VARIANT) && !defined(CATCH_CONFIG_CPP17_VARIANT) -# define CATCH_CONFIG_CPP17_VARIANT -#endif - -#if defined(CATCH_CONFIG_EXPERIMENTAL_REDIRECT) -# define CATCH_INTERNAL_CONFIG_NEW_CAPTURE -#endif - -#if defined(CATCH_INTERNAL_CONFIG_NEW_CAPTURE) && !defined(CATCH_INTERNAL_CONFIG_NO_NEW_CAPTURE) && !defined(CATCH_CONFIG_NO_NEW_CAPTURE) && !defined(CATCH_CONFIG_NEW_CAPTURE) -# define CATCH_CONFIG_NEW_CAPTURE -#endif - -#if !defined(CATCH_INTERNAL_CONFIG_EXCEPTIONS_ENABLED) && !defined(CATCH_CONFIG_DISABLE_EXCEPTIONS) -# define CATCH_CONFIG_DISABLE_EXCEPTIONS -#endif - -#if defined(CATCH_INTERNAL_CONFIG_POLYFILL_ISNAN) && !defined(CATCH_CONFIG_NO_POLYFILL_ISNAN) && !defined(CATCH_CONFIG_POLYFILL_ISNAN) -# define CATCH_CONFIG_POLYFILL_ISNAN -#endif - -#if defined(CATCH_INTERNAL_CONFIG_USE_ASYNC) && !defined(CATCH_CONFIG_NO_USE_ASYNC) && !defined(CATCH_CONFIG_USE_ASYNC) -# define CATCH_CONFIG_USE_ASYNC -#endif - -#if !defined(CATCH_INTERNAL_SUPPRESS_PARENTHESES_WARNINGS) -# define CATCH_INTERNAL_SUPPRESS_PARENTHESES_WARNINGS -# define CATCH_INTERNAL_UNSUPPRESS_PARENTHESES_WARNINGS -#endif -#if !defined(CATCH_INTERNAL_SUPPRESS_GLOBALS_WARNINGS) -# define CATCH_INTERNAL_SUPPRESS_GLOBALS_WARNINGS -# define CATCH_INTERNAL_UNSUPPRESS_GLOBALS_WARNINGS -#endif -#if !defined(CATCH_INTERNAL_SUPPRESS_UNUSED_WARNINGS) -# define CATCH_INTERNAL_SUPPRESS_UNUSED_WARNINGS -# define CATCH_INTERNAL_UNSUPPRESS_UNUSED_WARNINGS -#endif -#if !defined(CATCH_INTERNAL_SUPPRESS_ZERO_VARIADIC_WARNINGS) -# define CATCH_INTERNAL_SUPPRESS_ZERO_VARIADIC_WARNINGS -# define CATCH_INTERNAL_UNSUPPRESS_ZERO_VARIADIC_WARNINGS -#endif - -#if defined(CATCH_CONFIG_DISABLE_EXCEPTIONS) -#define CATCH_TRY if ((true)) -#define CATCH_CATCH_ALL if ((false)) -#define CATCH_CATCH_ANON(type) if ((false)) -#else -#define CATCH_TRY try -#define CATCH_CATCH_ALL catch (...) -#define CATCH_CATCH_ANON(type) catch (type) -#endif - -#if defined(CATCH_INTERNAL_CONFIG_TRADITIONAL_MSVC_PREPROCESSOR) && !defined(CATCH_CONFIG_NO_TRADITIONAL_MSVC_PREPROCESSOR) && !defined(CATCH_CONFIG_TRADITIONAL_MSVC_PREPROCESSOR) -#define CATCH_CONFIG_TRADITIONAL_MSVC_PREPROCESSOR -#endif - -// end catch_compiler_capabilities.h -#define INTERNAL_CATCH_UNIQUE_NAME_LINE2( name, line ) name##line -#define INTERNAL_CATCH_UNIQUE_NAME_LINE( name, line ) INTERNAL_CATCH_UNIQUE_NAME_LINE2( name, line ) -#ifdef CATCH_CONFIG_COUNTER -# define INTERNAL_CATCH_UNIQUE_NAME( name ) INTERNAL_CATCH_UNIQUE_NAME_LINE( name, __COUNTER__ ) -#else -# define INTERNAL_CATCH_UNIQUE_NAME( name ) INTERNAL_CATCH_UNIQUE_NAME_LINE( name, __LINE__ ) -#endif - -#include -#include -#include - -// We need a dummy global operator<< so we can bring it into Catch namespace later -struct Catch_global_namespace_dummy {}; -std::ostream& operator<<(std::ostream&, Catch_global_namespace_dummy); - -namespace Catch { - - struct CaseSensitive { enum Choice { - Yes, - No - }; }; - - class NonCopyable { - NonCopyable( NonCopyable const& ) = delete; - NonCopyable( NonCopyable && ) = delete; - NonCopyable& operator = ( NonCopyable const& ) = delete; - NonCopyable& operator = ( NonCopyable && ) = delete; - - protected: - NonCopyable(); - virtual ~NonCopyable(); - }; - - struct SourceLineInfo { - - SourceLineInfo() = delete; - SourceLineInfo( char const* _file, std::size_t _line ) noexcept - : file( _file ), - line( _line ) - {} - - SourceLineInfo( SourceLineInfo const& other ) = default; - SourceLineInfo& operator = ( SourceLineInfo const& ) = default; - SourceLineInfo( SourceLineInfo&& ) noexcept = default; - SourceLineInfo& operator = ( SourceLineInfo&& ) noexcept = default; - - bool empty() const noexcept; - bool operator == ( SourceLineInfo const& other ) const noexcept; - bool operator < ( SourceLineInfo const& other ) const noexcept; - - char const* file; - std::size_t line; - }; - - std::ostream& operator << ( std::ostream& os, SourceLineInfo const& info ); - - // Bring in operator<< from global namespace into Catch namespace - // This is necessary because the overload of operator<< above makes - // lookup stop at namespace Catch - using ::operator<<; - - // Use this in variadic streaming macros to allow - // >> +StreamEndStop - // as well as - // >> stuff +StreamEndStop - struct StreamEndStop { - std::string operator+() const; - }; - template - T const& operator + ( T const& value, StreamEndStop ) { - return value; - } -} - -#define CATCH_INTERNAL_LINEINFO \ - ::Catch::SourceLineInfo( __FILE__, static_cast( __LINE__ ) ) - -// end catch_common.h -namespace Catch { - - struct RegistrarForTagAliases { - RegistrarForTagAliases( char const* alias, char const* tag, SourceLineInfo const& lineInfo ); - }; - -} // end namespace Catch - -#define CATCH_REGISTER_TAG_ALIAS( alias, spec ) \ - CATCH_INTERNAL_SUPPRESS_GLOBALS_WARNINGS \ - namespace{ Catch::RegistrarForTagAliases INTERNAL_CATCH_UNIQUE_NAME( AutoRegisterTagAlias )( alias, spec, CATCH_INTERNAL_LINEINFO ); } \ - CATCH_INTERNAL_UNSUPPRESS_GLOBALS_WARNINGS - -// end catch_tag_alias_autoregistrar.h -// start catch_test_registry.h - -// start catch_interfaces_testcase.h - -#include - -namespace Catch { - - class TestSpec; - - struct ITestInvoker { - virtual void invoke () const = 0; - virtual ~ITestInvoker(); - }; - - class TestCase; - struct IConfig; - - struct ITestCaseRegistry { - virtual ~ITestCaseRegistry(); - virtual std::vector const& getAllTests() const = 0; - virtual std::vector const& getAllTestsSorted( IConfig const& config ) const = 0; - }; - - bool matchTest( TestCase const& testCase, TestSpec const& testSpec, IConfig const& config ); - std::vector filterTests( std::vector const& testCases, TestSpec const& testSpec, IConfig const& config ); - std::vector const& getAllTestCasesSorted( IConfig const& config ); - -} - -// end catch_interfaces_testcase.h -// start catch_stringref.h - -#include -#include -#include - -namespace Catch { - - /// A non-owning string class (similar to the forthcoming std::string_view) - /// Note that, because a StringRef may be a substring of another string, - /// it may not be null terminated. c_str() must return a null terminated - /// string, however, and so the StringRef will internally take ownership - /// (taking a copy), if necessary. In theory this ownership is not externally - /// visible - but it does mean (substring) StringRefs should not be shared between - /// threads. - class StringRef { - public: - using size_type = std::size_t; - - private: - friend struct StringRefTestAccess; - - char const* m_start; - size_type m_size; - - char* m_data = nullptr; - - void takeOwnership(); - - static constexpr char const* const s_empty = ""; - - public: // construction/ assignment - StringRef() noexcept - : StringRef( s_empty, 0 ) - {} - - StringRef( StringRef const& other ) noexcept - : m_start( other.m_start ), - m_size( other.m_size ) - {} - - StringRef( StringRef&& other ) noexcept - : m_start( other.m_start ), - m_size( other.m_size ), - m_data( other.m_data ) - { - other.m_data = nullptr; - } - - StringRef( char const* rawChars ) noexcept; - - StringRef( char const* rawChars, size_type size ) noexcept - : m_start( rawChars ), - m_size( size ) - {} - - StringRef( std::string const& stdString ) noexcept - : m_start( stdString.c_str() ), - m_size( stdString.size() ) - {} - - ~StringRef() noexcept { - delete[] m_data; - } - - auto operator = ( StringRef const &other ) noexcept -> StringRef& { - delete[] m_data; - m_data = nullptr; - m_start = other.m_start; - m_size = other.m_size; - return *this; - } - - operator std::string() const; - - void swap( StringRef& other ) noexcept; - - public: // operators - auto operator == ( StringRef const& other ) const noexcept -> bool; - auto operator != ( StringRef const& other ) const noexcept -> bool; - - auto operator[] ( size_type index ) const noexcept -> char; - - public: // named queries - auto empty() const noexcept -> bool { - return m_size == 0; - } - auto size() const noexcept -> size_type { - return m_size; - } - - auto numberOfCharacters() const noexcept -> size_type; - auto c_str() const -> char const*; - - public: // substrings and searches - auto substr( size_type start, size_type size ) const noexcept -> StringRef; - - // Returns the current start pointer. - // Note that the pointer can change when if the StringRef is a substring - auto currentData() const noexcept -> char const*; - - private: // ownership queries - may not be consistent between calls - auto isOwned() const noexcept -> bool; - auto isSubstring() const noexcept -> bool; - }; - - auto operator + ( StringRef const& lhs, StringRef const& rhs ) -> std::string; - auto operator + ( StringRef const& lhs, char const* rhs ) -> std::string; - auto operator + ( char const* lhs, StringRef const& rhs ) -> std::string; - - auto operator += ( std::string& lhs, StringRef const& sr ) -> std::string&; - auto operator << ( std::ostream& os, StringRef const& sr ) -> std::ostream&; - - inline auto operator "" _sr( char const* rawChars, std::size_t size ) noexcept -> StringRef { - return StringRef( rawChars, size ); - } - -} // namespace Catch - -inline auto operator "" _catch_sr( char const* rawChars, std::size_t size ) noexcept -> Catch::StringRef { - return Catch::StringRef( rawChars, size ); -} - -// end catch_stringref.h -// start catch_type_traits.hpp - - -#include - -namespace Catch{ - -#ifdef CATCH_CPP17_OR_GREATER - template - inline constexpr auto is_unique = std::true_type{}; - - template - inline constexpr auto is_unique = std::bool_constant< - (!std::is_same_v && ...) && is_unique - >{}; -#else - -template -struct is_unique : std::true_type{}; - -template -struct is_unique : std::integral_constant -::value - && is_unique::value - && is_unique::value ->{}; - -#endif -} - -// end catch_type_traits.hpp -// start catch_preprocessor.hpp - - -#define CATCH_RECURSION_LEVEL0(...) __VA_ARGS__ -#define CATCH_RECURSION_LEVEL1(...) CATCH_RECURSION_LEVEL0(CATCH_RECURSION_LEVEL0(CATCH_RECURSION_LEVEL0(__VA_ARGS__))) -#define CATCH_RECURSION_LEVEL2(...) CATCH_RECURSION_LEVEL1(CATCH_RECURSION_LEVEL1(CATCH_RECURSION_LEVEL1(__VA_ARGS__))) -#define CATCH_RECURSION_LEVEL3(...) CATCH_RECURSION_LEVEL2(CATCH_RECURSION_LEVEL2(CATCH_RECURSION_LEVEL2(__VA_ARGS__))) -#define CATCH_RECURSION_LEVEL4(...) CATCH_RECURSION_LEVEL3(CATCH_RECURSION_LEVEL3(CATCH_RECURSION_LEVEL3(__VA_ARGS__))) -#define CATCH_RECURSION_LEVEL5(...) CATCH_RECURSION_LEVEL4(CATCH_RECURSION_LEVEL4(CATCH_RECURSION_LEVEL4(__VA_ARGS__))) - -#ifdef CATCH_CONFIG_TRADITIONAL_MSVC_PREPROCESSOR -#define INTERNAL_CATCH_EXPAND_VARGS(...) __VA_ARGS__ -// MSVC needs more evaluations -#define CATCH_RECURSION_LEVEL6(...) CATCH_RECURSION_LEVEL5(CATCH_RECURSION_LEVEL5(CATCH_RECURSION_LEVEL5(__VA_ARGS__))) -#define CATCH_RECURSE(...) CATCH_RECURSION_LEVEL6(CATCH_RECURSION_LEVEL6(__VA_ARGS__)) -#else -#define CATCH_RECURSE(...) CATCH_RECURSION_LEVEL5(__VA_ARGS__) -#endif - -#define CATCH_REC_END(...) -#define CATCH_REC_OUT - -#define CATCH_EMPTY() -#define CATCH_DEFER(id) id CATCH_EMPTY() - -#define CATCH_REC_GET_END2() 0, CATCH_REC_END -#define CATCH_REC_GET_END1(...) CATCH_REC_GET_END2 -#define CATCH_REC_GET_END(...) CATCH_REC_GET_END1 -#define CATCH_REC_NEXT0(test, next, ...) next CATCH_REC_OUT -#define CATCH_REC_NEXT1(test, next) CATCH_DEFER ( CATCH_REC_NEXT0 ) ( test, next, 0) -#define CATCH_REC_NEXT(test, next) CATCH_REC_NEXT1(CATCH_REC_GET_END test, next) - -#define CATCH_REC_LIST0(f, x, peek, ...) , f(x) CATCH_DEFER ( CATCH_REC_NEXT(peek, CATCH_REC_LIST1) ) ( f, peek, __VA_ARGS__ ) -#define CATCH_REC_LIST1(f, x, peek, ...) , f(x) CATCH_DEFER ( CATCH_REC_NEXT(peek, CATCH_REC_LIST0) ) ( f, peek, __VA_ARGS__ ) -#define CATCH_REC_LIST2(f, x, peek, ...) f(x) CATCH_DEFER ( CATCH_REC_NEXT(peek, CATCH_REC_LIST1) ) ( f, peek, __VA_ARGS__ ) - -#define CATCH_REC_LIST0_UD(f, userdata, x, peek, ...) , f(userdata, x) CATCH_DEFER ( CATCH_REC_NEXT(peek, CATCH_REC_LIST1_UD) ) ( f, userdata, peek, __VA_ARGS__ ) -#define CATCH_REC_LIST1_UD(f, userdata, x, peek, ...) , f(userdata, x) CATCH_DEFER ( CATCH_REC_NEXT(peek, CATCH_REC_LIST0_UD) ) ( f, userdata, peek, __VA_ARGS__ ) -#define CATCH_REC_LIST2_UD(f, userdata, x, peek, ...) f(userdata, x) CATCH_DEFER ( CATCH_REC_NEXT(peek, CATCH_REC_LIST1_UD) ) ( f, userdata, peek, __VA_ARGS__ ) - -// Applies the function macro `f` to each of the remaining parameters, inserts commas between the results, -// and passes userdata as the first parameter to each invocation, -// e.g. CATCH_REC_LIST_UD(f, x, a, b, c) evaluates to f(x, a), f(x, b), f(x, c) -#define CATCH_REC_LIST_UD(f, userdata, ...) CATCH_RECURSE(CATCH_REC_LIST2_UD(f, userdata, __VA_ARGS__, ()()(), ()()(), ()()(), 0)) - -#define CATCH_REC_LIST(f, ...) CATCH_RECURSE(CATCH_REC_LIST2(f, __VA_ARGS__, ()()(), ()()(), ()()(), 0)) - -#define INTERNAL_CATCH_EXPAND1(param) INTERNAL_CATCH_EXPAND2(param) -#define INTERNAL_CATCH_EXPAND2(...) INTERNAL_CATCH_NO## __VA_ARGS__ -#define INTERNAL_CATCH_DEF(...) INTERNAL_CATCH_DEF __VA_ARGS__ -#define INTERNAL_CATCH_NOINTERNAL_CATCH_DEF -#define INTERNAL_CATCH_STRINGIZE(...) INTERNAL_CATCH_STRINGIZE2(__VA_ARGS__) -#ifndef CATCH_CONFIG_TRADITIONAL_MSVC_PREPROCESSOR -#define INTERNAL_CATCH_STRINGIZE2(...) #__VA_ARGS__ -#define INTERNAL_CATCH_STRINGIZE_WITHOUT_PARENS(param) INTERNAL_CATCH_STRINGIZE(INTERNAL_CATCH_REMOVE_PARENS(param)) -#else -// MSVC is adding extra space and needs another indirection to expand INTERNAL_CATCH_NOINTERNAL_CATCH_DEF -#define INTERNAL_CATCH_STRINGIZE2(...) INTERNAL_CATCH_STRINGIZE3(__VA_ARGS__) -#define INTERNAL_CATCH_STRINGIZE3(...) #__VA_ARGS__ -#define INTERNAL_CATCH_STRINGIZE_WITHOUT_PARENS(param) (INTERNAL_CATCH_STRINGIZE(INTERNAL_CATCH_REMOVE_PARENS(param)) + 1) -#endif - -#define INTERNAL_CATCH_MAKE_NAMESPACE2(...) ns_##__VA_ARGS__ -#define INTERNAL_CATCH_MAKE_NAMESPACE(name) INTERNAL_CATCH_MAKE_NAMESPACE2(name) - -#define INTERNAL_CATCH_REMOVE_PARENS(...) INTERNAL_CATCH_EXPAND1(INTERNAL_CATCH_DEF __VA_ARGS__) - -#ifndef CATCH_CONFIG_TRADITIONAL_MSVC_PREPROCESSOR -#define INTERNAL_CATCH_MAKE_TYPE_LIST2(...) decltype(get_wrapper()) -#define INTERNAL_CATCH_MAKE_TYPE_LIST(...) INTERNAL_CATCH_MAKE_TYPE_LIST2(INTERNAL_CATCH_REMOVE_PARENS(__VA_ARGS__)) -#else -#define INTERNAL_CATCH_MAKE_TYPE_LIST2(...) INTERNAL_CATCH_EXPAND_VARGS(decltype(get_wrapper())) -#define INTERNAL_CATCH_MAKE_TYPE_LIST(...) INTERNAL_CATCH_EXPAND_VARGS(INTERNAL_CATCH_MAKE_TYPE_LIST2(INTERNAL_CATCH_REMOVE_PARENS(__VA_ARGS__))) -#endif - -#define INTERNAL_CATCH_MAKE_TYPE_LISTS_FROM_TYPES(...)\ - CATCH_REC_LIST(INTERNAL_CATCH_MAKE_TYPE_LIST,__VA_ARGS__) - -#define INTERNAL_CATCH_REMOVE_PARENS_1_ARG(_0) INTERNAL_CATCH_REMOVE_PARENS(_0) -#define INTERNAL_CATCH_REMOVE_PARENS_2_ARG(_0, _1) INTERNAL_CATCH_REMOVE_PARENS(_0), INTERNAL_CATCH_REMOVE_PARENS_1_ARG(_1) -#define INTERNAL_CATCH_REMOVE_PARENS_3_ARG(_0, _1, _2) INTERNAL_CATCH_REMOVE_PARENS(_0), INTERNAL_CATCH_REMOVE_PARENS_2_ARG(_1, _2) -#define INTERNAL_CATCH_REMOVE_PARENS_4_ARG(_0, _1, _2, _3) INTERNAL_CATCH_REMOVE_PARENS(_0), INTERNAL_CATCH_REMOVE_PARENS_3_ARG(_1, _2, _3) -#define INTERNAL_CATCH_REMOVE_PARENS_5_ARG(_0, _1, _2, _3, _4) INTERNAL_CATCH_REMOVE_PARENS(_0), INTERNAL_CATCH_REMOVE_PARENS_4_ARG(_1, _2, _3, _4) -#define INTERNAL_CATCH_REMOVE_PARENS_6_ARG(_0, _1, _2, _3, _4, _5) INTERNAL_CATCH_REMOVE_PARENS(_0), INTERNAL_CATCH_REMOVE_PARENS_5_ARG(_1, _2, _3, _4, _5) -#define INTERNAL_CATCH_REMOVE_PARENS_7_ARG(_0, _1, _2, _3, _4, _5, _6) INTERNAL_CATCH_REMOVE_PARENS(_0), INTERNAL_CATCH_REMOVE_PARENS_6_ARG(_1, _2, _4, _5, _6) -#define INTERNAL_CATCH_REMOVE_PARENS_8_ARG(_0, _1, _2, _3, _4, _5, _6, _7) INTERNAL_CATCH_REMOVE_PARENS(_0), INTERNAL_CATCH_REMOVE_PARENS_7_ARG(_1, _2, _3, _4, _5, _6, _7) -#define INTERNAL_CATCH_REMOVE_PARENS_9_ARG(_0, _1, _2, _3, _4, _5, _6, _7, _8) INTERNAL_CATCH_REMOVE_PARENS(_0), INTERNAL_CATCH_REMOVE_PARENS_8_ARG(_1, _2, _3, _4, _5, _6, _7, _8) -#define INTERNAL_CATCH_REMOVE_PARENS_10_ARG(_0, _1, _2, _3, _4, _5, _6, _7, _8, _9) INTERNAL_CATCH_REMOVE_PARENS(_0), INTERNAL_CATCH_REMOVE_PARENS_9_ARG(_1, _2, _3, _4, _5, _6, _7, _8, _9) -#define INTERNAL_CATCH_REMOVE_PARENS_11_ARG(_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10) INTERNAL_CATCH_REMOVE_PARENS(_0), INTERNAL_CATCH_REMOVE_PARENS_10_ARG(_1, _2, _3, _4, _5, _6, _7, _8, _9, _10) - -#define INTERNAL_CATCH_VA_NARGS_IMPL(_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, N, ...) N - -#define INTERNAL_CATCH_TYPE_GEN\ - template struct TypeList {};\ - template\ - constexpr auto get_wrapper() noexcept -> TypeList { return {}; }\ - \ - template class L1, typename...E1, template class L2, typename...E2> \ - constexpr auto append(L1, L2) noexcept -> L1 { return {}; }\ - template< template class L1, typename...E1, template class L2, typename...E2, typename...Rest>\ - constexpr auto append(L1, L2, Rest...) noexcept -> decltype(append(L1{}, Rest{}...)) { return {}; }\ - template< template class L1, typename...E1, typename...Rest>\ - constexpr auto append(L1, TypeList, Rest...) noexcept -> L1 { return {}; }\ - \ - template< template class Container, template class List, typename...elems>\ - constexpr auto rewrap(List) noexcept -> TypeList> { return {}; }\ - template< template class Container, template class List, class...Elems, typename...Elements>\ - constexpr auto rewrap(List,Elements...) noexcept -> decltype(append(TypeList>{}, rewrap(Elements{}...))) { return {}; }\ - \ - template