From 3e8d393b860013d6aab29a358daace6ed99ee340 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Vladim=C3=ADr=20Vondru=C5=A1?= Date: Mon, 24 Apr 2023 17:56:47 +0200 Subject: [PATCH] Fix build with CORRADE_STANDARD_ASSERT. And clean up the warnings. Like in Corrade it's Debug build only, for the Release build it's better to just use CORRADE_NO_ASSERT instead. --- doc/changelog.dox | 1 + src/Magnum/Implementation/ImageProperties.h | 7 ++++++- src/Magnum/MeshTools/Combine.cpp | 6 +++--- src/Magnum/MeshTools/Concatenate.cpp | 2 +- .../Shaders/Implementation/lineMiterLimit.h | 4 ++-- src/Magnum/Trade/AbstractImageConverter.cpp | 21 ++++++++++++++++--- src/Magnum/Trade/AbstractSceneConverter.cpp | 14 +++++++++++-- src/Magnum/Trade/MeshData.h | 6 +++++- src/Magnum/Trade/SceneData.h | 6 +++++- src/Magnum/Vk/Assert.h | 4 ++-- 10 files changed, 55 insertions(+), 16 deletions(-) diff --git a/doc/changelog.dox b/doc/changelog.dox index c95130de0..531918b16 100644 --- a/doc/changelog.dox +++ b/doc/changelog.dox @@ -855,6 +855,7 @@ See also: [mosra/magnum#602](https://github.com/mosra/magnum/pull/602)) - Fixed various variable shadowing warings on MSVC (see [mosra/magnum#611](https://github.com/mosra/magnum/issues/611)) - Fixed compilation on a non-deprecated build (see [mosra/magnum#612](https://github.com/mosra/magnum/pull/612)) +- Fixed build of the @ref Vk library with @ref CORRADE_STANDARD_ASSERT @subsection changelog-latest-bugfixes Bug fixes diff --git a/src/Magnum/Implementation/ImageProperties.h b/src/Magnum/Implementation/ImageProperties.h index 206d70e6a..2b3bd3a42 100644 --- a/src/Magnum/Implementation/ImageProperties.h +++ b/src/Magnum/Implementation/ImageProperties.h @@ -40,7 +40,12 @@ namespace Magnum { namespace Implementation { #ifndef CORRADE_NO_ASSERT inline void checkImageFlagsForSize(const char*, const ImageFlags1D, const Math::Vector<1, Int>&) {} inline void checkImageFlagsForSize(const char*, const ImageFlags2D, const Vector2i&) {} -inline void checkImageFlagsForSize(const char* const prefix, const ImageFlags3D flags, const Vector3i& size) { +inline void checkImageFlagsForSize(const char* + #ifndef CORRADE_STANDARD_ASSERT + const prefix + #endif + , const ImageFlags3D flags, const Vector3i& size) +{ CORRADE_ASSERT(!(flags & ImageFlag3D::CubeMap) || size.x() == size.y(), prefix << "expected square faces for a cube map, got" << Debug::packed << size.xy(), ); CORRADE_ASSERT(!(flags & ImageFlag3D::CubeMap) || (flags & ImageFlag3D::Array) || size.z() == 6, diff --git a/src/Magnum/MeshTools/Combine.cpp b/src/Magnum/MeshTools/Combine.cpp index 0bd33af44..a598d32fb 100644 --- a/src/Magnum/MeshTools/Combine.cpp +++ b/src/Magnum/MeshTools/Combine.cpp @@ -40,7 +40,7 @@ namespace Magnum { namespace MeshTools { namespace { Trade::MeshData combineIndexedImplementation( - #ifndef CORRADE_NO_ASSERT + #if !defined(CORRADE_NO_ASSERT) && !defined(CORRADE_STANDARD_ASSERT) const char* assertPrefix, #endif const MeshPrimitive primitive, Containers::Array& combinedIndices, const UnsignedInt indexCount, const UnsignedInt indexStride, const Containers::Iterable& meshes) @@ -164,7 +164,7 @@ Trade::MeshData combineIndexedAttributes(const Containers::Iterable&& indexData, const UnsignedInt vertexCount, Containers::Array&& vertexData, Containers::Array&& attributeData, const Containers::Iterable& meshes, const char* const assertPrefix) { - #ifdef CORRADE_NO_ASSERT + #if defined(CORRADE_NO_ASSERT) || defined(CORRADE_STANDARD_ASSERT) static_cast(assertPrefix); #endif diff --git a/src/Magnum/Shaders/Implementation/lineMiterLimit.h b/src/Magnum/Shaders/Implementation/lineMiterLimit.h index 67b8d82e8..89dc66ec7 100644 --- a/src/Magnum/Shaders/Implementation/lineMiterLimit.h +++ b/src/Magnum/Shaders/Implementation/lineMiterLimit.h @@ -32,7 +32,7 @@ namespace Magnum { namespace Shaders { namespace Implementation { inline Float lineMiterLengthLimit(const char* const name, const Float limit) { - #ifdef CORRADE_NO_ASSERT + #if defined(CORRADE_NO_ASSERT) || defined(CORRADE_STANDARD_ASSERT) static_cast(name); #endif CORRADE_ASSERT(limit >= 1.0f && !Math::isInf(limit), @@ -43,7 +43,7 @@ inline Float lineMiterLengthLimit(const char* const name, const Float limit) { inline Float lineMiterAngleLimit(const char* const name, const Rad limit) { using namespace Math::Literals; - #ifdef CORRADE_NO_ASSERT + #if defined(CORRADE_NO_ASSERT) || defined(CORRADE_STANDARD_ASSERT) static_cast(name); #endif CORRADE_ASSERT(limit > 0.0_radf && limit <= Rad{Constants::pi()}, diff --git a/src/Magnum/Trade/AbstractImageConverter.cpp b/src/Magnum/Trade/AbstractImageConverter.cpp index 7b3a48812..aa5c9406a 100644 --- a/src/Magnum/Trade/AbstractImageConverter.cpp +++ b/src/Magnum/Trade/AbstractImageConverter.cpp @@ -293,7 +293,12 @@ Containers::Optional AbstractImageConverter::convert(const ImageDat #ifndef CORRADE_NO_ASSERT namespace { -template class View> bool checkImageValidity(const char* const messagePrefix, const View& image) { +template class View> bool checkImageValidity(const char* + #ifndef CORRADE_STANDARD_ASSERT + const messagePrefix + #endif + , const View& image) +{ /* At some point there might be a file format that allows zero-sized images, but so far I don't know about any. When such format appears, this check will get moved to plugin implementations that can't work with @@ -560,7 +565,12 @@ AbstractImageConverter::convertToData(const ImageData3D& image) { #ifndef CORRADE_NO_ASSERT namespace { -template bool checkImageValidity(const char* const messagePrefix, const Containers::ArrayView> imageLevels) { +template bool checkImageValidity(const char* + #ifndef CORRADE_STANDARD_ASSERT + const messagePrefix + #endif + , const Containers::ArrayView> imageLevels) +{ CORRADE_ASSERT(!imageLevels.isEmpty(), messagePrefix << "at least one image has to be specified", false); @@ -586,7 +596,12 @@ template bool checkImageValidity(const char* const messa return true; } -template bool checkImageValidity(const char* const messagePrefix, const Containers::ArrayView> imageLevels) { +template bool checkImageValidity(const char* + #ifndef CORRADE_STANDARD_ASSERT + const messagePrefix + #endif + , const Containers::ArrayView> imageLevels) +{ CORRADE_ASSERT(!imageLevels.isEmpty(), messagePrefix << "at least one image has to be specified", false); diff --git a/src/Magnum/Trade/AbstractSceneConverter.cpp b/src/Magnum/Trade/AbstractSceneConverter.cpp index f53693596..493297aa2 100644 --- a/src/Magnum/Trade/AbstractSceneConverter.cpp +++ b/src/Magnum/Trade/AbstractSceneConverter.cpp @@ -905,7 +905,12 @@ bool AbstractSceneConverter::doAdd(UnsignedInt, const TextureData&, Containers:: #ifndef CORRADE_NO_ASSERT namespace { -template bool checkImageValidity(const char* const messagePrefix, const ImageData& image) { +template bool checkImageValidity(const char* + #ifndef CORRADE_STANDARD_ASSERT + const messagePrefix + #endif + , const ImageData& image) +{ /* At some point there might be a file format that allows zero-sized images, but so far I don't know about any. When such format appears, this check will get moved to plugin implementations that can't work with @@ -920,7 +925,12 @@ template bool checkImageValidity(const char* const messa return true; } -template bool checkImageValidity(const char* const messagePrefix, const Containers::Iterable>& imageLevels) { +template bool checkImageValidity(const char* + #ifndef CORRADE_STANDARD_ASSERT + const messagePrefix + #endif + , const Containers::Iterable>& imageLevels) +{ CORRADE_ASSERT(!imageLevels.isEmpty(), messagePrefix << "at least one image level has to be specified", false); diff --git a/src/Magnum/Trade/MeshData.h b/src/Magnum/Trade/MeshData.h index 331d81113..41fd1b944 100644 --- a/src/Magnum/Trade/MeshData.h +++ b/src/Magnum/Trade/MeshData.h @@ -2499,7 +2499,11 @@ template Containers::StridedArrayView1D MeshData::mutableIndices() { } #ifndef CORRADE_NO_ASSERT -template bool MeshData::checkVertexFormatCompatibility(const MeshAttributeData& attribute, const char* const prefix) const { +template bool MeshData::checkVertexFormatCompatibility(const MeshAttributeData& attribute, const char* + #ifndef CORRADE_STANDARD_ASSERT + const prefix + #endif +) const { CORRADE_ASSERT(!isVertexFormatImplementationSpecific(attribute._format), prefix << "can't cast data from an implementation-specific vertex format" << reinterpret_cast(vertexFormatUnwrap(attribute._format)), false); CORRADE_ASSERT(Implementation::isVertexFormatCompatible::type>(attribute._format), diff --git a/src/Magnum/Trade/SceneData.h b/src/Magnum/Trade/SceneData.h index 973649be3..43bf62156 100644 --- a/src/Magnum/Trade/SceneData.h +++ b/src/Magnum/Trade/SceneData.h @@ -4162,7 +4162,11 @@ template Containers::StridedArrayView1D SceneData::mutableMapping(co } #ifndef CORRADE_NO_ASSERT -template bool SceneData::checkFieldTypeCompatibility(const SceneFieldData& field, const char* const prefix) const { +template bool SceneData::checkFieldTypeCompatibility(const SceneFieldData& field, const char* + #ifndef CORRADE_STANDARD_ASSERT + const prefix + #endif +) const { CORRADE_ASSERT(Implementation::SceneFieldTypeTraits::type>::isCompatible(field.fieldType()), prefix << field._name << "is" << field.fieldType() << "but requested a type equivalent to" << Implementation::SceneFieldTypeFor::type>::type(), false); CORRADE_ASSERT(!field.fieldArraySize() || std::is_array::value, diff --git a/src/Magnum/Vk/Assert.h b/src/Magnum/Vk/Assert.h index 32d1ba63b..fa6379163 100644 --- a/src/Magnum/Vk/Assert.h +++ b/src/Magnum/Vk/Assert.h @@ -39,11 +39,11 @@ #ifndef CORRADE_STANDARD_ASSERT #include #include - -#include "Magnum/Vk/Result.h" #elif !defined(NDEBUG) #include #endif + +#include "Magnum/Vk/Result.h" #endif /**