diff --git a/MeshLib/IO/XDMF/transformData.cpp b/MeshLib/IO/XDMF/transformData.cpp index 11a419d0040f409a8e917131ac5ef3d9451292c1..505d9c468b20349c2e4bca258429374a7707ffdc 100644 --- a/MeshLib/IO/XDMF/transformData.cpp +++ b/MeshLib/IO/XDMF/transformData.cpp @@ -167,6 +167,40 @@ std::optional<XdmfHdfData> transformAttribute( "Unsigned char has 8 bits"); data_type = MeshPropertyDataType::uchar; } + else if constexpr (std::is_same_v<unsigned long, decltype(basic_type)>) + { + if (sizeof(unsigned long) == 8 && + std::numeric_limits<unsigned long>::digits == 64) + { + data_type = MeshPropertyDataType::uint64; + } + else if (sizeof(unsigned long) == 4 && + std::numeric_limits<unsigned long>::digits == 32) + { + data_type = MeshPropertyDataType::uint32; + } + else + { + return false; + } + } + else if constexpr (std::is_same_v<std::size_t, decltype(basic_type)>) + { + if (sizeof(std::size_t) == 8 && + std::numeric_limits<std::size_t>::digits == 64) + { + data_type = MeshPropertyDataType::uint64; + } + else if (sizeof(std::size_t) == 4 && + std::numeric_limits<std::size_t>::digits == 32) + { + data_type = MeshPropertyDataType::uint32; + } + else + { + return false; + } + } else { return false;