From d099ce41d3db350cbe9822f91b1d3a2f063ed555 Mon Sep 17 00:00:00 2001 From: lucas8485 <1443937075@qq.com> Date: Thu, 4 Aug 2022 17:13:06 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=BD=E5=B7=A5=E9=98=B6=E6=AE=B52?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- CMakeLists.txt | 4 +- accumulator.h | 102 ++ .../reply/cache-v2-4327d0d10f6390084c1d.json | 1283 ----------------- .../cmakeFiles-v1-2d71857a96b31064ca46.json | 759 ---------- .../codemodel-v2-d0b91aea16fe9089df17.json | 60 - .../reply/index-2022-08-04T05-40-35-0183.json | 108 -- ...tmp_policy-Debug-cda8d61ded076f2311ae.json | 117 -- cmake-build-debug/tmp_policy.cbp | 3 + main.cpp | 24 +- policy_fundamentals.h | 84 +- 10 files changed, 208 insertions(+), 2336 deletions(-) create mode 100644 accumulator.h delete mode 100644 cmake-build-debug/.cmake/api/v1/reply/cache-v2-4327d0d10f6390084c1d.json delete mode 100644 cmake-build-debug/.cmake/api/v1/reply/cmakeFiles-v1-2d71857a96b31064ca46.json delete mode 100644 cmake-build-debug/.cmake/api/v1/reply/codemodel-v2-d0b91aea16fe9089df17.json delete mode 100644 cmake-build-debug/.cmake/api/v1/reply/index-2022-08-04T05-40-35-0183.json delete mode 100644 cmake-build-debug/.cmake/api/v1/reply/target-tmp_policy-Debug-cda8d61ded076f2311ae.json diff --git a/CMakeLists.txt b/CMakeLists.txt index d0db250..d59f87f 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,6 +1,6 @@ cmake_minimum_required(VERSION 3.18) project(tmp_policy) -set(CMAKE_CXX_STANDARD 14) +set(CMAKE_CXX_STANDARD 17) -add_executable(tmp_policy main.cpp accpolicy.h policy_fundamentals.h) +add_executable(tmp_policy main.cpp accpolicy.h policy_fundamentals.h accumulator.h) diff --git a/accumulator.h b/accumulator.h new file mode 100644 index 0000000..30d7127 --- /dev/null +++ b/accumulator.h @@ -0,0 +1,102 @@ +// tmp_policy +// Created by lucas on 22-8-4. +// Re-implementation of a typical policy architecture in C++ Template Meta-Programming. + + +#ifndef TMP_POLICY_ACCUMULATOR_H +#define TMP_POLICY_ACCUMULATOR_H + +// A demo for integrating the policy architecture +// into your project. +#include +#include +#include "accpolicy.h" +#include "policy_fundamentals.h" + +// According to the C++ Standard, +// Direct use of static_assert(false) results in undefined behavior, +// so we define a type-dependent boolean variable whose value is false. +template +constexpr bool DependencyFalse = false; +/** + * @brief class Accumulator - the class performs "accumulation" + * and it's behavior is controlled by policy objects. + * @tparam TPolicies The policy objects which control the class's behavior. + */ +template +class Accumulator +{ + // Put all the policy objects into a PolicyContainer. + using PolicyCont = PolicyContainer; + // Use PolicySelect Meta-Function to get the policy selection result. + using PSR = PolicySelect; + // According to the policy selection result, + // we get the necessary information to control the Accumulator's behavior. + // AccuType - controls how the "accumulation" works; Add or Multiply? + using AccuType = typename PSR::AccuType; + // IsAve - returns the average or the original result? + static constexpr bool IsAve = PSR::IsAveValue; + // ResultType - What type do you expect the Accumulator to return? + using ResultType = typename PSR::ResultType; +public: + /** + * @brief eval - The function which does the "accumulation". + * @tparam TInput The type of parameter in - it will be judged by the compiler. + * @param in The input array which contains the elements waiting to be accumulated. + * It needs to support range-based for statement. + * @return The "accumulation" result. User-specified. + */ + template + static auto eval(const TInput& in) + { + ResultType res{}; + int count{}; + // If we want to perform "add" ... + if constexpr (std::is_same::value) + { + // Add the all elements to res ... + for (const auto& element: in) + { + res += element; + // ... and also records the number of elements. + count += 1; + } + // If we want to calculate average... + if constexpr (IsAve) + // ... calculates the average and returns. + return res / static_cast(count); + else + // ... if not, simply returns the sum. + return res; + } + // Or if we want to perform "multiply" ... + else if constexpr (std::is_same::value) + { + // Because 0 times any number equals 0 ... + // ... we need to give res an initial value. + res = 1; + // Multiply the all elements to res ... + for (const auto& element: in) + { + res *= element; + // ... and also records the number of elements. + count += 1; + } + // If we want to calculate average... + if constexpr (IsAve) + // ... calculates the average and returns. + return std::pow(res, 1.0 / static_cast(count)); + else + // ... if not, simply returns the sum. + return res; + } + else + { + // We have triggered logic that should not be triggered ... + // ... the solution is to generate a compile error. + static_assert(DependencyFalse, "Invalid policy argument!"); + } + } +}; + +#endif //TMP_POLICY_ACCUMULATOR_H diff --git a/cmake-build-debug/.cmake/api/v1/reply/cache-v2-4327d0d10f6390084c1d.json b/cmake-build-debug/.cmake/api/v1/reply/cache-v2-4327d0d10f6390084c1d.json deleted file mode 100644 index b99451c..0000000 --- a/cmake-build-debug/.cmake/api/v1/reply/cache-v2-4327d0d10f6390084c1d.json +++ /dev/null @@ -1,1283 +0,0 @@ -{ - "entries" : - [ - { - "name" : "CMAKE_ADDR2LINE", - "properties" : - [ - { - "name" : "ADVANCED", - "value" : "1" - }, - { - "name" : "HELPSTRING", - "value" : "Path to a program." - } - ], - "type" : "FILEPATH", - "value" : "/usr/bin/addr2line" - }, - { - "name" : "CMAKE_AR", - "properties" : - [ - { - "name" : "ADVANCED", - "value" : "1" - }, - { - "name" : "HELPSTRING", - "value" : "Path to a program." - } - ], - "type" : "FILEPATH", - "value" : "/usr/bin/ar" - }, - { - "name" : "CMAKE_BUILD_TYPE", - "properties" : - [ - { - "name" : "HELPSTRING", - "value" : "Choose the type of build, options are: None Debug Release RelWithDebInfo MinSizeRel ..." - } - ], - "type" : "STRING", - "value" : "Debug" - }, - { - "name" : "CMAKE_CACHEFILE_DIR", - "properties" : - [ - { - "name" : "HELPSTRING", - "value" : "This is the directory where this CMakeCache.txt was created" - } - ], - "type" : "INTERNAL", - "value" : "/home/lucas/CLionProjects/tmp-policy/cmake-build-debug" - }, - { - "name" : "CMAKE_CACHE_MAJOR_VERSION", - "properties" : - [ - { - "name" : "HELPSTRING", - "value" : "Major version of cmake used to create the current loaded cache" - } - ], - "type" : "INTERNAL", - "value" : "3" - }, - { - "name" : "CMAKE_CACHE_MINOR_VERSION", - "properties" : - [ - { - "name" : "HELPSTRING", - "value" : "Minor version of cmake used to create the current loaded cache" - } - ], - "type" : "INTERNAL", - "value" : "22" - }, - { - "name" : "CMAKE_CACHE_PATCH_VERSION", - "properties" : - [ - { - "name" : "HELPSTRING", - "value" : "Patch version of cmake used to create the current loaded cache" - } - ], - "type" : "INTERNAL", - "value" : "1" - }, - { - "name" : "CMAKE_CODEBLOCKS_COMPILER_ID", - "properties" : - [ - { - "name" : "HELPSTRING", - "value" : "Id string of the compiler for the CodeBlocks IDE. Automatically detected when left empty" - } - ], - "type" : "STRING", - "value" : "" - }, - { - "name" : "CMAKE_CODEBLOCKS_EXECUTABLE", - "properties" : - [ - { - "name" : "HELPSTRING", - "value" : "The CodeBlocks executable" - } - ], - "type" : "FILEPATH", - "value" : "/usr/bin/codeblocks" - }, - { - "name" : "CMAKE_CODEBLOCKS_MAKE_ARGUMENTS", - "properties" : - [ - { - "name" : "HELPSTRING", - "value" : "Additional command line arguments when CodeBlocks invokes make. Enter e.g. -j to get parallel builds" - } - ], - "type" : "STRING", - "value" : "-j16" - }, - { - "name" : "CMAKE_COLOR_MAKEFILE", - "properties" : - [ - { - "name" : "ADVANCED", - "value" : "1" - }, - { - "name" : "HELPSTRING", - "value" : "Enable/Disable color output during build." - } - ], - "type" : "BOOL", - "value" : "ON" - }, - { - "name" : "CMAKE_COMMAND", - "properties" : - [ - { - "name" : "HELPSTRING", - "value" : "Path to CMake executable." - } - ], - "type" : "INTERNAL", - "value" : "/usr/bin/cmake" - }, - { - "name" : "CMAKE_CPACK_COMMAND", - "properties" : - [ - { - "name" : "HELPSTRING", - "value" : "Path to cpack program executable." - } - ], - "type" : "INTERNAL", - "value" : "/usr/bin/cpack" - }, - { - "name" : "CMAKE_CTEST_COMMAND", - "properties" : - [ - { - "name" : "HELPSTRING", - "value" : "Path to ctest program executable." - } - ], - "type" : "INTERNAL", - "value" : "/usr/bin/ctest" - }, - { - "name" : "CMAKE_CXX_COMPILER", - "properties" : - [ - { - "name" : "ADVANCED", - "value" : "1" - }, - { - "name" : "HELPSTRING", - "value" : "CXX compiler" - } - ], - "type" : "STRING", - "value" : "/usr/bin/clang++" - }, - { - "name" : "CMAKE_CXX_COMPILER_AR", - "properties" : - [ - { - "name" : "ADVANCED", - "value" : "1" - }, - { - "name" : "HELPSTRING", - "value" : "LLVM archiver" - } - ], - "type" : "FILEPATH", - "value" : "/usr/bin/llvm-ar-13" - }, - { - "name" : "CMAKE_CXX_COMPILER_RANLIB", - "properties" : - [ - { - "name" : "ADVANCED", - "value" : "1" - }, - { - "name" : "HELPSTRING", - "value" : "Generate index for LLVM archive" - } - ], - "type" : "FILEPATH", - "value" : "/usr/bin/llvm-ranlib-13" - }, - { - "name" : "CMAKE_CXX_FLAGS", - "properties" : - [ - { - "name" : "ADVANCED", - "value" : "1" - }, - { - "name" : "HELPSTRING", - "value" : "Flags used by the CXX compiler during all build types." - } - ], - "type" : "STRING", - "value" : "" - }, - { - "name" : "CMAKE_CXX_FLAGS_DEBUG", - "properties" : - [ - { - "name" : "ADVANCED", - "value" : "1" - }, - { - "name" : "HELPSTRING", - "value" : "Flags used by the CXX compiler during DEBUG builds." - } - ], - "type" : "STRING", - "value" : "-g" - }, - { - "name" : "CMAKE_CXX_FLAGS_MINSIZEREL", - "properties" : - [ - { - "name" : "ADVANCED", - "value" : "1" - }, - { - "name" : "HELPSTRING", - "value" : "Flags used by the CXX compiler during MINSIZEREL builds." - } - ], - "type" : "STRING", - "value" : "-Os -DNDEBUG" - }, - { - "name" : "CMAKE_CXX_FLAGS_RELEASE", - "properties" : - [ - { - "name" : "ADVANCED", - "value" : "1" - }, - { - "name" : "HELPSTRING", - "value" : "Flags used by the CXX compiler during RELEASE builds." - } - ], - "type" : "STRING", - "value" : "-O3 -DNDEBUG" - }, - { - "name" : "CMAKE_CXX_FLAGS_RELWITHDEBINFO", - "properties" : - [ - { - "name" : "ADVANCED", - "value" : "1" - }, - { - "name" : "HELPSTRING", - "value" : "Flags used by the CXX compiler during RELWITHDEBINFO builds." - } - ], - "type" : "STRING", - "value" : "-O2 -g -DNDEBUG" - }, - { - "name" : "CMAKE_C_COMPILER", - "properties" : - [ - { - "name" : "ADVANCED", - "value" : "1" - }, - { - "name" : "HELPSTRING", - "value" : "C compiler" - } - ], - "type" : "STRING", - "value" : "/usr/bin/clang" - }, - { - "name" : "CMAKE_C_COMPILER_AR", - "properties" : - [ - { - "name" : "ADVANCED", - "value" : "1" - }, - { - "name" : "HELPSTRING", - "value" : "LLVM archiver" - } - ], - "type" : "FILEPATH", - "value" : "/usr/bin/llvm-ar-13" - }, - { - "name" : "CMAKE_C_COMPILER_RANLIB", - "properties" : - [ - { - "name" : "ADVANCED", - "value" : "1" - }, - { - "name" : "HELPSTRING", - "value" : "Generate index for LLVM archive" - } - ], - "type" : "FILEPATH", - "value" : "/usr/bin/llvm-ranlib-13" - }, - { - "name" : "CMAKE_C_FLAGS", - "properties" : - [ - { - "name" : "ADVANCED", - "value" : "1" - }, - { - "name" : "HELPSTRING", - "value" : "Flags used by the C compiler during all build types." - } - ], - "type" : "STRING", - "value" : "" - }, - { - "name" : "CMAKE_C_FLAGS_DEBUG", - "properties" : - [ - { - "name" : "ADVANCED", - "value" : "1" - }, - { - "name" : "HELPSTRING", - "value" : "Flags used by the C compiler during DEBUG builds." - } - ], - "type" : "STRING", - "value" : "-g" - }, - { - "name" : "CMAKE_C_FLAGS_MINSIZEREL", - "properties" : - [ - { - "name" : "ADVANCED", - "value" : "1" - }, - { - "name" : "HELPSTRING", - "value" : "Flags used by the C compiler during MINSIZEREL builds." - } - ], - "type" : "STRING", - "value" : "-Os -DNDEBUG" - }, - { - "name" : "CMAKE_C_FLAGS_RELEASE", - "properties" : - [ - { - "name" : "ADVANCED", - "value" : "1" - }, - { - "name" : "HELPSTRING", - "value" : "Flags used by the C compiler during RELEASE builds." - } - ], - "type" : "STRING", - "value" : "-O3 -DNDEBUG" - }, - { - "name" : "CMAKE_C_FLAGS_RELWITHDEBINFO", - "properties" : - [ - { - "name" : "ADVANCED", - "value" : "1" - }, - { - "name" : "HELPSTRING", - "value" : "Flags used by the C compiler during RELWITHDEBINFO builds." - } - ], - "type" : "STRING", - "value" : "-O2 -g -DNDEBUG" - }, - { - "name" : "CMAKE_DLLTOOL", - "properties" : - [ - { - "name" : "ADVANCED", - "value" : "1" - }, - { - "name" : "HELPSTRING", - "value" : "Path to a program." - } - ], - "type" : "FILEPATH", - "value" : "CMAKE_DLLTOOL-NOTFOUND" - }, - { - "name" : "CMAKE_EXECUTABLE_FORMAT", - "properties" : - [ - { - "name" : "HELPSTRING", - "value" : "Executable file format" - } - ], - "type" : "INTERNAL", - "value" : "ELF" - }, - { - "name" : "CMAKE_EXE_LINKER_FLAGS", - "properties" : - [ - { - "name" : "ADVANCED", - "value" : "1" - }, - { - "name" : "HELPSTRING", - "value" : "Flags used by the linker during all build types." - } - ], - "type" : "STRING", - "value" : "" - }, - { - "name" : "CMAKE_EXE_LINKER_FLAGS_DEBUG", - "properties" : - [ - { - "name" : "ADVANCED", - "value" : "1" - }, - { - "name" : "HELPSTRING", - "value" : "Flags used by the linker during DEBUG builds." - } - ], - "type" : "STRING", - "value" : "" - }, - { - "name" : "CMAKE_EXE_LINKER_FLAGS_MINSIZEREL", - "properties" : - [ - { - "name" : "ADVANCED", - "value" : "1" - }, - { - "name" : "HELPSTRING", - "value" : "Flags used by the linker during MINSIZEREL builds." - } - ], - "type" : "STRING", - "value" : "" - }, - { - "name" : "CMAKE_EXE_LINKER_FLAGS_RELEASE", - "properties" : - [ - { - "name" : "ADVANCED", - "value" : "1" - }, - { - "name" : "HELPSTRING", - "value" : "Flags used by the linker during RELEASE builds." - } - ], - "type" : "STRING", - "value" : "" - }, - { - "name" : "CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO", - "properties" : - [ - { - "name" : "ADVANCED", - "value" : "1" - }, - { - "name" : "HELPSTRING", - "value" : "Flags used by the linker during RELWITHDEBINFO builds." - } - ], - "type" : "STRING", - "value" : "" - }, - { - "name" : "CMAKE_EXPORT_COMPILE_COMMANDS", - "properties" : - [ - { - "name" : "ADVANCED", - "value" : "1" - }, - { - "name" : "HELPSTRING", - "value" : "Enable/Disable output of compile commands during generation." - } - ], - "type" : "BOOL", - "value" : "" - }, - { - "name" : "CMAKE_EXTRA_GENERATOR", - "properties" : - [ - { - "name" : "HELPSTRING", - "value" : "Name of external makefile project generator." - } - ], - "type" : "INTERNAL", - "value" : "CodeBlocks" - }, - { - "name" : "CMAKE_EXTRA_GENERATOR_CXX_SYSTEM_DEFINED_MACROS", - "properties" : - [ - { - "name" : "HELPSTRING", - "value" : "CXX compiler system defined macros" - } - ], - "type" : "INTERNAL", - "value" : "__llvm__;1;__clang__;1;__clang_major__;13;__clang_minor__;0;__clang_patchlevel__;1;__clang_version__;\"13.0.1 \";__GNUC__;4;__GNUC_MINOR__;2;__GNUC_PATCHLEVEL__;1;__GXX_ABI_VERSION;1002;__ATOMIC_RELAXED;0;__ATOMIC_CONSUME;1;__ATOMIC_ACQUIRE;2;__ATOMIC_RELEASE;3;__ATOMIC_ACQ_REL;4;__ATOMIC_SEQ_CST;5;__OPENCL_MEMORY_SCOPE_WORK_ITEM;0;__OPENCL_MEMORY_SCOPE_WORK_GROUP;1;__OPENCL_MEMORY_SCOPE_DEVICE;2;__OPENCL_MEMORY_SCOPE_ALL_SVM_DEVICES;3;__OPENCL_MEMORY_SCOPE_SUB_GROUP;4;__PRAGMA_REDEFINE_EXTNAME;1;__VERSION__;\"Deepin Clang 13.0.1\";__OBJC_BOOL_IS_BOOL;0;__CONSTANT_CFSTRINGS__;1;__clang_literal_encoding__;\"UTF-8\";__clang_wide_literal_encoding__;\"UTF-32\";__ORDER_LITTLE_ENDIAN__;1234;__ORDER_BIG_ENDIAN__;4321;__ORDER_PDP_ENDIAN__;3412;__BYTE_ORDER__;__ORDER_LITTLE_ENDIAN__;__LITTLE_ENDIAN__;1;_LP64;1;__LP64__;1;__CHAR_BIT__;8;__SCHAR_MAX__;127;__SHRT_MAX__;32767;__INT_MAX__;2147483647;__LONG_MAX__;9223372036854775807L;__LONG_LONG_MAX__;9223372036854775807LL;__WCHAR_MAX__;2147483647;__WINT_MAX__;4294967295U;__INTMAX_MAX__;9223372036854775807L;__SIZE_MAX__;18446744073709551615UL;__UINTMAX_MAX__;18446744073709551615UL;__PTRDIFF_MAX__;9223372036854775807L;__INTPTR_MAX__;9223372036854775807L;__UINTPTR_MAX__;18446744073709551615UL;__SIZEOF_DOUBLE__;8;__SIZEOF_FLOAT__;4;__SIZEOF_INT__;4;__SIZEOF_LONG__;8;__SIZEOF_LONG_DOUBLE__;16;__SIZEOF_LONG_LONG__;8;__SIZEOF_POINTER__;8;__SIZEOF_SHORT__;2;__SIZEOF_PTRDIFF_T__;8;__SIZEOF_SIZE_T__;8;__SIZEOF_WCHAR_T__;4;__SIZEOF_WINT_T__;4;__SIZEOF_INT128__;16;__INTMAX_TYPE__;long int;__INTMAX_FMTd__;\"ld\";__INTMAX_FMTi__;\"li\";__INTMAX_C_SUFFIX__;L;__UINTMAX_TYPE__;long unsigned int;__UINTMAX_FMTo__;\"lo\";__UINTMAX_FMTu__;\"lu\";__UINTMAX_FMTx__;\"lx\";__UINTMAX_FMTX__;\"lX\";__UINTMAX_C_SUFFIX__;UL;__INTMAX_WIDTH__;64;__PTRDIFF_TYPE__;long int;__PTRDIFF_FMTd__;\"ld\";__PTRDIFF_FMTi__;\"li\";__PTRDIFF_WIDTH__;64;__INTPTR_TYPE__;long int;__INTPTR_FMTd__;\"ld\";__INTPTR_FMTi__;\"li\";__INTPTR_WIDTH__;64;__SIZE_TYPE__;long unsigned int;__SIZE_FMTo__;\"lo\";__SIZE_FMTu__;\"lu\";__SIZE_FMTx__;\"lx\";__SIZE_FMTX__;\"lX\";__SIZE_WIDTH__;64;__WCHAR_TYPE__;int;__WCHAR_WIDTH__;32;__WINT_TYPE__;unsigned int;__WINT_WIDTH__;32;__SIG_ATOMIC_WIDTH__;32;__SIG_ATOMIC_MAX__;2147483647;__CHAR16_TYPE__;unsigned short;__CHAR32_TYPE__;unsigned int;__UINTMAX_WIDTH__;64;__UINTPTR_TYPE__;long unsigned int;__UINTPTR_FMTo__;\"lo\";__UINTPTR_FMTu__;\"lu\";__UINTPTR_FMTx__;\"lx\";__UINTPTR_FMTX__;\"lX\";__UINTPTR_WIDTH__;64;__FLT_DENORM_MIN__;1.40129846e-45F;__FLT_HAS_DENORM__;1;__FLT_DIG__;6;__FLT_DECIMAL_DIG__;9;__FLT_EPSILON__;1.19209290e-7F;__FLT_HAS_INFINITY__;1;__FLT_HAS_QUIET_NAN__;1;__FLT_MANT_DIG__;24;__FLT_MAX_10_EXP__;38;__FLT_MAX_EXP__;128;__FLT_MAX__;3.40282347e+38F;__FLT_MIN_10_EXP__;(-37);__FLT_MIN_EXP__;(-125);__FLT_MIN__;1.17549435e-38F;__DBL_DENORM_MIN__;4.9406564584124654e-324;__DBL_HAS_DENORM__;1;__DBL_DIG__;15;__DBL_DECIMAL_DIG__;17;__DBL_EPSILON__;2.2204460492503131e-16;__DBL_HAS_INFINITY__;1;__DBL_HAS_QUIET_NAN__;1;__DBL_MANT_DIG__;53;__DBL_MAX_10_EXP__;308;__DBL_MAX_EXP__;1024;__DBL_MAX__;1.7976931348623157e+308;__DBL_MIN_10_EXP__;(-307);__DBL_MIN_EXP__;(-1021);__DBL_MIN__;2.2250738585072014e-308;__LDBL_DENORM_MIN__;3.64519953188247460253e-4951L;__LDBL_HAS_DENORM__;1;__LDBL_DIG__;18;__LDBL_DECIMAL_DIG__;21;__LDBL_EPSILON__;1.08420217248550443401e-19L;__LDBL_HAS_INFINITY__;1;__LDBL_HAS_QUIET_NAN__;1;__LDBL_MANT_DIG__;64;__LDBL_MAX_10_EXP__;4932;__LDBL_MAX_EXP__;16384;__LDBL_MAX__;1.18973149535723176502e+4932L;__LDBL_MIN_10_EXP__;(-4931);__LDBL_MIN_EXP__;(-16381);__LDBL_MIN__;3.36210314311209350626e-4932L;__POINTER_WIDTH__;64;__BIGGEST_ALIGNMENT__;16;__WINT_UNSIGNED__;1;__INT8_TYPE__;signed char;__INT8_FMTd__;\"hhd\";__INT8_FMTi__;\"hhi\";__INT8_C_SUFFIX__; ;__INT16_TYPE__;short;__INT16_FMTd__;\"hd\";__INT16_FMTi__;\"hi\";__INT16_C_SUFFIX__; ;__INT32_TYPE__;int;__INT32_FMTd__;\"d\";__INT32_FMTi__;\"i\";__INT32_C_SUFFIX__; ;__INT64_TYPE__;long int;__INT64_FMTd__;\"ld\";__INT64_FMTi__;\"li\";__INT64_C_SUFFIX__;L;__UINT8_TYPE__;unsigned char;__UINT8_FMTo__;\"hho\";__UINT8_FMTu__;\"hhu\";__UINT8_FMTx__;\"hhx\";__UINT8_FMTX__;\"hhX\";__UINT8_C_SUFFIX__; ;__UINT8_MAX__;255;__INT8_MAX__;127;__UINT16_TYPE__;unsigned short;__UINT16_FMTo__;\"ho\";__UINT16_FMTu__;\"hu\";__UINT16_FMTx__;\"hx\";__UINT16_FMTX__;\"hX\";__UINT16_C_SUFFIX__; ;__UINT16_MAX__;65535;__INT16_MAX__;32767;__UINT32_TYPE__;unsigned int;__UINT32_FMTo__;\"o\";__UINT32_FMTu__;\"u\";__UINT32_FMTx__;\"x\";__UINT32_FMTX__;\"X\";__UINT32_C_SUFFIX__;U;__UINT32_MAX__;4294967295U;__INT32_MAX__;2147483647;__UINT64_TYPE__;long unsigned int;__UINT64_FMTo__;\"lo\";__UINT64_FMTu__;\"lu\";__UINT64_FMTx__;\"lx\";__UINT64_FMTX__;\"lX\";__UINT64_C_SUFFIX__;UL;__UINT64_MAX__;18446744073709551615UL;__INT64_MAX__;9223372036854775807L;__INT_LEAST8_TYPE__;signed char;__INT_LEAST8_MAX__;127;__INT_LEAST8_FMTd__;\"hhd\";__INT_LEAST8_FMTi__;\"hhi\";__UINT_LEAST8_TYPE__;unsigned char;__UINT_LEAST8_MAX__;255;__UINT_LEAST8_FMTo__;\"hho\";__UINT_LEAST8_FMTu__;\"hhu\";__UINT_LEAST8_FMTx__;\"hhx\";__UINT_LEAST8_FMTX__;\"hhX\";__INT_LEAST16_TYPE__;short;__INT_LEAST16_MAX__;32767;__INT_LEAST16_FMTd__;\"hd\";__INT_LEAST16_FMTi__;\"hi\";__UINT_LEAST16_TYPE__;unsigned short;__UINT_LEAST16_MAX__;65535;__UINT_LEAST16_FMTo__;\"ho\";__UINT_LEAST16_FMTu__;\"hu\";__UINT_LEAST16_FMTx__;\"hx\";__UINT_LEAST16_FMTX__;\"hX\";__INT_LEAST32_TYPE__;int;__INT_LEAST32_MAX__;2147483647;__INT_LEAST32_FMTd__;\"d\";__INT_LEAST32_FMTi__;\"i\";__UINT_LEAST32_TYPE__;unsigned int;__UINT_LEAST32_MAX__;4294967295U;__UINT_LEAST32_FMTo__;\"o\";__UINT_LEAST32_FMTu__;\"u\";__UINT_LEAST32_FMTx__;\"x\";__UINT_LEAST32_FMTX__;\"X\";__INT_LEAST64_TYPE__;long int;__INT_LEAST64_MAX__;9223372036854775807L;__INT_LEAST64_FMTd__;\"ld\";__INT_LEAST64_FMTi__;\"li\";__UINT_LEAST64_TYPE__;long unsigned int;__UINT_LEAST64_MAX__;18446744073709551615UL;__UINT_LEAST64_FMTo__;\"lo\";__UINT_LEAST64_FMTu__;\"lu\";__UINT_LEAST64_FMTx__;\"lx\";__UINT_LEAST64_FMTX__;\"lX\";__INT_FAST8_TYPE__;signed char;__INT_FAST8_MAX__;127;__INT_FAST8_FMTd__;\"hhd\";__INT_FAST8_FMTi__;\"hhi\";__UINT_FAST8_TYPE__;unsigned char;__UINT_FAST8_MAX__;255;__UINT_FAST8_FMTo__;\"hho\";__UINT_FAST8_FMTu__;\"hhu\";__UINT_FAST8_FMTx__;\"hhx\";__UINT_FAST8_FMTX__;\"hhX\";__INT_FAST16_TYPE__;short;__INT_FAST16_MAX__;32767;__INT_FAST16_FMTd__;\"hd\";__INT_FAST16_FMTi__;\"hi\";__UINT_FAST16_TYPE__;unsigned short;__UINT_FAST16_MAX__;65535;__UINT_FAST16_FMTo__;\"ho\";__UINT_FAST16_FMTu__;\"hu\";__UINT_FAST16_FMTx__;\"hx\";__UINT_FAST16_FMTX__;\"hX\";__INT_FAST32_TYPE__;int;__INT_FAST32_MAX__;2147483647;__INT_FAST32_FMTd__;\"d\";__INT_FAST32_FMTi__;\"i\";__UINT_FAST32_TYPE__;unsigned int;__UINT_FAST32_MAX__;4294967295U;__UINT_FAST32_FMTo__;\"o\";__UINT_FAST32_FMTu__;\"u\";__UINT_FAST32_FMTx__;\"x\";__UINT_FAST32_FMTX__;\"X\";__INT_FAST64_TYPE__;long int;__INT_FAST64_MAX__;9223372036854775807L;__INT_FAST64_FMTd__;\"ld\";__INT_FAST64_FMTi__;\"li\";__UINT_FAST64_TYPE__;long unsigned int;__UINT_FAST64_MAX__;18446744073709551615UL;__UINT_FAST64_FMTo__;\"lo\";__UINT_FAST64_FMTu__;\"lu\";__UINT_FAST64_FMTx__;\"lx\";__UINT_FAST64_FMTX__;\"lX\";__USER_LABEL_PREFIX__; ;__FINITE_MATH_ONLY__;0;__GNUC_STDC_INLINE__;1;__GCC_ATOMIC_TEST_AND_SET_TRUEVAL;1;__CLANG_ATOMIC_BOOL_LOCK_FREE;2;__CLANG_ATOMIC_CHAR_LOCK_FREE;2;__CLANG_ATOMIC_CHAR16_T_LOCK_FREE;2;__CLANG_ATOMIC_CHAR32_T_LOCK_FREE;2;__CLANG_ATOMIC_WCHAR_T_LOCK_FREE;2;__CLANG_ATOMIC_SHORT_LOCK_FREE;2;__CLANG_ATOMIC_INT_LOCK_FREE;2;__CLANG_ATOMIC_LONG_LOCK_FREE;2;__CLANG_ATOMIC_LLONG_LOCK_FREE;2;__CLANG_ATOMIC_POINTER_LOCK_FREE;2;__GCC_ATOMIC_BOOL_LOCK_FREE;2;__GCC_ATOMIC_CHAR_LOCK_FREE;2;__GCC_ATOMIC_CHAR16_T_LOCK_FREE;2;__GCC_ATOMIC_CHAR32_T_LOCK_FREE;2;__GCC_ATOMIC_WCHAR_T_LOCK_FREE;2;__GCC_ATOMIC_SHORT_LOCK_FREE;2;__GCC_ATOMIC_INT_LOCK_FREE;2;__GCC_ATOMIC_LONG_LOCK_FREE;2;__GCC_ATOMIC_LLONG_LOCK_FREE;2;__GCC_ATOMIC_POINTER_LOCK_FREE;2;__NO_INLINE__;1;__FLT_EVAL_METHOD__;0;__FLT_RADIX__;2;__DECIMAL_DIG__;__LDBL_DECIMAL_DIG__;__GCC_ASM_FLAG_OUTPUTS__;1;__code_model_small__;1;__amd64__;1;__amd64;1;__x86_64;1;__x86_64__;1;__SEG_GS;1;__SEG_FS;1;__seg_gs;__attribute__((address_space(256)));__seg_fs;__attribute__((address_space(257)));__k8;1;__k8__;1;__tune_k8__;1;__REGISTER_PREFIX__; ;__NO_MATH_INLINES;1;__FXSR__;1;__SSE2__;1;__SSE2_MATH__;1;__SSE__;1;__SSE_MATH__;1;__MMX__;1;__GCC_HAVE_SYNC_COMPARE_AND_SWAP_1;1;__GCC_HAVE_SYNC_COMPARE_AND_SWAP_2;1;__GCC_HAVE_SYNC_COMPARE_AND_SWAP_4;1;__GCC_HAVE_SYNC_COMPARE_AND_SWAP_8;1;__SIZEOF_FLOAT128__;16;unix;1;__unix;1;__unix__;1;linux;1;__linux;1;__linux__;1;__ELF__;1;__gnu_linux__;1;__FLOAT128__;1;__STDC__;1;__STDC_HOSTED__;1;__STDC_VERSION__;201710L;__STDC_UTF_16__;1;__STDC_UTF_32__;1;__GCC_HAVE_DWARF2_CFI_ASM;1;__llvm__;1;__clang__;1;__clang_major__;13;__clang_minor__;0;__clang_patchlevel__;1;__clang_version__;\"13.0.1 \";__GNUC__;4;__GNUC_MINOR__;2;__GNUC_PATCHLEVEL__;1;__GXX_ABI_VERSION;1002;__GNUG__;4;__GXX_WEAK__;1;__ATOMIC_RELAXED;0;__ATOMIC_CONSUME;1;__ATOMIC_ACQUIRE;2;__ATOMIC_RELEASE;3;__ATOMIC_ACQ_REL;4;__ATOMIC_SEQ_CST;5;__OPENCL_MEMORY_SCOPE_WORK_ITEM;0;__OPENCL_MEMORY_SCOPE_WORK_GROUP;1;__OPENCL_MEMORY_SCOPE_DEVICE;2;__OPENCL_MEMORY_SCOPE_ALL_SVM_DEVICES;3;__OPENCL_MEMORY_SCOPE_SUB_GROUP;4;__PRAGMA_REDEFINE_EXTNAME;1;__VERSION__;\"Deepin Clang 13.0.1\";__GXX_EXPERIMENTAL_CXX0X__;1;__OBJC_BOOL_IS_BOOL;0;__cpp_rtti;199711L;__cpp_exceptions;199711L;__cpp_unicode_characters;200704L;__cpp_raw_strings;200710L;__cpp_unicode_literals;200710L;__cpp_user_defined_literals;200809L;__cpp_lambdas;200907L;__cpp_constexpr;201304L;__cpp_constexpr_in_decltype;201711L;__cpp_range_based_for;200907;__cpp_static_assert;200410;__cpp_decltype;200707L;__cpp_attributes;200809L;__cpp_rvalue_references;200610L;__cpp_variadic_templates;200704L;__cpp_initializer_lists;200806L;__cpp_delegating_constructors;200604L;__cpp_nsdmi;200809L;__cpp_inheriting_constructors;201511L;__cpp_ref_qualifiers;200710L;__cpp_alias_templates;200704L;__cpp_threadsafe_static_init;200806L;__cpp_binary_literals;201304L;__cpp_digit_separators;201309L;__cpp_init_captures;201304L;__cpp_generic_lambdas;201304L;__cpp_decltype_auto;201304L;__cpp_return_type_deduction;201304L;__cpp_aggregate_nsdmi;201304L;__cpp_variable_templates;201304L;__cpp_impl_destroying_delete;201806L;__CONSTANT_CFSTRINGS__;1;__EXCEPTIONS;1;__GXX_RTTI;1;__DEPRECATED;1;__private_extern__;extern;__clang_literal_encoding__;\"UTF-8\";__clang_wide_literal_encoding__;\"UTF-32\";__ORDER_LITTLE_ENDIAN__;1234;__ORDER_BIG_ENDIAN__;4321;__ORDER_PDP_ENDIAN__;3412;__BYTE_ORDER__;__ORDER_LITTLE_ENDIAN__;__LITTLE_ENDIAN__;1;_LP64;1;__LP64__;1;__CHAR_BIT__;8;__SCHAR_MAX__;127;__SHRT_MAX__;32767;__INT_MAX__;2147483647;__LONG_MAX__;9223372036854775807L;__LONG_LONG_MAX__;9223372036854775807LL;__WCHAR_MAX__;2147483647;__WINT_MAX__;4294967295U;__INTMAX_MAX__;9223372036854775807L;__SIZE_MAX__;18446744073709551615UL;__UINTMAX_MAX__;18446744073709551615UL;__PTRDIFF_MAX__;9223372036854775807L;__INTPTR_MAX__;9223372036854775807L;__UINTPTR_MAX__;18446744073709551615UL;__SIZEOF_DOUBLE__;8;__SIZEOF_FLOAT__;4;__SIZEOF_INT__;4;__SIZEOF_LONG__;8;__SIZEOF_LONG_DOUBLE__;16;__SIZEOF_LONG_LONG__;8;__SIZEOF_POINTER__;8;__SIZEOF_SHORT__;2;__SIZEOF_PTRDIFF_T__;8;__SIZEOF_SIZE_T__;8;__SIZEOF_WCHAR_T__;4;__SIZEOF_WINT_T__;4;__SIZEOF_INT128__;16;__INTMAX_TYPE__;long int;__INTMAX_FMTd__;\"ld\";__INTMAX_FMTi__;\"li\";__INTMAX_C_SUFFIX__;L;__UINTMAX_TYPE__;long unsigned int;__UINTMAX_FMTo__;\"lo\";__UINTMAX_FMTu__;\"lu\";__UINTMAX_FMTx__;\"lx\";__UINTMAX_FMTX__;\"lX\";__UINTMAX_C_SUFFIX__;UL;__INTMAX_WIDTH__;64;__PTRDIFF_TYPE__;long int;__PTRDIFF_FMTd__;\"ld\";__PTRDIFF_FMTi__;\"li\";__PTRDIFF_WIDTH__;64;__INTPTR_TYPE__;long int;__INTPTR_FMTd__;\"ld\";__INTPTR_FMTi__;\"li\";__INTPTR_WIDTH__;64;__SIZE_TYPE__;long unsigned int;__SIZE_FMTo__;\"lo\";__SIZE_FMTu__;\"lu\";__SIZE_FMTx__;\"lx\";__SIZE_FMTX__;\"lX\";__SIZE_WIDTH__;64;__WCHAR_TYPE__;int;__WCHAR_WIDTH__;32;__WINT_TYPE__;unsigned int;__WINT_WIDTH__;32;__SIG_ATOMIC_WIDTH__;32;__SIG_ATOMIC_MAX__;2147483647;__CHAR16_TYPE__;unsigned short;__CHAR32_TYPE__;unsigned int;__UINTMAX_WIDTH__;64;__UINTPTR_TYPE__;long unsigned int;__UINTPTR_FMTo__;\"lo\";__UINTPTR_FMTu__;\"lu\";__UINTPTR_FMTx__;\"lx\";__UINTPTR_FMTX__;\"lX\";__UINTPTR_WIDTH__;64;__FLT_DENORM_MIN__;1.40129846e-45F;__FLT_HAS_DENORM__;1;__FLT_DIG__;6;__FLT_DECIMAL_DIG__;9;__FLT_EPSILON__;1.19209290e-7F;__FLT_HAS_INFINITY__;1;__FLT_HAS_QUIET_NAN__;1;__FLT_MANT_DIG__;24;__FLT_MAX_10_EXP__;38;__FLT_MAX_EXP__;128;__FLT_MAX__;3.40282347e+38F;__FLT_MIN_10_EXP__;(-37);__FLT_MIN_EXP__;(-125);__FLT_MIN__;1.17549435e-38F;__DBL_DENORM_MIN__;4.9406564584124654e-324;__DBL_HAS_DENORM__;1;__DBL_DIG__;15;__DBL_DECIMAL_DIG__;17;__DBL_EPSILON__;2.2204460492503131e-16;__DBL_HAS_INFINITY__;1;__DBL_HAS_QUIET_NAN__;1;__DBL_MANT_DIG__;53;__DBL_MAX_10_EXP__;308;__DBL_MAX_EXP__;1024;__DBL_MAX__;1.7976931348623157e+308;__DBL_MIN_10_EXP__;(-307);__DBL_MIN_EXP__;(-1021);__DBL_MIN__;2.2250738585072014e-308;__LDBL_DENORM_MIN__;3.64519953188247460253e-4951L;__LDBL_HAS_DENORM__;1;__LDBL_DIG__;18;__LDBL_DECIMAL_DIG__;21;__LDBL_EPSILON__;1.08420217248550443401e-19L;__LDBL_HAS_INFINITY__;1;__LDBL_HAS_QUIET_NAN__;1;__LDBL_MANT_DIG__;64;__LDBL_MAX_10_EXP__;4932;__LDBL_MAX_EXP__;16384;__LDBL_MAX__;1.18973149535723176502e+4932L;__LDBL_MIN_10_EXP__;(-4931);__LDBL_MIN_EXP__;(-16381);__LDBL_MIN__;3.36210314311209350626e-4932L;__POINTER_WIDTH__;64;__BIGGEST_ALIGNMENT__;16;__WINT_UNSIGNED__;1;__INT8_TYPE__;signed char;__INT8_FMTd__;\"hhd\";__INT8_FMTi__;\"hhi\";__INT8_C_SUFFIX__; ;__INT16_TYPE__;short;__INT16_FMTd__;\"hd\";__INT16_FMTi__;\"hi\";__INT16_C_SUFFIX__; ;__INT32_TYPE__;int;__INT32_FMTd__;\"d\";__INT32_FMTi__;\"i\";__INT32_C_SUFFIX__; ;__INT64_TYPE__;long int;__INT64_FMTd__;\"ld\";__INT64_FMTi__;\"li\";__INT64_C_SUFFIX__;L;__UINT8_TYPE__;unsigned char;__UINT8_FMTo__;\"hho\";__UINT8_FMTu__;\"hhu\";__UINT8_FMTx__;\"hhx\";__UINT8_FMTX__;\"hhX\";__UINT8_C_SUFFIX__; ;__UINT8_MAX__;255;__INT8_MAX__;127;__UINT16_TYPE__;unsigned short;__UINT16_FMTo__;\"ho\";__UINT16_FMTu__;\"hu\";__UINT16_FMTx__;\"hx\";__UINT16_FMTX__;\"hX\";__UINT16_C_SUFFIX__; ;__UINT16_MAX__;65535;__INT16_MAX__;32767;__UINT32_TYPE__;unsigned int;__UINT32_FMTo__;\"o\";__UINT32_FMTu__;\"u\";__UINT32_FMTx__;\"x\";__UINT32_FMTX__;\"X\";__UINT32_C_SUFFIX__;U;__UINT32_MAX__;4294967295U;__INT32_MAX__;2147483647;__UINT64_TYPE__;long unsigned int;__UINT64_FMTo__;\"lo\";__UINT64_FMTu__;\"lu\";__UINT64_FMTx__;\"lx\";__UINT64_FMTX__;\"lX\";__UINT64_C_SUFFIX__;UL;__UINT64_MAX__;18446744073709551615UL;__INT64_MAX__;9223372036854775807L;__INT_LEAST8_TYPE__;signed char;__INT_LEAST8_MAX__;127;__INT_LEAST8_FMTd__;\"hhd\";__INT_LEAST8_FMTi__;\"hhi\";__UINT_LEAST8_TYPE__;unsigned char;__UINT_LEAST8_MAX__;255;__UINT_LEAST8_FMTo__;\"hho\";__UINT_LEAST8_FMTu__;\"hhu\";__UINT_LEAST8_FMTx__;\"hhx\";__UINT_LEAST8_FMTX__;\"hhX\";__INT_LEAST16_TYPE__;short;__INT_LEAST16_MAX__;32767;__INT_LEAST16_FMTd__;\"hd\";__INT_LEAST16_FMTi__;\"hi\";__UINT_LEAST16_TYPE__;unsigned short;__UINT_LEAST16_MAX__;65535;__UINT_LEAST16_FMTo__;\"ho\";__UINT_LEAST16_FMTu__;\"hu\";__UINT_LEAST16_FMTx__;\"hx\";__UINT_LEAST16_FMTX__;\"hX\";__INT_LEAST32_TYPE__;int;__INT_LEAST32_MAX__;2147483647;__INT_LEAST32_FMTd__;\"d\";__INT_LEAST32_FMTi__;\"i\";__UINT_LEAST32_TYPE__;unsigned int;__UINT_LEAST32_MAX__;4294967295U;__UINT_LEAST32_FMTo__;\"o\";__UINT_LEAST32_FMTu__;\"u\";__UINT_LEAST32_FMTx__;\"x\";__UINT_LEAST32_FMTX__;\"X\";__INT_LEAST64_TYPE__;long int;__INT_LEAST64_MAX__;9223372036854775807L;__INT_LEAST64_FMTd__;\"ld\";__INT_LEAST64_FMTi__;\"li\";__UINT_LEAST64_TYPE__;long unsigned int;__UINT_LEAST64_MAX__;18446744073709551615UL;__UINT_LEAST64_FMTo__;\"lo\";__UINT_LEAST64_FMTu__;\"lu\";__UINT_LEAST64_FMTx__;\"lx\";__UINT_LEAST64_FMTX__;\"lX\";__INT_FAST8_TYPE__;signed char;__INT_FAST8_MAX__;127;__INT_FAST8_FMTd__;\"hhd\";__INT_FAST8_FMTi__;\"hhi\";__UINT_FAST8_TYPE__;unsigned char;__UINT_FAST8_MAX__;255;__UINT_FAST8_FMTo__;\"hho\";__UINT_FAST8_FMTu__;\"hhu\";__UINT_FAST8_FMTx__;\"hhx\";__UINT_FAST8_FMTX__;\"hhX\";__INT_FAST16_TYPE__;short;__INT_FAST16_MAX__;32767;__INT_FAST16_FMTd__;\"hd\";__INT_FAST16_FMTi__;\"hi\";__UINT_FAST16_TYPE__;unsigned short;__UINT_FAST16_MAX__;65535;__UINT_FAST16_FMTo__;\"ho\";__UINT_FAST16_FMTu__;\"hu\";__UINT_FAST16_FMTx__;\"hx\";__UINT_FAST16_FMTX__;\"hX\";__INT_FAST32_TYPE__;int;__INT_FAST32_MAX__;2147483647;__INT_FAST32_FMTd__;\"d\";__INT_FAST32_FMTi__;\"i\";__UINT_FAST32_TYPE__;unsigned int;__UINT_FAST32_MAX__;4294967295U;__UINT_FAST32_FMTo__;\"o\";__UINT_FAST32_FMTu__;\"u\";__UINT_FAST32_FMTx__;\"x\";__UINT_FAST32_FMTX__;\"X\";__INT_FAST64_TYPE__;long int;__INT_FAST64_MAX__;9223372036854775807L;__INT_FAST64_FMTd__;\"ld\";__INT_FAST64_FMTi__;\"li\";__UINT_FAST64_TYPE__;long unsigned int;__UINT_FAST64_MAX__;18446744073709551615UL;__UINT_FAST64_FMTo__;\"lo\";__UINT_FAST64_FMTu__;\"lu\";__UINT_FAST64_FMTx__;\"lx\";__UINT_FAST64_FMTX__;\"lX\";__USER_LABEL_PREFIX__; ;__FINITE_MATH_ONLY__;0;__GNUC_GNU_INLINE__;1;__GCC_ATOMIC_TEST_AND_SET_TRUEVAL;1;__CLANG_ATOMIC_BOOL_LOCK_FREE;2;__CLANG_ATOMIC_CHAR_LOCK_FREE;2;__CLANG_ATOMIC_CHAR16_T_LOCK_FREE;2;__CLANG_ATOMIC_CHAR32_T_LOCK_FREE;2;__CLANG_ATOMIC_WCHAR_T_LOCK_FREE;2;__CLANG_ATOMIC_SHORT_LOCK_FREE;2;__CLANG_ATOMIC_INT_LOCK_FREE;2;__CLANG_ATOMIC_LONG_LOCK_FREE;2;__CLANG_ATOMIC_LLONG_LOCK_FREE;2;__CLANG_ATOMIC_POINTER_LOCK_FREE;2;__GCC_ATOMIC_BOOL_LOCK_FREE;2;__GCC_ATOMIC_CHAR_LOCK_FREE;2;__GCC_ATOMIC_CHAR16_T_LOCK_FREE;2;__GCC_ATOMIC_CHAR32_T_LOCK_FREE;2;__GCC_ATOMIC_WCHAR_T_LOCK_FREE;2;__GCC_ATOMIC_SHORT_LOCK_FREE;2;__GCC_ATOMIC_INT_LOCK_FREE;2;__GCC_ATOMIC_LONG_LOCK_FREE;2;__GCC_ATOMIC_LLONG_LOCK_FREE;2;__GCC_ATOMIC_POINTER_LOCK_FREE;2;__NO_INLINE__;1;__FLT_EVAL_METHOD__;0;__FLT_RADIX__;2;__DECIMAL_DIG__;__LDBL_DECIMAL_DIG__;__GLIBCXX_TYPE_INT_N_0;__int128;__GLIBCXX_BITSIZE_INT_N_0;128;__GCC_ASM_FLAG_OUTPUTS__;1;__code_model_small__;1;__amd64__;1;__amd64;1;__x86_64;1;__x86_64__;1;__SEG_GS;1;__SEG_FS;1;__seg_gs;__attribute__((address_space(256)));__seg_fs;__attribute__((address_space(257)));__k8;1;__k8__;1;__tune_k8__;1;__REGISTER_PREFIX__; ;__NO_MATH_INLINES;1;__FXSR__;1;__SSE2__;1;__SSE2_MATH__;1;__SSE__;1;__SSE_MATH__;1;__MMX__;1;__GCC_HAVE_SYNC_COMPARE_AND_SWAP_1;1;__GCC_HAVE_SYNC_COMPARE_AND_SWAP_2;1;__GCC_HAVE_SYNC_COMPARE_AND_SWAP_4;1;__GCC_HAVE_SYNC_COMPARE_AND_SWAP_8;1;__SIZEOF_FLOAT128__;16;unix;1;__unix;1;__unix__;1;linux;1;__linux;1;__linux__;1;__ELF__;1;__gnu_linux__;1;_GNU_SOURCE;1;__FLOAT128__;1;__STDC__;1;__STDC_HOSTED__;1;__cplusplus;201402L;__STDCPP_DEFAULT_NEW_ALIGNMENT__;16UL;__STDCPP_THREADS__;1;__STDC_UTF_16__;1;__STDC_UTF_32__;1;__GCC_HAVE_DWARF2_CFI_ASM;1" - }, - { - "name" : "CMAKE_EXTRA_GENERATOR_CXX_SYSTEM_INCLUDE_DIRS", - "properties" : - [ - { - "name" : "HELPSTRING", - "value" : "CXX compiler system include directories" - } - ], - "type" : "INTERNAL", - "value" : "/usr/bin/../lib/gcc/x86_64-linux-gnu/8/../../../../include/c++/8;/usr/bin/../lib/gcc/x86_64-linux-gnu/8/../../../../include/x86_64-linux-gnu/c++/8;/usr/bin/../lib/gcc/x86_64-linux-gnu/8/../../../../include/c++/8/backward;/usr/lib/llvm-13/lib/clang/13.0.1/include;/usr/local/include;/usr/include/x86_64-linux-gnu;/usr/include" - }, - { - "name" : "CMAKE_EXTRA_GENERATOR_C_SYSTEM_DEFINED_MACROS", - "properties" : - [ - { - "name" : "HELPSTRING", - "value" : "C compiler system defined macros" - } - ], - "type" : "INTERNAL", - "value" : "__llvm__;1;__clang__;1;__clang_major__;13;__clang_minor__;0;__clang_patchlevel__;1;__clang_version__;\"13.0.1 \";__GNUC__;4;__GNUC_MINOR__;2;__GNUC_PATCHLEVEL__;1;__GXX_ABI_VERSION;1002;__ATOMIC_RELAXED;0;__ATOMIC_CONSUME;1;__ATOMIC_ACQUIRE;2;__ATOMIC_RELEASE;3;__ATOMIC_ACQ_REL;4;__ATOMIC_SEQ_CST;5;__OPENCL_MEMORY_SCOPE_WORK_ITEM;0;__OPENCL_MEMORY_SCOPE_WORK_GROUP;1;__OPENCL_MEMORY_SCOPE_DEVICE;2;__OPENCL_MEMORY_SCOPE_ALL_SVM_DEVICES;3;__OPENCL_MEMORY_SCOPE_SUB_GROUP;4;__PRAGMA_REDEFINE_EXTNAME;1;__VERSION__;\"Deepin Clang 13.0.1\";__OBJC_BOOL_IS_BOOL;0;__CONSTANT_CFSTRINGS__;1;__clang_literal_encoding__;\"UTF-8\";__clang_wide_literal_encoding__;\"UTF-32\";__ORDER_LITTLE_ENDIAN__;1234;__ORDER_BIG_ENDIAN__;4321;__ORDER_PDP_ENDIAN__;3412;__BYTE_ORDER__;__ORDER_LITTLE_ENDIAN__;__LITTLE_ENDIAN__;1;_LP64;1;__LP64__;1;__CHAR_BIT__;8;__SCHAR_MAX__;127;__SHRT_MAX__;32767;__INT_MAX__;2147483647;__LONG_MAX__;9223372036854775807L;__LONG_LONG_MAX__;9223372036854775807LL;__WCHAR_MAX__;2147483647;__WINT_MAX__;4294967295U;__INTMAX_MAX__;9223372036854775807L;__SIZE_MAX__;18446744073709551615UL;__UINTMAX_MAX__;18446744073709551615UL;__PTRDIFF_MAX__;9223372036854775807L;__INTPTR_MAX__;9223372036854775807L;__UINTPTR_MAX__;18446744073709551615UL;__SIZEOF_DOUBLE__;8;__SIZEOF_FLOAT__;4;__SIZEOF_INT__;4;__SIZEOF_LONG__;8;__SIZEOF_LONG_DOUBLE__;16;__SIZEOF_LONG_LONG__;8;__SIZEOF_POINTER__;8;__SIZEOF_SHORT__;2;__SIZEOF_PTRDIFF_T__;8;__SIZEOF_SIZE_T__;8;__SIZEOF_WCHAR_T__;4;__SIZEOF_WINT_T__;4;__SIZEOF_INT128__;16;__INTMAX_TYPE__;long int;__INTMAX_FMTd__;\"ld\";__INTMAX_FMTi__;\"li\";__INTMAX_C_SUFFIX__;L;__UINTMAX_TYPE__;long unsigned int;__UINTMAX_FMTo__;\"lo\";__UINTMAX_FMTu__;\"lu\";__UINTMAX_FMTx__;\"lx\";__UINTMAX_FMTX__;\"lX\";__UINTMAX_C_SUFFIX__;UL;__INTMAX_WIDTH__;64;__PTRDIFF_TYPE__;long int;__PTRDIFF_FMTd__;\"ld\";__PTRDIFF_FMTi__;\"li\";__PTRDIFF_WIDTH__;64;__INTPTR_TYPE__;long int;__INTPTR_FMTd__;\"ld\";__INTPTR_FMTi__;\"li\";__INTPTR_WIDTH__;64;__SIZE_TYPE__;long unsigned int;__SIZE_FMTo__;\"lo\";__SIZE_FMTu__;\"lu\";__SIZE_FMTx__;\"lx\";__SIZE_FMTX__;\"lX\";__SIZE_WIDTH__;64;__WCHAR_TYPE__;int;__WCHAR_WIDTH__;32;__WINT_TYPE__;unsigned int;__WINT_WIDTH__;32;__SIG_ATOMIC_WIDTH__;32;__SIG_ATOMIC_MAX__;2147483647;__CHAR16_TYPE__;unsigned short;__CHAR32_TYPE__;unsigned int;__UINTMAX_WIDTH__;64;__UINTPTR_TYPE__;long unsigned int;__UINTPTR_FMTo__;\"lo\";__UINTPTR_FMTu__;\"lu\";__UINTPTR_FMTx__;\"lx\";__UINTPTR_FMTX__;\"lX\";__UINTPTR_WIDTH__;64;__FLT_DENORM_MIN__;1.40129846e-45F;__FLT_HAS_DENORM__;1;__FLT_DIG__;6;__FLT_DECIMAL_DIG__;9;__FLT_EPSILON__;1.19209290e-7F;__FLT_HAS_INFINITY__;1;__FLT_HAS_QUIET_NAN__;1;__FLT_MANT_DIG__;24;__FLT_MAX_10_EXP__;38;__FLT_MAX_EXP__;128;__FLT_MAX__;3.40282347e+38F;__FLT_MIN_10_EXP__;(-37);__FLT_MIN_EXP__;(-125);__FLT_MIN__;1.17549435e-38F;__DBL_DENORM_MIN__;4.9406564584124654e-324;__DBL_HAS_DENORM__;1;__DBL_DIG__;15;__DBL_DECIMAL_DIG__;17;__DBL_EPSILON__;2.2204460492503131e-16;__DBL_HAS_INFINITY__;1;__DBL_HAS_QUIET_NAN__;1;__DBL_MANT_DIG__;53;__DBL_MAX_10_EXP__;308;__DBL_MAX_EXP__;1024;__DBL_MAX__;1.7976931348623157e+308;__DBL_MIN_10_EXP__;(-307);__DBL_MIN_EXP__;(-1021);__DBL_MIN__;2.2250738585072014e-308;__LDBL_DENORM_MIN__;3.64519953188247460253e-4951L;__LDBL_HAS_DENORM__;1;__LDBL_DIG__;18;__LDBL_DECIMAL_DIG__;21;__LDBL_EPSILON__;1.08420217248550443401e-19L;__LDBL_HAS_INFINITY__;1;__LDBL_HAS_QUIET_NAN__;1;__LDBL_MANT_DIG__;64;__LDBL_MAX_10_EXP__;4932;__LDBL_MAX_EXP__;16384;__LDBL_MAX__;1.18973149535723176502e+4932L;__LDBL_MIN_10_EXP__;(-4931);__LDBL_MIN_EXP__;(-16381);__LDBL_MIN__;3.36210314311209350626e-4932L;__POINTER_WIDTH__;64;__BIGGEST_ALIGNMENT__;16;__WINT_UNSIGNED__;1;__INT8_TYPE__;signed char;__INT8_FMTd__;\"hhd\";__INT8_FMTi__;\"hhi\";__INT8_C_SUFFIX__; ;__INT16_TYPE__;short;__INT16_FMTd__;\"hd\";__INT16_FMTi__;\"hi\";__INT16_C_SUFFIX__; ;__INT32_TYPE__;int;__INT32_FMTd__;\"d\";__INT32_FMTi__;\"i\";__INT32_C_SUFFIX__; ;__INT64_TYPE__;long int;__INT64_FMTd__;\"ld\";__INT64_FMTi__;\"li\";__INT64_C_SUFFIX__;L;__UINT8_TYPE__;unsigned char;__UINT8_FMTo__;\"hho\";__UINT8_FMTu__;\"hhu\";__UINT8_FMTx__;\"hhx\";__UINT8_FMTX__;\"hhX\";__UINT8_C_SUFFIX__; ;__UINT8_MAX__;255;__INT8_MAX__;127;__UINT16_TYPE__;unsigned short;__UINT16_FMTo__;\"ho\";__UINT16_FMTu__;\"hu\";__UINT16_FMTx__;\"hx\";__UINT16_FMTX__;\"hX\";__UINT16_C_SUFFIX__; ;__UINT16_MAX__;65535;__INT16_MAX__;32767;__UINT32_TYPE__;unsigned int;__UINT32_FMTo__;\"o\";__UINT32_FMTu__;\"u\";__UINT32_FMTx__;\"x\";__UINT32_FMTX__;\"X\";__UINT32_C_SUFFIX__;U;__UINT32_MAX__;4294967295U;__INT32_MAX__;2147483647;__UINT64_TYPE__;long unsigned int;__UINT64_FMTo__;\"lo\";__UINT64_FMTu__;\"lu\";__UINT64_FMTx__;\"lx\";__UINT64_FMTX__;\"lX\";__UINT64_C_SUFFIX__;UL;__UINT64_MAX__;18446744073709551615UL;__INT64_MAX__;9223372036854775807L;__INT_LEAST8_TYPE__;signed char;__INT_LEAST8_MAX__;127;__INT_LEAST8_FMTd__;\"hhd\";__INT_LEAST8_FMTi__;\"hhi\";__UINT_LEAST8_TYPE__;unsigned char;__UINT_LEAST8_MAX__;255;__UINT_LEAST8_FMTo__;\"hho\";__UINT_LEAST8_FMTu__;\"hhu\";__UINT_LEAST8_FMTx__;\"hhx\";__UINT_LEAST8_FMTX__;\"hhX\";__INT_LEAST16_TYPE__;short;__INT_LEAST16_MAX__;32767;__INT_LEAST16_FMTd__;\"hd\";__INT_LEAST16_FMTi__;\"hi\";__UINT_LEAST16_TYPE__;unsigned short;__UINT_LEAST16_MAX__;65535;__UINT_LEAST16_FMTo__;\"ho\";__UINT_LEAST16_FMTu__;\"hu\";__UINT_LEAST16_FMTx__;\"hx\";__UINT_LEAST16_FMTX__;\"hX\";__INT_LEAST32_TYPE__;int;__INT_LEAST32_MAX__;2147483647;__INT_LEAST32_FMTd__;\"d\";__INT_LEAST32_FMTi__;\"i\";__UINT_LEAST32_TYPE__;unsigned int;__UINT_LEAST32_MAX__;4294967295U;__UINT_LEAST32_FMTo__;\"o\";__UINT_LEAST32_FMTu__;\"u\";__UINT_LEAST32_FMTx__;\"x\";__UINT_LEAST32_FMTX__;\"X\";__INT_LEAST64_TYPE__;long int;__INT_LEAST64_MAX__;9223372036854775807L;__INT_LEAST64_FMTd__;\"ld\";__INT_LEAST64_FMTi__;\"li\";__UINT_LEAST64_TYPE__;long unsigned int;__UINT_LEAST64_MAX__;18446744073709551615UL;__UINT_LEAST64_FMTo__;\"lo\";__UINT_LEAST64_FMTu__;\"lu\";__UINT_LEAST64_FMTx__;\"lx\";__UINT_LEAST64_FMTX__;\"lX\";__INT_FAST8_TYPE__;signed char;__INT_FAST8_MAX__;127;__INT_FAST8_FMTd__;\"hhd\";__INT_FAST8_FMTi__;\"hhi\";__UINT_FAST8_TYPE__;unsigned char;__UINT_FAST8_MAX__;255;__UINT_FAST8_FMTo__;\"hho\";__UINT_FAST8_FMTu__;\"hhu\";__UINT_FAST8_FMTx__;\"hhx\";__UINT_FAST8_FMTX__;\"hhX\";__INT_FAST16_TYPE__;short;__INT_FAST16_MAX__;32767;__INT_FAST16_FMTd__;\"hd\";__INT_FAST16_FMTi__;\"hi\";__UINT_FAST16_TYPE__;unsigned short;__UINT_FAST16_MAX__;65535;__UINT_FAST16_FMTo__;\"ho\";__UINT_FAST16_FMTu__;\"hu\";__UINT_FAST16_FMTx__;\"hx\";__UINT_FAST16_FMTX__;\"hX\";__INT_FAST32_TYPE__;int;__INT_FAST32_MAX__;2147483647;__INT_FAST32_FMTd__;\"d\";__INT_FAST32_FMTi__;\"i\";__UINT_FAST32_TYPE__;unsigned int;__UINT_FAST32_MAX__;4294967295U;__UINT_FAST32_FMTo__;\"o\";__UINT_FAST32_FMTu__;\"u\";__UINT_FAST32_FMTx__;\"x\";__UINT_FAST32_FMTX__;\"X\";__INT_FAST64_TYPE__;long int;__INT_FAST64_MAX__;9223372036854775807L;__INT_FAST64_FMTd__;\"ld\";__INT_FAST64_FMTi__;\"li\";__UINT_FAST64_TYPE__;long unsigned int;__UINT_FAST64_MAX__;18446744073709551615UL;__UINT_FAST64_FMTo__;\"lo\";__UINT_FAST64_FMTu__;\"lu\";__UINT_FAST64_FMTx__;\"lx\";__UINT_FAST64_FMTX__;\"lX\";__USER_LABEL_PREFIX__; ;__FINITE_MATH_ONLY__;0;__GNUC_STDC_INLINE__;1;__GCC_ATOMIC_TEST_AND_SET_TRUEVAL;1;__CLANG_ATOMIC_BOOL_LOCK_FREE;2;__CLANG_ATOMIC_CHAR_LOCK_FREE;2;__CLANG_ATOMIC_CHAR16_T_LOCK_FREE;2;__CLANG_ATOMIC_CHAR32_T_LOCK_FREE;2;__CLANG_ATOMIC_WCHAR_T_LOCK_FREE;2;__CLANG_ATOMIC_SHORT_LOCK_FREE;2;__CLANG_ATOMIC_INT_LOCK_FREE;2;__CLANG_ATOMIC_LONG_LOCK_FREE;2;__CLANG_ATOMIC_LLONG_LOCK_FREE;2;__CLANG_ATOMIC_POINTER_LOCK_FREE;2;__GCC_ATOMIC_BOOL_LOCK_FREE;2;__GCC_ATOMIC_CHAR_LOCK_FREE;2;__GCC_ATOMIC_CHAR16_T_LOCK_FREE;2;__GCC_ATOMIC_CHAR32_T_LOCK_FREE;2;__GCC_ATOMIC_WCHAR_T_LOCK_FREE;2;__GCC_ATOMIC_SHORT_LOCK_FREE;2;__GCC_ATOMIC_INT_LOCK_FREE;2;__GCC_ATOMIC_LONG_LOCK_FREE;2;__GCC_ATOMIC_LLONG_LOCK_FREE;2;__GCC_ATOMIC_POINTER_LOCK_FREE;2;__NO_INLINE__;1;__FLT_EVAL_METHOD__;0;__FLT_RADIX__;2;__DECIMAL_DIG__;__LDBL_DECIMAL_DIG__;__GCC_ASM_FLAG_OUTPUTS__;1;__code_model_small__;1;__amd64__;1;__amd64;1;__x86_64;1;__x86_64__;1;__SEG_GS;1;__SEG_FS;1;__seg_gs;__attribute__((address_space(256)));__seg_fs;__attribute__((address_space(257)));__k8;1;__k8__;1;__tune_k8__;1;__REGISTER_PREFIX__; ;__NO_MATH_INLINES;1;__FXSR__;1;__SSE2__;1;__SSE2_MATH__;1;__SSE__;1;__SSE_MATH__;1;__MMX__;1;__GCC_HAVE_SYNC_COMPARE_AND_SWAP_1;1;__GCC_HAVE_SYNC_COMPARE_AND_SWAP_2;1;__GCC_HAVE_SYNC_COMPARE_AND_SWAP_4;1;__GCC_HAVE_SYNC_COMPARE_AND_SWAP_8;1;__SIZEOF_FLOAT128__;16;unix;1;__unix;1;__unix__;1;linux;1;__linux;1;__linux__;1;__ELF__;1;__gnu_linux__;1;__FLOAT128__;1;__STDC__;1;__STDC_HOSTED__;1;__STDC_VERSION__;201710L;__STDC_UTF_16__;1;__STDC_UTF_32__;1;__GCC_HAVE_DWARF2_CFI_ASM;1" - }, - { - "name" : "CMAKE_EXTRA_GENERATOR_C_SYSTEM_INCLUDE_DIRS", - "properties" : - [ - { - "name" : "HELPSTRING", - "value" : "C compiler system include directories" - } - ], - "type" : "INTERNAL", - "value" : "/usr/lib/llvm-13/lib/clang/13.0.1/include;/usr/local/include;/usr/include/x86_64-linux-gnu;/usr/include" - }, - { - "name" : "CMAKE_GENERATOR", - "properties" : - [ - { - "name" : "HELPSTRING", - "value" : "Name of generator." - } - ], - "type" : "INTERNAL", - "value" : "Unix Makefiles" - }, - { - "name" : "CMAKE_GENERATOR_INSTANCE", - "properties" : - [ - { - "name" : "HELPSTRING", - "value" : "Generator instance identifier." - } - ], - "type" : "INTERNAL", - "value" : "" - }, - { - "name" : "CMAKE_GENERATOR_PLATFORM", - "properties" : - [ - { - "name" : "HELPSTRING", - "value" : "Name of generator platform." - } - ], - "type" : "INTERNAL", - "value" : "" - }, - { - "name" : "CMAKE_GENERATOR_TOOLSET", - "properties" : - [ - { - "name" : "HELPSTRING", - "value" : "Name of generator toolset." - } - ], - "type" : "INTERNAL", - "value" : "" - }, - { - "name" : "CMAKE_HOME_DIRECTORY", - "properties" : - [ - { - "name" : "HELPSTRING", - "value" : "Source directory with the top level CMakeLists.txt file for this project" - } - ], - "type" : "INTERNAL", - "value" : "/home/lucas/CLionProjects/tmp-policy" - }, - { - "name" : "CMAKE_INSTALL_PREFIX", - "properties" : - [ - { - "name" : "HELPSTRING", - "value" : "Install path prefix, prepended onto install directories." - } - ], - "type" : "PATH", - "value" : "/usr/local" - }, - { - "name" : "CMAKE_INSTALL_SO_NO_EXE", - "properties" : - [ - { - "name" : "HELPSTRING", - "value" : "Install .so files without execute permission." - } - ], - "type" : "INTERNAL", - "value" : "1" - }, - { - "name" : "CMAKE_LINKER", - "properties" : - [ - { - "name" : "ADVANCED", - "value" : "1" - }, - { - "name" : "HELPSTRING", - "value" : "Path to a program." - } - ], - "type" : "FILEPATH", - "value" : "/usr/bin/ld" - }, - { - "name" : "CMAKE_MAKE_PROGRAM", - "properties" : - [ - { - "name" : "ADVANCED", - "value" : "1" - }, - { - "name" : "HELPSTRING", - "value" : "Path to a program." - } - ], - "type" : "FILEPATH", - "value" : "/usr/bin/make" - }, - { - "name" : "CMAKE_MODULE_LINKER_FLAGS", - "properties" : - [ - { - "name" : "ADVANCED", - "value" : "1" - }, - { - "name" : "HELPSTRING", - "value" : "Flags used by the linker during the creation of modules during all build types." - } - ], - "type" : "STRING", - "value" : "" - }, - { - "name" : "CMAKE_MODULE_LINKER_FLAGS_DEBUG", - "properties" : - [ - { - "name" : "ADVANCED", - "value" : "1" - }, - { - "name" : "HELPSTRING", - "value" : "Flags used by the linker during the creation of modules during DEBUG builds." - } - ], - "type" : "STRING", - "value" : "" - }, - { - "name" : "CMAKE_MODULE_LINKER_FLAGS_MINSIZEREL", - "properties" : - [ - { - "name" : "ADVANCED", - "value" : "1" - }, - { - "name" : "HELPSTRING", - "value" : "Flags used by the linker during the creation of modules during MINSIZEREL builds." - } - ], - "type" : "STRING", - "value" : "" - }, - { - "name" : "CMAKE_MODULE_LINKER_FLAGS_RELEASE", - "properties" : - [ - { - "name" : "ADVANCED", - "value" : "1" - }, - { - "name" : "HELPSTRING", - "value" : "Flags used by the linker during the creation of modules during RELEASE builds." - } - ], - "type" : "STRING", - "value" : "" - }, - { - "name" : "CMAKE_MODULE_LINKER_FLAGS_RELWITHDEBINFO", - "properties" : - [ - { - "name" : "ADVANCED", - "value" : "1" - }, - { - "name" : "HELPSTRING", - "value" : "Flags used by the linker during the creation of modules during RELWITHDEBINFO builds." - } - ], - "type" : "STRING", - "value" : "" - }, - { - "name" : "CMAKE_NM", - "properties" : - [ - { - "name" : "ADVANCED", - "value" : "1" - }, - { - "name" : "HELPSTRING", - "value" : "Path to a program." - } - ], - "type" : "FILEPATH", - "value" : "/usr/bin/nm" - }, - { - "name" : "CMAKE_NUMBER_OF_MAKEFILES", - "properties" : - [ - { - "name" : "HELPSTRING", - "value" : "number of local generators" - } - ], - "type" : "INTERNAL", - "value" : "1" - }, - { - "name" : "CMAKE_OBJCOPY", - "properties" : - [ - { - "name" : "ADVANCED", - "value" : "1" - }, - { - "name" : "HELPSTRING", - "value" : "Path to a program." - } - ], - "type" : "FILEPATH", - "value" : "/usr/bin/objcopy" - }, - { - "name" : "CMAKE_OBJDUMP", - "properties" : - [ - { - "name" : "ADVANCED", - "value" : "1" - }, - { - "name" : "HELPSTRING", - "value" : "Path to a program." - } - ], - "type" : "FILEPATH", - "value" : "/usr/bin/objdump" - }, - { - "name" : "CMAKE_PLATFORM_INFO_INITIALIZED", - "properties" : - [ - { - "name" : "HELPSTRING", - "value" : "Platform information initialized" - } - ], - "type" : "INTERNAL", - "value" : "1" - }, - { - "name" : "CMAKE_PROJECT_DESCRIPTION", - "properties" : - [ - { - "name" : "HELPSTRING", - "value" : "Value Computed by CMake" - } - ], - "type" : "STATIC", - "value" : "" - }, - { - "name" : "CMAKE_PROJECT_HOMEPAGE_URL", - "properties" : - [ - { - "name" : "HELPSTRING", - "value" : "Value Computed by CMake" - } - ], - "type" : "STATIC", - "value" : "" - }, - { - "name" : "CMAKE_PROJECT_NAME", - "properties" : - [ - { - "name" : "HELPSTRING", - "value" : "Value Computed by CMake" - } - ], - "type" : "STATIC", - "value" : "tmp_policy" - }, - { - "name" : "CMAKE_RANLIB", - "properties" : - [ - { - "name" : "ADVANCED", - "value" : "1" - }, - { - "name" : "HELPSTRING", - "value" : "Path to a program." - } - ], - "type" : "FILEPATH", - "value" : "/usr/bin/ranlib" - }, - { - "name" : "CMAKE_READELF", - "properties" : - [ - { - "name" : "ADVANCED", - "value" : "1" - }, - { - "name" : "HELPSTRING", - "value" : "Path to a program." - } - ], - "type" : "FILEPATH", - "value" : "/usr/bin/readelf" - }, - { - "name" : "CMAKE_ROOT", - "properties" : - [ - { - "name" : "HELPSTRING", - "value" : "Path to CMake installation." - } - ], - "type" : "INTERNAL", - "value" : "/usr/share/cmake-3.22" - }, - { - "name" : "CMAKE_SHARED_LINKER_FLAGS", - "properties" : - [ - { - "name" : "ADVANCED", - "value" : "1" - }, - { - "name" : "HELPSTRING", - "value" : "Flags used by the linker during the creation of shared libraries during all build types." - } - ], - "type" : "STRING", - "value" : "" - }, - { - "name" : "CMAKE_SHARED_LINKER_FLAGS_DEBUG", - "properties" : - [ - { - "name" : "ADVANCED", - "value" : "1" - }, - { - "name" : "HELPSTRING", - "value" : "Flags used by the linker during the creation of shared libraries during DEBUG builds." - } - ], - "type" : "STRING", - "value" : "" - }, - { - "name" : "CMAKE_SHARED_LINKER_FLAGS_MINSIZEREL", - "properties" : - [ - { - "name" : "ADVANCED", - "value" : "1" - }, - { - "name" : "HELPSTRING", - "value" : "Flags used by the linker during the creation of shared libraries during MINSIZEREL builds." - } - ], - "type" : "STRING", - "value" : "" - }, - { - "name" : "CMAKE_SHARED_LINKER_FLAGS_RELEASE", - "properties" : - [ - { - "name" : "ADVANCED", - "value" : "1" - }, - { - "name" : "HELPSTRING", - "value" : "Flags used by the linker during the creation of shared libraries during RELEASE builds." - } - ], - "type" : "STRING", - "value" : "" - }, - { - "name" : "CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO", - "properties" : - [ - { - "name" : "ADVANCED", - "value" : "1" - }, - { - "name" : "HELPSTRING", - "value" : "Flags used by the linker during the creation of shared libraries during RELWITHDEBINFO builds." - } - ], - "type" : "STRING", - "value" : "" - }, - { - "name" : "CMAKE_SKIP_INSTALL_RPATH", - "properties" : - [ - { - "name" : "ADVANCED", - "value" : "1" - }, - { - "name" : "HELPSTRING", - "value" : "If set, runtime paths are not added when installing shared libraries, but are added when building." - } - ], - "type" : "BOOL", - "value" : "NO" - }, - { - "name" : "CMAKE_SKIP_RPATH", - "properties" : - [ - { - "name" : "ADVANCED", - "value" : "1" - }, - { - "name" : "HELPSTRING", - "value" : "If set, runtime paths are not added when using shared libraries." - } - ], - "type" : "BOOL", - "value" : "NO" - }, - { - "name" : "CMAKE_STATIC_LINKER_FLAGS", - "properties" : - [ - { - "name" : "ADVANCED", - "value" : "1" - }, - { - "name" : "HELPSTRING", - "value" : "Flags used by the linker during the creation of static libraries during all build types." - } - ], - "type" : "STRING", - "value" : "" - }, - { - "name" : "CMAKE_STATIC_LINKER_FLAGS_DEBUG", - "properties" : - [ - { - "name" : "ADVANCED", - "value" : "1" - }, - { - "name" : "HELPSTRING", - "value" : "Flags used by the linker during the creation of static libraries during DEBUG builds." - } - ], - "type" : "STRING", - "value" : "" - }, - { - "name" : "CMAKE_STATIC_LINKER_FLAGS_MINSIZEREL", - "properties" : - [ - { - "name" : "ADVANCED", - "value" : "1" - }, - { - "name" : "HELPSTRING", - "value" : "Flags used by the linker during the creation of static libraries during MINSIZEREL builds." - } - ], - "type" : "STRING", - "value" : "" - }, - { - "name" : "CMAKE_STATIC_LINKER_FLAGS_RELEASE", - "properties" : - [ - { - "name" : "ADVANCED", - "value" : "1" - }, - { - "name" : "HELPSTRING", - "value" : "Flags used by the linker during the creation of static libraries during RELEASE builds." - } - ], - "type" : "STRING", - "value" : "" - }, - { - "name" : "CMAKE_STATIC_LINKER_FLAGS_RELWITHDEBINFO", - "properties" : - [ - { - "name" : "ADVANCED", - "value" : "1" - }, - { - "name" : "HELPSTRING", - "value" : "Flags used by the linker during the creation of static libraries during RELWITHDEBINFO builds." - } - ], - "type" : "STRING", - "value" : "" - }, - { - "name" : "CMAKE_STRIP", - "properties" : - [ - { - "name" : "ADVANCED", - "value" : "1" - }, - { - "name" : "HELPSTRING", - "value" : "Path to a program." - } - ], - "type" : "FILEPATH", - "value" : "/usr/bin/strip" - }, - { - "name" : "CMAKE_UNAME", - "properties" : - [ - { - "name" : "HELPSTRING", - "value" : "uname command" - } - ], - "type" : "INTERNAL", - "value" : "/usr/bin/uname" - }, - { - "name" : "CMAKE_VERBOSE_MAKEFILE", - "properties" : - [ - { - "name" : "ADVANCED", - "value" : "1" - }, - { - "name" : "HELPSTRING", - "value" : "If this value is on, makefiles will be generated without the .SILENT directive, and all commands will be echoed to the console during the make. This is useful for debugging only. With Visual Studio IDE projects all commands are done without /nologo." - } - ], - "type" : "BOOL", - "value" : "FALSE" - }, - { - "name" : "ProcessorCount_cmd_nproc", - "properties" : - [ - { - "name" : "ADVANCED", - "value" : "1" - }, - { - "name" : "HELPSTRING", - "value" : "Path to a program." - } - ], - "type" : "FILEPATH", - "value" : "/usr/bin/nproc" - }, - { - "name" : "ProcessorCount_cmd_sysctl", - "properties" : - [ - { - "name" : "ADVANCED", - "value" : "1" - }, - { - "name" : "HELPSTRING", - "value" : "Path to a program." - } - ], - "type" : "FILEPATH", - "value" : "/sbin/sysctl" - }, - { - "name" : "tmp_policy_BINARY_DIR", - "properties" : - [ - { - "name" : "HELPSTRING", - "value" : "Value Computed by CMake" - } - ], - "type" : "STATIC", - "value" : "/home/lucas/CLionProjects/tmp-policy/cmake-build-debug" - }, - { - "name" : "tmp_policy_IS_TOP_LEVEL", - "properties" : - [ - { - "name" : "HELPSTRING", - "value" : "Value Computed by CMake" - } - ], - "type" : "STATIC", - "value" : "ON" - }, - { - "name" : "tmp_policy_SOURCE_DIR", - "properties" : - [ - { - "name" : "HELPSTRING", - "value" : "Value Computed by CMake" - } - ], - "type" : "STATIC", - "value" : "/home/lucas/CLionProjects/tmp-policy" - } - ], - "kind" : "cache", - "version" : - { - "major" : 2, - "minor" : 0 - } -} diff --git a/cmake-build-debug/.cmake/api/v1/reply/cmakeFiles-v1-2d71857a96b31064ca46.json b/cmake-build-debug/.cmake/api/v1/reply/cmakeFiles-v1-2d71857a96b31064ca46.json deleted file mode 100644 index aaa061b..0000000 --- a/cmake-build-debug/.cmake/api/v1/reply/cmakeFiles-v1-2d71857a96b31064ca46.json +++ /dev/null @@ -1,759 +0,0 @@ -{ - "inputs" : - [ - { - "path" : "CMakeLists.txt" - }, - { - "isCMake" : true, - "isExternal" : true, - "path" : "/usr/share/cmake-3.22/Modules/CMakeDetermineSystem.cmake" - }, - { - "isCMake" : true, - "isExternal" : true, - "path" : "/usr/share/cmake-3.22/Modules/CMakeSystem.cmake.in" - }, - { - "isGenerated" : true, - "path" : "cmake-build-debug/CMakeFiles/3.22.1/CMakeSystem.cmake" - }, - { - "isCMake" : true, - "isExternal" : true, - "path" : "/usr/share/cmake-3.22/Modules/CMakeUnixFindMake.cmake" - }, - { - "isCMake" : true, - "isExternal" : true, - "path" : "/usr/share/cmake-3.22/Modules/CMakeSystemSpecificInitialize.cmake" - }, - { - "isCMake" : true, - "isExternal" : true, - "path" : "/usr/share/cmake-3.22/Modules/CMakeDetermineCCompiler.cmake" - }, - { - "isCMake" : true, - "isExternal" : true, - "path" : "/usr/share/cmake-3.22/Modules/CMakeDetermineCompiler.cmake" - }, - { - "isCMake" : true, - "isExternal" : true, - "path" : "/usr/share/cmake-3.22/Modules/CMakeDetermineCompilerId.cmake" - }, - { - "isCMake" : true, - "isExternal" : true, - "path" : "/usr/share/cmake-3.22/Modules/CMakeCompilerIdDetection.cmake" - }, - { - "isCMake" : true, - "isExternal" : true, - "path" : "/usr/share/cmake-3.22/Modules/Compiler/ADSP-DetermineCompiler.cmake" - }, - { - "isCMake" : true, - "isExternal" : true, - "path" : "/usr/share/cmake-3.22/Modules/Compiler/ARMCC-DetermineCompiler.cmake" - }, - { - "isCMake" : true, - "isExternal" : true, - "path" : "/usr/share/cmake-3.22/Modules/Compiler/ARMClang-DetermineCompiler.cmake" - }, - { - "isCMake" : true, - "isExternal" : true, - "path" : "/usr/share/cmake-3.22/Modules/Compiler/AppleClang-DetermineCompiler.cmake" - }, - { - "isCMake" : true, - "isExternal" : true, - "path" : "/usr/share/cmake-3.22/Modules/Compiler/Clang-DetermineCompilerInternal.cmake" - }, - { - "isCMake" : true, - "isExternal" : true, - "path" : "/usr/share/cmake-3.22/Modules/Compiler/Borland-DetermineCompiler.cmake" - }, - { - "isCMake" : true, - "isExternal" : true, - "path" : "/usr/share/cmake-3.22/Modules/Compiler/Bruce-C-DetermineCompiler.cmake" - }, - { - "isCMake" : true, - "isExternal" : true, - "path" : "/usr/share/cmake-3.22/Modules/Compiler/Clang-DetermineCompiler.cmake" - }, - { - "isCMake" : true, - "isExternal" : true, - "path" : "/usr/share/cmake-3.22/Modules/Compiler/Clang-DetermineCompilerInternal.cmake" - }, - { - "isCMake" : true, - "isExternal" : true, - "path" : "/usr/share/cmake-3.22/Modules/Compiler/Compaq-C-DetermineCompiler.cmake" - }, - { - "isCMake" : true, - "isExternal" : true, - "path" : "/usr/share/cmake-3.22/Modules/Compiler/Cray-DetermineCompiler.cmake" - }, - { - "isCMake" : true, - "isExternal" : true, - "path" : "/usr/share/cmake-3.22/Modules/Compiler/Embarcadero-DetermineCompiler.cmake" - }, - { - "isCMake" : true, - "isExternal" : true, - "path" : "/usr/share/cmake-3.22/Modules/Compiler/Fujitsu-DetermineCompiler.cmake" - }, - { - "isCMake" : true, - "isExternal" : true, - "path" : "/usr/share/cmake-3.22/Modules/Compiler/FujitsuClang-DetermineCompiler.cmake" - }, - { - "isCMake" : true, - "isExternal" : true, - "path" : "/usr/share/cmake-3.22/Modules/Compiler/GHS-DetermineCompiler.cmake" - }, - { - "isCMake" : true, - "isExternal" : true, - "path" : "/usr/share/cmake-3.22/Modules/Compiler/GNU-C-DetermineCompiler.cmake" - }, - { - "isCMake" : true, - "isExternal" : true, - "path" : "/usr/share/cmake-3.22/Modules/Compiler/HP-C-DetermineCompiler.cmake" - }, - { - "isCMake" : true, - "isExternal" : true, - "path" : "/usr/share/cmake-3.22/Modules/Compiler/IAR-DetermineCompiler.cmake" - }, - { - "isCMake" : true, - "isExternal" : true, - "path" : "/usr/share/cmake-3.22/Modules/Compiler/Intel-DetermineCompiler.cmake" - }, - { - "isCMake" : true, - "isExternal" : true, - "path" : "/usr/share/cmake-3.22/Modules/Compiler/IntelLLVM-DetermineCompiler.cmake" - }, - { - "isCMake" : true, - "isExternal" : true, - "path" : "/usr/share/cmake-3.22/Modules/Compiler/MSVC-DetermineCompiler.cmake" - }, - { - "isCMake" : true, - "isExternal" : true, - "path" : "/usr/share/cmake-3.22/Modules/Compiler/NVHPC-DetermineCompiler.cmake" - }, - { - "isCMake" : true, - "isExternal" : true, - "path" : "/usr/share/cmake-3.22/Modules/Compiler/NVIDIA-DetermineCompiler.cmake" - }, - { - "isCMake" : true, - "isExternal" : true, - "path" : "/usr/share/cmake-3.22/Modules/Compiler/OpenWatcom-DetermineCompiler.cmake" - }, - { - "isCMake" : true, - "isExternal" : true, - "path" : "/usr/share/cmake-3.22/Modules/Compiler/PGI-DetermineCompiler.cmake" - }, - { - "isCMake" : true, - "isExternal" : true, - "path" : "/usr/share/cmake-3.22/Modules/Compiler/PathScale-DetermineCompiler.cmake" - }, - { - "isCMake" : true, - "isExternal" : true, - "path" : "/usr/share/cmake-3.22/Modules/Compiler/SCO-DetermineCompiler.cmake" - }, - { - "isCMake" : true, - "isExternal" : true, - "path" : "/usr/share/cmake-3.22/Modules/Compiler/SDCC-C-DetermineCompiler.cmake" - }, - { - "isCMake" : true, - "isExternal" : true, - "path" : "/usr/share/cmake-3.22/Modules/Compiler/SunPro-C-DetermineCompiler.cmake" - }, - { - "isCMake" : true, - "isExternal" : true, - "path" : "/usr/share/cmake-3.22/Modules/Compiler/TI-DetermineCompiler.cmake" - }, - { - "isCMake" : true, - "isExternal" : true, - "path" : "/usr/share/cmake-3.22/Modules/Compiler/TinyCC-C-DetermineCompiler.cmake" - }, - { - "isCMake" : true, - "isExternal" : true, - "path" : "/usr/share/cmake-3.22/Modules/Compiler/VisualAge-C-DetermineCompiler.cmake" - }, - { - "isCMake" : true, - "isExternal" : true, - "path" : "/usr/share/cmake-3.22/Modules/Compiler/IBMCPP-C-DetermineVersionInternal.cmake" - }, - { - "isCMake" : true, - "isExternal" : true, - "path" : "/usr/share/cmake-3.22/Modules/Compiler/Watcom-DetermineCompiler.cmake" - }, - { - "isCMake" : true, - "isExternal" : true, - "path" : "/usr/share/cmake-3.22/Modules/Compiler/XL-C-DetermineCompiler.cmake" - }, - { - "isCMake" : true, - "isExternal" : true, - "path" : "/usr/share/cmake-3.22/Modules/Compiler/IBMCPP-C-DetermineVersionInternal.cmake" - }, - { - "isCMake" : true, - "isExternal" : true, - "path" : "/usr/share/cmake-3.22/Modules/Compiler/XLClang-C-DetermineCompiler.cmake" - }, - { - "isCMake" : true, - "isExternal" : true, - "path" : "/usr/share/cmake-3.22/Modules/Compiler/zOS-C-DetermineCompiler.cmake" - }, - { - "isCMake" : true, - "isExternal" : true, - "path" : "/usr/share/cmake-3.22/Modules/Compiler/IBMCPP-C-DetermineVersionInternal.cmake" - }, - { - "isCMake" : true, - "isExternal" : true, - "path" : "/usr/share/cmake-3.22/Modules/CMakeFindBinUtils.cmake" - }, - { - "isCMake" : true, - "isExternal" : true, - "path" : "/usr/share/cmake-3.22/Modules/Compiler/Clang-FindBinUtils.cmake" - }, - { - "isCMake" : true, - "isExternal" : true, - "path" : "/usr/share/cmake-3.22/Modules/CMakeCCompiler.cmake.in" - }, - { - "isGenerated" : true, - "path" : "cmake-build-debug/CMakeFiles/3.22.1/CMakeCCompiler.cmake" - }, - { - "isCMake" : true, - "isExternal" : true, - "path" : "/usr/share/cmake-3.22/Modules/CMakeDetermineCXXCompiler.cmake" - }, - { - "isCMake" : true, - "isExternal" : true, - "path" : "/usr/share/cmake-3.22/Modules/CMakeDetermineCompiler.cmake" - }, - { - "isCMake" : true, - "isExternal" : true, - "path" : "/usr/share/cmake-3.22/Modules/Platform/Linux-Determine-CXX.cmake" - }, - { - "isCMake" : true, - "isExternal" : true, - "path" : "/usr/share/cmake-3.22/Modules/CMakeDetermineCompilerId.cmake" - }, - { - "isCMake" : true, - "isExternal" : true, - "path" : "/usr/share/cmake-3.22/Modules/CMakeCompilerIdDetection.cmake" - }, - { - "isCMake" : true, - "isExternal" : true, - "path" : "/usr/share/cmake-3.22/Modules/Compiler/ADSP-DetermineCompiler.cmake" - }, - { - "isCMake" : true, - "isExternal" : true, - "path" : "/usr/share/cmake-3.22/Modules/Compiler/ARMCC-DetermineCompiler.cmake" - }, - { - "isCMake" : true, - "isExternal" : true, - "path" : "/usr/share/cmake-3.22/Modules/Compiler/ARMClang-DetermineCompiler.cmake" - }, - { - "isCMake" : true, - "isExternal" : true, - "path" : "/usr/share/cmake-3.22/Modules/Compiler/AppleClang-DetermineCompiler.cmake" - }, - { - "isCMake" : true, - "isExternal" : true, - "path" : "/usr/share/cmake-3.22/Modules/Compiler/Clang-DetermineCompilerInternal.cmake" - }, - { - "isCMake" : true, - "isExternal" : true, - "path" : "/usr/share/cmake-3.22/Modules/Compiler/Borland-DetermineCompiler.cmake" - }, - { - "isCMake" : true, - "isExternal" : true, - "path" : "/usr/share/cmake-3.22/Modules/Compiler/Clang-DetermineCompiler.cmake" - }, - { - "isCMake" : true, - "isExternal" : true, - "path" : "/usr/share/cmake-3.22/Modules/Compiler/Clang-DetermineCompilerInternal.cmake" - }, - { - "isCMake" : true, - "isExternal" : true, - "path" : "/usr/share/cmake-3.22/Modules/Compiler/Comeau-CXX-DetermineCompiler.cmake" - }, - { - "isCMake" : true, - "isExternal" : true, - "path" : "/usr/share/cmake-3.22/Modules/Compiler/Compaq-CXX-DetermineCompiler.cmake" - }, - { - "isCMake" : true, - "isExternal" : true, - "path" : "/usr/share/cmake-3.22/Modules/Compiler/Cray-DetermineCompiler.cmake" - }, - { - "isCMake" : true, - "isExternal" : true, - "path" : "/usr/share/cmake-3.22/Modules/Compiler/Embarcadero-DetermineCompiler.cmake" - }, - { - "isCMake" : true, - "isExternal" : true, - "path" : "/usr/share/cmake-3.22/Modules/Compiler/Fujitsu-DetermineCompiler.cmake" - }, - { - "isCMake" : true, - "isExternal" : true, - "path" : "/usr/share/cmake-3.22/Modules/Compiler/FujitsuClang-DetermineCompiler.cmake" - }, - { - "isCMake" : true, - "isExternal" : true, - "path" : "/usr/share/cmake-3.22/Modules/Compiler/GHS-DetermineCompiler.cmake" - }, - { - "isCMake" : true, - "isExternal" : true, - "path" : "/usr/share/cmake-3.22/Modules/Compiler/GNU-CXX-DetermineCompiler.cmake" - }, - { - "isCMake" : true, - "isExternal" : true, - "path" : "/usr/share/cmake-3.22/Modules/Compiler/HP-CXX-DetermineCompiler.cmake" - }, - { - "isCMake" : true, - "isExternal" : true, - "path" : "/usr/share/cmake-3.22/Modules/Compiler/IAR-DetermineCompiler.cmake" - }, - { - "isCMake" : true, - "isExternal" : true, - "path" : "/usr/share/cmake-3.22/Modules/Compiler/Intel-DetermineCompiler.cmake" - }, - { - "isCMake" : true, - "isExternal" : true, - "path" : "/usr/share/cmake-3.22/Modules/Compiler/IntelLLVM-DetermineCompiler.cmake" - }, - { - "isCMake" : true, - "isExternal" : true, - "path" : "/usr/share/cmake-3.22/Modules/Compiler/MSVC-DetermineCompiler.cmake" - }, - { - "isCMake" : true, - "isExternal" : true, - "path" : "/usr/share/cmake-3.22/Modules/Compiler/NVHPC-DetermineCompiler.cmake" - }, - { - "isCMake" : true, - "isExternal" : true, - "path" : "/usr/share/cmake-3.22/Modules/Compiler/NVIDIA-DetermineCompiler.cmake" - }, - { - "isCMake" : true, - "isExternal" : true, - "path" : "/usr/share/cmake-3.22/Modules/Compiler/OpenWatcom-DetermineCompiler.cmake" - }, - { - "isCMake" : true, - "isExternal" : true, - "path" : "/usr/share/cmake-3.22/Modules/Compiler/PGI-DetermineCompiler.cmake" - }, - { - "isCMake" : true, - "isExternal" : true, - "path" : "/usr/share/cmake-3.22/Modules/Compiler/PathScale-DetermineCompiler.cmake" - }, - { - "isCMake" : true, - "isExternal" : true, - "path" : "/usr/share/cmake-3.22/Modules/Compiler/SCO-DetermineCompiler.cmake" - }, - { - "isCMake" : true, - "isExternal" : true, - "path" : "/usr/share/cmake-3.22/Modules/Compiler/SunPro-CXX-DetermineCompiler.cmake" - }, - { - "isCMake" : true, - "isExternal" : true, - "path" : "/usr/share/cmake-3.22/Modules/Compiler/TI-DetermineCompiler.cmake" - }, - { - "isCMake" : true, - "isExternal" : true, - "path" : "/usr/share/cmake-3.22/Modules/Compiler/VisualAge-CXX-DetermineCompiler.cmake" - }, - { - "isCMake" : true, - "isExternal" : true, - "path" : "/usr/share/cmake-3.22/Modules/Compiler/IBMCPP-CXX-DetermineVersionInternal.cmake" - }, - { - "isCMake" : true, - "isExternal" : true, - "path" : "/usr/share/cmake-3.22/Modules/Compiler/Watcom-DetermineCompiler.cmake" - }, - { - "isCMake" : true, - "isExternal" : true, - "path" : "/usr/share/cmake-3.22/Modules/Compiler/XL-CXX-DetermineCompiler.cmake" - }, - { - "isCMake" : true, - "isExternal" : true, - "path" : "/usr/share/cmake-3.22/Modules/Compiler/IBMCPP-CXX-DetermineVersionInternal.cmake" - }, - { - "isCMake" : true, - "isExternal" : true, - "path" : "/usr/share/cmake-3.22/Modules/Compiler/XLClang-CXX-DetermineCompiler.cmake" - }, - { - "isCMake" : true, - "isExternal" : true, - "path" : "/usr/share/cmake-3.22/Modules/Compiler/zOS-CXX-DetermineCompiler.cmake" - }, - { - "isCMake" : true, - "isExternal" : true, - "path" : "/usr/share/cmake-3.22/Modules/Compiler/IBMCPP-CXX-DetermineVersionInternal.cmake" - }, - { - "isCMake" : true, - "isExternal" : true, - "path" : "/usr/share/cmake-3.22/Modules/CMakeFindBinUtils.cmake" - }, - { - "isCMake" : true, - "isExternal" : true, - "path" : "/usr/share/cmake-3.22/Modules/Compiler/Clang-FindBinUtils.cmake" - }, - { - "isCMake" : true, - "isExternal" : true, - "path" : "/usr/share/cmake-3.22/Modules/CMakeCXXCompiler.cmake.in" - }, - { - "isGenerated" : true, - "path" : "cmake-build-debug/CMakeFiles/3.22.1/CMakeCXXCompiler.cmake" - }, - { - "isCMake" : true, - "isExternal" : true, - "path" : "/usr/share/cmake-3.22/Modules/CMakeSystemSpecificInformation.cmake" - }, - { - "isCMake" : true, - "isExternal" : true, - "path" : "/usr/share/cmake-3.22/Modules/CMakeGenericSystem.cmake" - }, - { - "isCMake" : true, - "isExternal" : true, - "path" : "/usr/share/cmake-3.22/Modules/CMakeInitializeConfigs.cmake" - }, - { - "isCMake" : true, - "isExternal" : true, - "path" : "/usr/share/cmake-3.22/Modules/Platform/Linux.cmake" - }, - { - "isCMake" : true, - "isExternal" : true, - "path" : "/usr/share/cmake-3.22/Modules/Platform/UnixPaths.cmake" - }, - { - "isCMake" : true, - "isExternal" : true, - "path" : "/usr/share/cmake-3.22/Modules/CMakeFindCodeBlocks.cmake" - }, - { - "isCMake" : true, - "isExternal" : true, - "path" : "/usr/share/cmake-3.22/Modules/CMakeExtraGeneratorDetermineCompilerMacrosAndIncludeDirs.cmake" - }, - { - "isCMake" : true, - "isExternal" : true, - "path" : "/usr/share/cmake-3.22/Modules/ProcessorCount.cmake" - }, - { - "isCMake" : true, - "isExternal" : true, - "path" : "/usr/share/cmake-3.22/Modules/CMakeCInformation.cmake" - }, - { - "isCMake" : true, - "isExternal" : true, - "path" : "/usr/share/cmake-3.22/Modules/CMakeLanguageInformation.cmake" - }, - { - "isCMake" : true, - "isExternal" : true, - "path" : "/usr/share/cmake-3.22/Modules/Compiler/Clang-C.cmake" - }, - { - "isCMake" : true, - "isExternal" : true, - "path" : "/usr/share/cmake-3.22/Modules/Compiler/Clang.cmake" - }, - { - "isCMake" : true, - "isExternal" : true, - "path" : "/usr/share/cmake-3.22/Modules/Compiler/CMakeCommonCompilerMacros.cmake" - }, - { - "isCMake" : true, - "isExternal" : true, - "path" : "/usr/share/cmake-3.22/Modules/Compiler/GNU.cmake" - }, - { - "isCMake" : true, - "isExternal" : true, - "path" : "/usr/share/cmake-3.22/Modules/Compiler/CMakeCommonCompilerMacros.cmake" - }, - { - "isCMake" : true, - "isExternal" : true, - "path" : "/usr/share/cmake-3.22/Modules/Platform/Linux-Clang-C.cmake" - }, - { - "isCMake" : true, - "isExternal" : true, - "path" : "/usr/share/cmake-3.22/Modules/Platform/Linux-GNU-C.cmake" - }, - { - "isCMake" : true, - "isExternal" : true, - "path" : "/usr/share/cmake-3.22/Modules/Platform/Linux-GNU.cmake" - }, - { - "isCMake" : true, - "isExternal" : true, - "path" : "/usr/share/cmake-3.22/Modules/CMakeCommonLanguageInclude.cmake" - }, - { - "isCMake" : true, - "isExternal" : true, - "path" : "/usr/share/cmake-3.22/Modules/CMakeTestCCompiler.cmake" - }, - { - "isCMake" : true, - "isExternal" : true, - "path" : "/usr/share/cmake-3.22/Modules/CMakeTestCompilerCommon.cmake" - }, - { - "isCMake" : true, - "isExternal" : true, - "path" : "/usr/share/cmake-3.22/Modules/CMakeDetermineCompilerABI.cmake" - }, - { - "isCMake" : true, - "isExternal" : true, - "path" : "/usr/share/cmake-3.22/Modules/CMakeParseImplicitIncludeInfo.cmake" - }, - { - "isCMake" : true, - "isExternal" : true, - "path" : "/usr/share/cmake-3.22/Modules/CMakeParseImplicitLinkInfo.cmake" - }, - { - "isCMake" : true, - "isExternal" : true, - "path" : "/usr/share/cmake-3.22/Modules/CMakeParseLibraryArchitecture.cmake" - }, - { - "isCMake" : true, - "isExternal" : true, - "path" : "/usr/share/cmake-3.22/Modules/CMakeTestCompilerCommon.cmake" - }, - { - "isCMake" : true, - "isExternal" : true, - "path" : "/usr/share/cmake-3.22/Modules/CMakeCCompilerABI.c" - }, - { - "isCMake" : true, - "isExternal" : true, - "path" : "/usr/share/cmake-3.22/Modules/CMakeDetermineCompileFeatures.cmake" - }, - { - "isCMake" : true, - "isExternal" : true, - "path" : "/usr/share/cmake-3.22/Modules/Internal/FeatureTesting.cmake" - }, - { - "isCMake" : true, - "isExternal" : true, - "path" : "/usr/share/cmake-3.22/Modules/CMakeCCompiler.cmake.in" - }, - { - "isGenerated" : true, - "path" : "cmake-build-debug/CMakeFiles/3.22.1/CMakeCCompiler.cmake" - }, - { - "isCMake" : true, - "isExternal" : true, - "path" : "/usr/share/cmake-3.22/Modules/CMakeCXXInformation.cmake" - }, - { - "isCMake" : true, - "isExternal" : true, - "path" : "/usr/share/cmake-3.22/Modules/CMakeLanguageInformation.cmake" - }, - { - "isCMake" : true, - "isExternal" : true, - "path" : "/usr/share/cmake-3.22/Modules/Compiler/Clang-CXX.cmake" - }, - { - "isCMake" : true, - "isExternal" : true, - "path" : "/usr/share/cmake-3.22/Modules/Compiler/Clang.cmake" - }, - { - "isCMake" : true, - "isExternal" : true, - "path" : "/usr/share/cmake-3.22/Modules/Platform/Linux-Clang-CXX.cmake" - }, - { - "isCMake" : true, - "isExternal" : true, - "path" : "/usr/share/cmake-3.22/Modules/Platform/Linux-GNU-CXX.cmake" - }, - { - "isCMake" : true, - "isExternal" : true, - "path" : "/usr/share/cmake-3.22/Modules/Platform/Linux-GNU.cmake" - }, - { - "isCMake" : true, - "isExternal" : true, - "path" : "/usr/share/cmake-3.22/Modules/CMakeCommonLanguageInclude.cmake" - }, - { - "isCMake" : true, - "isExternal" : true, - "path" : "/usr/share/cmake-3.22/Modules/CMakeTestCXXCompiler.cmake" - }, - { - "isCMake" : true, - "isExternal" : true, - "path" : "/usr/share/cmake-3.22/Modules/CMakeTestCompilerCommon.cmake" - }, - { - "isCMake" : true, - "isExternal" : true, - "path" : "/usr/share/cmake-3.22/Modules/CMakeDetermineCompilerABI.cmake" - }, - { - "isCMake" : true, - "isExternal" : true, - "path" : "/usr/share/cmake-3.22/Modules/CMakeParseImplicitIncludeInfo.cmake" - }, - { - "isCMake" : true, - "isExternal" : true, - "path" : "/usr/share/cmake-3.22/Modules/CMakeParseImplicitLinkInfo.cmake" - }, - { - "isCMake" : true, - "isExternal" : true, - "path" : "/usr/share/cmake-3.22/Modules/CMakeParseLibraryArchitecture.cmake" - }, - { - "isCMake" : true, - "isExternal" : true, - "path" : "/usr/share/cmake-3.22/Modules/CMakeTestCompilerCommon.cmake" - }, - { - "isCMake" : true, - "isExternal" : true, - "path" : "/usr/share/cmake-3.22/Modules/CMakeCXXCompilerABI.cpp" - }, - { - "isCMake" : true, - "isExternal" : true, - "path" : "/usr/share/cmake-3.22/Modules/CMakeDetermineCompileFeatures.cmake" - }, - { - "isCMake" : true, - "isExternal" : true, - "path" : "/usr/share/cmake-3.22/Modules/Internal/FeatureTesting.cmake" - }, - { - "isCMake" : true, - "isExternal" : true, - "path" : "/usr/share/cmake-3.22/Modules/CMakeCXXCompiler.cmake.in" - }, - { - "isGenerated" : true, - "path" : "cmake-build-debug/CMakeFiles/3.22.1/CMakeCXXCompiler.cmake" - } - ], - "kind" : "cmakeFiles", - "paths" : - { - "build" : "/home/lucas/CLionProjects/tmp-policy/cmake-build-debug", - "source" : "/home/lucas/CLionProjects/tmp-policy" - }, - "version" : - { - "major" : 1, - "minor" : 0 - } -} diff --git a/cmake-build-debug/.cmake/api/v1/reply/codemodel-v2-d0b91aea16fe9089df17.json b/cmake-build-debug/.cmake/api/v1/reply/codemodel-v2-d0b91aea16fe9089df17.json deleted file mode 100644 index e23c8e3..0000000 --- a/cmake-build-debug/.cmake/api/v1/reply/codemodel-v2-d0b91aea16fe9089df17.json +++ /dev/null @@ -1,60 +0,0 @@ -{ - "configurations" : - [ - { - "directories" : - [ - { - "build" : ".", - "jsonFile" : "directory-.-Debug-f5ebdc15457944623624.json", - "minimumCMakeVersion" : - { - "string" : "3.18" - }, - "projectIndex" : 0, - "source" : ".", - "targetIndexes" : - [ - 0 - ] - } - ], - "name" : "Debug", - "projects" : - [ - { - "directoryIndexes" : - [ - 0 - ], - "name" : "tmp_policy", - "targetIndexes" : - [ - 0 - ] - } - ], - "targets" : - [ - { - "directoryIndex" : 0, - "id" : "tmp_policy::@6890427a1f51a3e7e1df", - "jsonFile" : "target-tmp_policy-Debug-cda8d61ded076f2311ae.json", - "name" : "tmp_policy", - "projectIndex" : 0 - } - ] - } - ], - "kind" : "codemodel", - "paths" : - { - "build" : "/home/lucas/CLionProjects/tmp-policy/cmake-build-debug", - "source" : "/home/lucas/CLionProjects/tmp-policy" - }, - "version" : - { - "major" : 2, - "minor" : 3 - } -} diff --git a/cmake-build-debug/.cmake/api/v1/reply/index-2022-08-04T05-40-35-0183.json b/cmake-build-debug/.cmake/api/v1/reply/index-2022-08-04T05-40-35-0183.json deleted file mode 100644 index 781a0e4..0000000 --- a/cmake-build-debug/.cmake/api/v1/reply/index-2022-08-04T05-40-35-0183.json +++ /dev/null @@ -1,108 +0,0 @@ -{ - "cmake" : - { - "generator" : - { - "multiConfig" : false, - "name" : "Unix Makefiles" - }, - "paths" : - { - "cmake" : "/usr/bin/cmake", - "cpack" : "/usr/bin/cpack", - "ctest" : "/usr/bin/ctest", - "root" : "/usr/share/cmake-3.22" - }, - "version" : - { - "isDirty" : false, - "major" : 3, - "minor" : 22, - "patch" : 1, - "string" : "3.22.1", - "suffix" : "" - } - }, - "objects" : - [ - { - "jsonFile" : "codemodel-v2-d0b91aea16fe9089df17.json", - "kind" : "codemodel", - "version" : - { - "major" : 2, - "minor" : 3 - } - }, - { - "jsonFile" : "cache-v2-4327d0d10f6390084c1d.json", - "kind" : "cache", - "version" : - { - "major" : 2, - "minor" : 0 - } - }, - { - "jsonFile" : "cmakeFiles-v1-2d71857a96b31064ca46.json", - "kind" : "cmakeFiles", - "version" : - { - "major" : 1, - "minor" : 0 - } - }, - { - "jsonFile" : "toolchains-v1-d38fe39e3523af97f256.json", - "kind" : "toolchains", - "version" : - { - "major" : 1, - "minor" : 0 - } - } - ], - "reply" : - { - "cache-v2" : - { - "jsonFile" : "cache-v2-4327d0d10f6390084c1d.json", - "kind" : "cache", - "version" : - { - "major" : 2, - "minor" : 0 - } - }, - "cmakeFiles-v1" : - { - "jsonFile" : "cmakeFiles-v1-2d71857a96b31064ca46.json", - "kind" : "cmakeFiles", - "version" : - { - "major" : 1, - "minor" : 0 - } - }, - "codemodel-v2" : - { - "jsonFile" : "codemodel-v2-d0b91aea16fe9089df17.json", - "kind" : "codemodel", - "version" : - { - "major" : 2, - "minor" : 3 - } - }, - "toolchains-v1" : - { - "jsonFile" : "toolchains-v1-d38fe39e3523af97f256.json", - "kind" : "toolchains", - "version" : - { - "major" : 1, - "minor" : 0 - } - } - } -} diff --git a/cmake-build-debug/.cmake/api/v1/reply/target-tmp_policy-Debug-cda8d61ded076f2311ae.json b/cmake-build-debug/.cmake/api/v1/reply/target-tmp_policy-Debug-cda8d61ded076f2311ae.json deleted file mode 100644 index 42274d3..0000000 --- a/cmake-build-debug/.cmake/api/v1/reply/target-tmp_policy-Debug-cda8d61ded076f2311ae.json +++ /dev/null @@ -1,117 +0,0 @@ -{ - "artifacts" : - [ - { - "path" : "tmp_policy" - } - ], - "backtrace" : 1, - "backtraceGraph" : - { - "commands" : - [ - "add_executable" - ], - "files" : - [ - "CMakeLists.txt" - ], - "nodes" : - [ - { - "file" : 0 - }, - { - "command" : 0, - "file" : 0, - "line" : 6, - "parent" : 0 - } - ] - }, - "compileGroups" : - [ - { - "compileCommandFragments" : - [ - { - "fragment" : "-g" - } - ], - "language" : "CXX", - "languageStandard" : - { - "backtraces" : - [ - 1 - ], - "standard" : "14" - }, - "sourceIndexes" : - [ - 0 - ] - } - ], - "id" : "tmp_policy::@6890427a1f51a3e7e1df", - "link" : - { - "commandFragments" : - [ - { - "fragment" : "-g", - "role" : "flags" - }, - { - "fragment" : "", - "role" : "flags" - } - ], - "language" : "CXX" - }, - "name" : "tmp_policy", - "nameOnDisk" : "tmp_policy", - "paths" : - { - "build" : ".", - "source" : "." - }, - "sourceGroups" : - [ - { - "name" : "Source Files", - "sourceIndexes" : - [ - 0 - ] - }, - { - "name" : "Header Files", - "sourceIndexes" : - [ - 1, - 2 - ] - } - ], - "sources" : - [ - { - "backtrace" : 1, - "compileGroupIndex" : 0, - "path" : "main.cpp", - "sourceGroupIndex" : 0 - }, - { - "backtrace" : 1, - "path" : "accpolicy.h", - "sourceGroupIndex" : 1 - }, - { - "backtrace" : 1, - "path" : "policy_fundamentals.h", - "sourceGroupIndex" : 1 - } - ], - "type" : "EXECUTABLE" -} diff --git a/cmake-build-debug/tmp_policy.cbp b/cmake-build-debug/tmp_policy.cbp index eff8d85..f38d41b 100644 --- a/cmake-build-debug/tmp_policy.cbp +++ b/cmake-build-debug/tmp_policy.cbp @@ -85,6 +85,9 @@ + + diff --git a/main.cpp b/main.cpp index bc8f460..8d1765a 100644 --- a/main.cpp +++ b/main.cpp @@ -1,6 +1,28 @@ +// tmp_policy +// Created by lucas on 22-7-26. +// Re-implementation of a typical policy architecture in C++ Template Meta-Programming. + #include +#include "accumulator.h" +#include +#include int main() { - std::cout << "Hello, World!" << std::endl; + // Normal demo + std::vector intVec; + intVec.reserve(10); + for (int i = 1; i <= 10; ++i) + intVec.push_back(i); + std::cout << Accumulator>::eval(intVec) << std::endl; + std::cout << Accumulator>::eval(intVec) << std::endl; + std::cout << Accumulator>::eval(intVec) << std::endl; + std::cout << Accumulator<>::eval(intVec) << std::endl; + std::cout << Accumulator::eval(intVec) << std::endl; + std::cout << Accumulator::eval(intVec) << std::endl; + // Punchline (gusha) + std::vector strVec; + for (int i = 1; i <= 10; ++i) + strVec.emplace_back("Today is KFC crazy Thursday V me ¥50\n"); + std::cout << Accumulator>::eval(strVec) << std::endl; return 0; } diff --git a/policy_fundamentals.h b/policy_fundamentals.h index 935f340..643432e 100644 --- a/policy_fundamentals.h +++ b/policy_fundamentals.h @@ -59,8 +59,8 @@ namespace NSPolicySelect { }; // Template specialization of MajorFilter_. - template - struct MajorFilter_ + struct MajorFilter_, PolicyContainer> { // The beginning of the recursion. @@ -112,27 +112,99 @@ namespace NSPolicySelect { // For each policy object in the policy container, // use MinorCheckInner_ to identify if there are another policy object // having identical minor class. + // Also, the primitive template handles with the situation in which + // the policy container has no element. template struct MinorCheckOuter_ { using type = std::true_type; }; + // Template specialization of MinorCheckOuter_. template struct MinorCheckOuter_> { - private: - using InnerResult_ = typename MinorCheckInner_>::type; - public: + // The main logic of recursion. using type = std::conditional_t< - InnerResult_::value, + // Does TCurPolicy and the rest policy objects have the same minor class? + MinorCheckInner_>::type::value, + // ... if no, proceed with next policy object in the policy container. typename MinorCheckOuter_>::type, + // ... if yes, simply returns false and ends the recursion. std::false_type >; }; + // Auxiliary template value meta-function definition: MinorCheck. + // Check if the TPolicyContainer has more than one element + // with the same minor class. + // If yes, returns false. + // If no, returns true. template constexpr bool MinorCheck = MinorCheckOuter_::type::value; + + // Template Declaration: template struct PolicySelectionResult. + // The template class which describes the policy selection result. + template + struct PolicySelectionResult; + + // Template specialization of PolicySelectionResult. + // If the PolicyContainer only has one policy object in it, + // the PolicySelectionResult simply inherits from the policy object. + template + struct PolicySelectionResult> : + public TPolicy {}; + + // Template specialization of PolicySelectionResult. + // If the PolicyContainer has more than one policy object in it, + // the PolicySelectionResult inherits from the first policy object + // and the PolicySelectionResult of other policies. + // The result contains a definition that is dominant and unambiguous -- + // each declaration comes from either Policy Group's initial definition + // or the policy object's overwritten definition. + template + struct PolicySelectionResult> : + public TCurPolicy, + public PolicySelectionResult> {}; + + // Template Declaration: template struct Selector_. + // The interface for users to get the policy selection result. + // TPolicyContainer - the policy container which contains the policy objects. + // TPolicyGroup - the original policy group. + template + struct Selector_; + + // Template specialization of Selector_. + // Restricts the TPolicyContainer can only be type PolicyContainer. + template + struct Selector_, TPolicyGroup> + { + // Use access specifier to prevent the users to use the internal types. + private: + // Use MajorFilter (MajorFilter_) to filter out the policy objects + // with unmatched MajorClass. + using FilteredPolicy = MajorFilter>; + // Check if the policy objects has conflict minor classes. + static_assert(MinorCheck, "Minor Class Set Conflict!"); + public: + // Generate the policy selection result. + using type = std::conditional_t< + // Is the PolicyContainer empty? + IsArrayEmpty, + // ... if so, returns the policy group to represent the default definitions. + TPolicyGroup, + // ... if not, generate policy selection result to represent the user-selected definitions. + PolicySelectionResult + >; + }; + + // Auxiliary type definition - PolicySelect. + // To simplify the usage of Selector_. + template + using PolicySelect = typename Selector_::type; } +// Expose the NSPolicySelect::PolicySelect to global scope. +using NSPolicySelect::PolicySelect; + #endif //TMP_POLICY_POLICY_FUNDAMENTALS_H