diff --git a/develop/singles/headers/meta.hpp/meta_all.hpp b/develop/singles/headers/meta.hpp/meta_all.hpp index 2020383..89a5daa 100644 --- a/develop/singles/headers/meta.hpp/meta_all.hpp +++ b/develop/singles/headers/meta.hpp/meta_all.hpp @@ -34,6 +34,10 @@ #include #include +// +// +// + #if !defined(META_HPP_NO_EXCEPTIONS) && !defined(__cpp_exceptions) # define META_HPP_NO_EXCEPTIONS #endif @@ -42,6 +46,10 @@ # define META_HPP_NO_RTTI #endif +// +// +// + #if !defined(META_HPP_FWD) # define META_HPP_FWD(v) std::forward(v) #endif @@ -61,15 +69,30 @@ # define META_HPP_PP_CAT_I(x, y) x##y #endif +// +// +// + +#define META_HPP_CLANG_COMPILER_ID 1 +#define META_HPP_GCC_COMPILER_ID 2 +#define META_HPP_MSVC_COMPILER_ID 3 +#define META_HPP_UNKNOWN_COMPILER_ID 4 + #if defined(__clang__) -# define META_HPP_CLANG +# define META_HPP_COMPILER_ID META_HPP_CLANG_COMPILER_ID #elif defined(__GNUC__) -# define META_HPP_GCC +# define META_HPP_COMPILER_ID META_HPP_GCC_COMPILER_ID #elif defined(_MSC_VER) -# define META_HPP_MSVC +# define META_HPP_COMPILER_ID META_HPP_MSVC_COMPILER_ID +#else +# define META_HPP_COMPILER_ID META_HPP_UNKNOWN_COMPILER_ID #endif -#if defined(META_HPP_CLANG) +// +// +// + +#if META_HPP_COMPILER_ID == META_HPP_CLANG_COMPILER_ID # define META_HPP_CLANG_PRAGMA_TO_STR(x) _Pragma(#x) # define META_HPP_CLANG_IGNORE_WARNING(w) META_HPP_CLANG_PRAGMA_TO_STR(clang diagnostic ignored w) # define META_HPP_CLANG_IGNORE_WARNINGS_PUSH() _Pragma("clang diagnostic push") @@ -81,7 +104,7 @@ # define META_HPP_CLANG_IGNORE_WARNINGS_POP() #endif -#if defined(META_HPP_GCC) +#if META_HPP_COMPILER_ID == META_HPP_GCC_COMPILER_ID # define META_HPP_GCC_PRAGMA_TO_STR(x) _Pragma(#x) # define META_HPP_GCC_IGNORE_WARNING(w) META_HPP_GCC_PRAGMA_TO_STR(GCC diagnostic ignored w) # define META_HPP_GCC_IGNORE_WARNINGS_PUSH() _Pragma("GCC diagnostic push") @@ -93,7 +116,7 @@ # define META_HPP_GCC_IGNORE_WARNINGS_POP() #endif -#if defined(META_HPP_MSVC) +#if META_HPP_COMPILER_ID == META_HPP_MSVC_COMPILER_ID # define META_HPP_MSVC_IGNORE_WARNING(w) __pragma(warning(disable : w)) # define META_HPP_MSVC_IGNORE_WARNINGS_PUSH() __pragma(warning(push)) # define META_HPP_MSVC_IGNORE_WARNINGS_POP() __pragma(warning(pop)) @@ -103,6 +126,10 @@ # define META_HPP_MSVC_IGNORE_WARNINGS_POP() #endif +// +// +// + #define META_HPP_IGNORE_OVERRIDE_WARNINGS_PUSH() \ META_HPP_CLANG_IGNORE_WARNINGS_PUSH() \ META_HPP_CLANG_IGNORE_WARNING("-Wunknown-warning-option") \ diff --git a/headers/meta.hpp/meta_base/base.hpp b/headers/meta.hpp/meta_base/base.hpp index 13ac4ab..7897c26 100644 --- a/headers/meta.hpp/meta_base/base.hpp +++ b/headers/meta.hpp/meta_base/base.hpp @@ -35,6 +35,10 @@ #include #include +// +// +// + #if !defined(META_HPP_NO_EXCEPTIONS) && !defined(__cpp_exceptions) # define META_HPP_NO_EXCEPTIONS #endif @@ -43,6 +47,10 @@ # define META_HPP_NO_RTTI #endif +// +// +// + #if !defined(META_HPP_FWD) # define META_HPP_FWD(v) std::forward(v) #endif @@ -62,15 +70,30 @@ # define META_HPP_PP_CAT_I(x, y) x##y #endif +// +// +// + +#define META_HPP_CLANG_COMPILER_ID 1 +#define META_HPP_GCC_COMPILER_ID 2 +#define META_HPP_MSVC_COMPILER_ID 3 +#define META_HPP_UNKNOWN_COMPILER_ID 4 + #if defined(__clang__) -# define META_HPP_CLANG +# define META_HPP_COMPILER_ID META_HPP_CLANG_COMPILER_ID #elif defined(__GNUC__) -# define META_HPP_GCC +# define META_HPP_COMPILER_ID META_HPP_GCC_COMPILER_ID #elif defined(_MSC_VER) -# define META_HPP_MSVC +# define META_HPP_COMPILER_ID META_HPP_MSVC_COMPILER_ID +#else +# define META_HPP_COMPILER_ID META_HPP_UNKNOWN_COMPILER_ID #endif -#if defined(META_HPP_CLANG) +// +// +// + +#if META_HPP_COMPILER_ID == META_HPP_CLANG_COMPILER_ID # define META_HPP_CLANG_PRAGMA_TO_STR(x) _Pragma(#x) # define META_HPP_CLANG_IGNORE_WARNING(w) META_HPP_CLANG_PRAGMA_TO_STR(clang diagnostic ignored w) # define META_HPP_CLANG_IGNORE_WARNINGS_PUSH() _Pragma("clang diagnostic push") @@ -82,7 +105,7 @@ # define META_HPP_CLANG_IGNORE_WARNINGS_POP() #endif -#if defined(META_HPP_GCC) +#if META_HPP_COMPILER_ID == META_HPP_GCC_COMPILER_ID # define META_HPP_GCC_PRAGMA_TO_STR(x) _Pragma(#x) # define META_HPP_GCC_IGNORE_WARNING(w) META_HPP_GCC_PRAGMA_TO_STR(GCC diagnostic ignored w) # define META_HPP_GCC_IGNORE_WARNINGS_PUSH() _Pragma("GCC diagnostic push") @@ -94,7 +117,7 @@ # define META_HPP_GCC_IGNORE_WARNINGS_POP() #endif -#if defined(META_HPP_MSVC) +#if META_HPP_COMPILER_ID == META_HPP_MSVC_COMPILER_ID # define META_HPP_MSVC_IGNORE_WARNING(w) __pragma(warning(disable : w)) # define META_HPP_MSVC_IGNORE_WARNINGS_PUSH() __pragma(warning(push)) # define META_HPP_MSVC_IGNORE_WARNINGS_POP() __pragma(warning(pop)) @@ -104,6 +127,10 @@ # define META_HPP_MSVC_IGNORE_WARNINGS_POP() #endif +// +// +// + #define META_HPP_IGNORE_OVERRIDE_WARNINGS_PUSH() \ META_HPP_CLANG_IGNORE_WARNINGS_PUSH() \ META_HPP_CLANG_IGNORE_WARNING("-Wunknown-warning-option") \