diff --git a/CMakeLists.txt b/CMakeLists.txt index c7f2d4c0431f25074894277be025fe207bbb5cb7..bccc712bc7af5324e284f166769f2d1505358a39 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -198,10 +198,14 @@ endif() # Compiler flags set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${PUGS_CXX_FLAGS}") +set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} ${PUGS_CXX_FLAGS}") +set(CMAKE_CXX_FLAGS_RELWITHDEBINFO "${CMAKE_CXX_FLAGS_RELWITHDEBINFO} ${PUGS_CXX_FLAGS}") -# Add debug mode for Standard C++ library -set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -D_GLIBCXX_DEBUG -D_LIBCPP_DEBUG=1 ${PUGS_CXX_FLAGS}") -set(CMAKE_CXX_FLAGS_RELWITHDEBINFO "${CMAKE_CXX_FLAGS_RELWITHDEBINFO} -D_GLIBCXX_DEBUG -D_LIBCPP_DEBUG=1 ${PUGS_CXX_FLAGS}") +# Add debug mode for Standard C++ library (not for AppleClang since it is broken) +if (NOT "${CMAKE_CXX_COMPILER_ID}" STREQUAL "AppleClang") + set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -D_GLIBCXX_DEBUG -D_LIBCPP_DEBUG=1") + set(CMAKE_CXX_FLAGS_RELWITHDEBINFO "${CMAKE_CXX_FLAGS_RELWITHDEBINFO} -D_GLIBCXX_DEBUG -D_LIBCPP_DEBUG=1") +endif() #------------------------------------------------------ diff --git a/src/output/VTKWriter.hpp b/src/output/VTKWriter.hpp index 4656a183977e28b00853a847ad1ec3b9c89cc9a1..acd10acd57a8c7a7011687b366192f330739356f 100644 --- a/src/output/VTKWriter.hpp +++ b/src/output/VTKWriter.hpp @@ -85,6 +85,19 @@ class VTKWriter template <typename DataType> struct VTKType { + inline const static std::string name = [] { + static_assert(std::is_arithmetic_v<DataType>, "invalid data type"); + + if constexpr (std::is_integral_v<DataType>) { + if constexpr (std::is_unsigned_v<DataType>) { + return "UInt" + std::to_string(sizeof(DataType) * 8); + } else { + return "UInt" + std::to_string(sizeof(DataType) * 8); + } + } else if constexpr (std::is_floating_point_v<DataType>) { + return "Float" + std::to_string(sizeof(DataType) * 8); + } + }(); }; template <typename DataType> @@ -360,64 +373,4 @@ class VTKWriter ~VTKWriter() = default; }; -template <> -struct VTKWriter::VTKType<int8_t> -{ - inline const static std::string name{"Int8"}; -}; - -template <> -struct VTKWriter::VTKType<uint8_t> -{ - inline const static std::string name{"UInt8"}; -}; - -template <> -struct VTKWriter::VTKType<int16_t> -{ - inline const static std::string name{"Int16"}; -}; - -template <> -struct VTKWriter::VTKType<uint16_t> -{ - inline const static std::string name{"UInt16"}; -}; - -template <> -struct VTKWriter::VTKType<int32_t> -{ - inline const static std::string name{"Int32"}; -}; - -template <> -struct VTKWriter::VTKType<uint32_t> -{ - inline const static std::string name{"UInt32"}; -}; - -template <> -struct VTKWriter::VTKType<int64_t> -{ - inline const static std::string name{"Int64"}; -}; - -template <> -struct VTKWriter::VTKType<uint64_t> -{ - inline const static std::string name{"UInt64"}; -}; - -template <> -struct VTKWriter::VTKType<float> -{ - inline const static std::string name{"Float32"}; -}; - -template <> -struct VTKWriter::VTKType<double> -{ - inline const static std::string name{"Float64"}; -}; - #endif // VTK_WRITER_HPP