From 8616927a750fc523903bc8716fc2fdad0fcd4fbc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Vladim=C3=ADr=20Vondru=C5=A1?= Date: Mon, 7 Nov 2022 15:32:51 +0100 Subject: [PATCH] Don't take an Iterable by value. It's four pointers, twice as much as what would be acceptable. Not sure why this happened, maybe because all those cases used an ArrayView before and so I just changed the type without considering the difference in its size? Unfortunately this change also means a bump in the plugin interface string, thus all scene converter plugins have to be updated as well. --- doc/changelog.dox | 2 +- src/Magnum/GL/AbstractShaderProgram.cpp | 4 +- src/Magnum/GL/AbstractShaderProgram.h | 4 +- src/Magnum/MeshTools/Combine.cpp | 4 +- src/Magnum/MeshTools/Combine.h | 2 +- src/Magnum/MeshTools/Concatenate.cpp | 6 +- src/Magnum/MeshTools/Concatenate.h | 10 +- src/Magnum/MeshTools/InterleaveFlags.h | 6 +- src/Magnum/Trade/AbstractSceneConverter.cpp | 52 ++++---- src/Magnum/Trade/AbstractSceneConverter.h | 122 +++++++++--------- .../Trade/Test/AbstractSceneConverterTest.cpp | 82 ++++++------ src/Magnum/Vk/DescriptorSetLayout.cpp | 2 +- src/Magnum/Vk/DescriptorSetLayoutCreateInfo.h | 2 +- .../AnySceneConverter/AnySceneConverter.cpp | 10 +- .../AnySceneConverter/AnySceneConverter.h | 8 +- 15 files changed, 158 insertions(+), 158 deletions(-) diff --git a/doc/changelog.dox b/doc/changelog.dox index 5bda5ae29..32d7776e7 100644 --- a/doc/changelog.dox +++ b/doc/changelog.dox @@ -474,7 +474,7 @@ See also: - @ref MeshTools::interleavedLayout(const Trade::MeshData&, UnsignedInt, Containers::ArrayView, InterleaveFlags), @ref MeshTools::interleave(const Trade::MeshData&, Containers::ArrayView, InterleaveFlags) and - @ref MeshTools::concatenate(Containers::Iterable, InterleaveFlags) + @ref MeshTools::concatenate(const Containers::Iterable&, InterleaveFlags) optionally take a @ref MeshTools::InterleaveFlags parameter affecting the output, in particular whether to preserve the original interleaved layout. diff --git a/src/Magnum/GL/AbstractShaderProgram.cpp b/src/Magnum/GL/AbstractShaderProgram.cpp index 25acacc37..5e9054d30 100644 --- a/src/Magnum/GL/AbstractShaderProgram.cpp +++ b/src/Magnum/GL/AbstractShaderProgram.cpp @@ -537,7 +537,7 @@ void AbstractShaderProgram::attachShader(Shader& shader) { glAttachShader(_id, shader.id()); } -void AbstractShaderProgram::attachShaders(Containers::Iterable shaders) { +void AbstractShaderProgram::attachShaders(const Containers::Iterable& shaders) { for(Shader& s: shaders) attachShader(s); } @@ -596,7 +596,7 @@ void AbstractShaderProgram::submitLink() { glLinkProgram(_id); } -bool AbstractShaderProgram::checkLink(const Containers::Iterable shaders) { +bool AbstractShaderProgram::checkLink(const Containers::Iterable& shaders) { /* If any compilation failed, abort without even checking the link status. The checkCompile() API is called always, to print also compilation warnings even in case everything still manages to link well. */ diff --git a/src/Magnum/GL/AbstractShaderProgram.h b/src/Magnum/GL/AbstractShaderProgram.h index ee98bb08f..da3b3c953 100644 --- a/src/Magnum/GL/AbstractShaderProgram.h +++ b/src/Magnum/GL/AbstractShaderProgram.h @@ -1415,7 +1415,7 @@ class MAGNUM_GL_EXPORT AbstractShaderProgram: public AbstractObject { * than one shader at once. Other than that there is no other * (performance) difference when using this function. */ - void attachShaders(Containers::Iterable shaders); + void attachShaders(const Containers::Iterable& shaders); /** * @brief Bind an attribute to given location @@ -1584,7 +1584,7 @@ class MAGNUM_GL_EXPORT AbstractShaderProgram: public AbstractObject { */ /* No default argument is provided in order to *really* encourage apps to pass the shaders here */ - bool checkLink(Containers::Iterable shaders); + bool checkLink(const Containers::Iterable& shaders); /** * @brief Get uniform location diff --git a/src/Magnum/MeshTools/Combine.cpp b/src/Magnum/MeshTools/Combine.cpp index 0accd4459..7721ac396 100644 --- a/src/Magnum/MeshTools/Combine.cpp +++ b/src/Magnum/MeshTools/Combine.cpp @@ -43,7 +43,7 @@ Trade::MeshData combineIndexedImplementation( #ifndef CORRADE_NO_ASSERT const char* assertPrefix, #endif - const MeshPrimitive primitive, Containers::Array& combinedIndices, const UnsignedInt indexCount, const UnsignedInt indexStride, const Containers::Iterable data) + const MeshPrimitive primitive, Containers::Array& combinedIndices, const UnsignedInt indexCount, const UnsignedInt indexStride, const Containers::Iterable& data) { /* Calculate attribute count and vertex stride */ UnsignedInt attributeCount = 0; @@ -110,7 +110,7 @@ Trade::MeshData combineIndexedImplementation( } -Trade::MeshData combineIndexedAttributes(const Containers::Iterable data) { +Trade::MeshData combineIndexedAttributes(const Containers::Iterable& data) { CORRADE_ASSERT(!data.isEmpty(), "MeshTools::combineIndexedAttributes(): no meshes passed", (Trade::MeshData{MeshPrimitive{}, 0})); diff --git a/src/Magnum/MeshTools/Combine.h b/src/Magnum/MeshTools/Combine.h index fb0341802..4e37bb30a 100644 --- a/src/Magnum/MeshTools/Combine.h +++ b/src/Magnum/MeshTools/Combine.h @@ -95,7 +95,7 @@ implementation-specific format. @see @ref isMeshIndexTypeImplementationSpecific(), @ref isVertexFormatImplementationSpecific() */ -MAGNUM_MESHTOOLS_EXPORT Trade::MeshData combineIndexedAttributes(const Containers::Iterable data); +MAGNUM_MESHTOOLS_EXPORT Trade::MeshData combineIndexedAttributes(const Containers::Iterable& data); /** @brief Combine per-face attributes into an existing mesh diff --git a/src/Magnum/MeshTools/Concatenate.cpp b/src/Magnum/MeshTools/Concatenate.cpp index 67517cc7f..36e913091 100644 --- a/src/Magnum/MeshTools/Concatenate.cpp +++ b/src/Magnum/MeshTools/Concatenate.cpp @@ -33,7 +33,7 @@ namespace Magnum { namespace MeshTools { namespace Implementation { -std::pair concatenateIndexVertexCount(Containers::Iterable meshes) { +std::pair concatenateIndexVertexCount(const Containers::Iterable& meshes) { UnsignedInt indexCount = 0; UnsignedInt vertexCount = 0; for(const Trade::MeshData& mesh: meshes) { @@ -62,7 +62,7 @@ struct MeshAttributeHash: std::hash&& indexData, const UnsignedInt vertexCount, Containers::Array&& vertexData, Containers::Array&& attributeData, const Containers::Iterable meshes, const char* const assertPrefix) { +Trade::MeshData concatenate(Containers::Array&& indexData, const UnsignedInt vertexCount, Containers::Array&& vertexData, Containers::Array&& attributeData, const Containers::Iterable& meshes, const char* const assertPrefix) { #ifdef CORRADE_NO_ASSERT static_cast(assertPrefix); #endif @@ -189,7 +189,7 @@ Trade::MeshData concatenate(Containers::Array&& indexData, const UnsignedI } -Trade::MeshData concatenate(const Containers::Iterable meshes, const InterleaveFlags flags) { +Trade::MeshData concatenate(const Containers::Iterable& meshes, const InterleaveFlags flags) { CORRADE_ASSERT(!meshes.isEmpty(), "MeshTools::concatenate(): expected at least one mesh", (Trade::MeshData{MeshPrimitive::Points, 0})); diff --git a/src/Magnum/MeshTools/Concatenate.h b/src/Magnum/MeshTools/Concatenate.h index 3f5323baf..dac8b01d8 100644 --- a/src/Magnum/MeshTools/Concatenate.h +++ b/src/Magnum/MeshTools/Concatenate.h @@ -39,8 +39,8 @@ namespace Magnum { namespace MeshTools { namespace Implementation { - MAGNUM_MESHTOOLS_EXPORT std::pair concatenateIndexVertexCount(Containers::Iterable meshes); - MAGNUM_MESHTOOLS_EXPORT Trade::MeshData concatenate(Containers::Array&& indexData, UnsignedInt vertexCount, Containers::Array&& vertexData, Containers::Array&& attributeData, Containers::Iterable meshes, const char* assertPrefix); + MAGNUM_MESHTOOLS_EXPORT std::pair concatenateIndexVertexCount(const Containers::Iterable& meshes); + MAGNUM_MESHTOOLS_EXPORT Trade::MeshData concatenate(Containers::Array&& indexData, UnsignedInt vertexCount, Containers::Array&& vertexData, Containers::Array&& attributeData, const Containers::Iterable& meshes, const char* assertPrefix); } /** @@ -82,7 +82,7 @@ to compress it to a smaller type, if desired. @ref SceneTools::flattenMeshHierarchy2D(), @ref SceneTools::flattenMeshHierarchy3D() */ -MAGNUM_MESHTOOLS_EXPORT Trade::MeshData concatenate(Containers::Iterable meshes, InterleaveFlags flags = InterleaveFlag::PreserveInterleavedAttributes); +MAGNUM_MESHTOOLS_EXPORT Trade::MeshData concatenate(const Containers::Iterable& meshes, InterleaveFlags flags = InterleaveFlag::PreserveInterleavedAttributes); /** @brief Concatenate a list of meshes into a pre-existing destination, enlarging it if necessary @@ -93,14 +93,14 @@ MAGNUM_MESHTOOLS_EXPORT Trade::MeshData concatenate(Containers::Iterable, InterleaveFlags) +Compared to @ref concatenate(const Containers::Iterable&, InterleaveFlags) this function resizes existing index and vertex buffers in @p destination using @ref Containers::arrayResize() and given @p allocator, and reuses its atttribute data array instead of always allocating new ones. Only the attribute layout from @p destination is used, all vertex/index data are taken from @p meshes. Expects that @p meshes contains at least one item. */ -template class Allocator = Containers::ArrayAllocator> void concatenateInto(Trade::MeshData& destination, Containers::Iterable meshes, InterleaveFlags flags = InterleaveFlag::PreserveInterleavedAttributes) { +template class Allocator = Containers::ArrayAllocator> void concatenateInto(Trade::MeshData& destination, const Containers::Iterable& meshes, InterleaveFlags flags = InterleaveFlag::PreserveInterleavedAttributes) { CORRADE_ASSERT(!meshes.isEmpty(), "MeshTools::concatenateInto(): no meshes passed", ); #ifndef CORRADE_NO_ASSERT diff --git a/src/Magnum/MeshTools/InterleaveFlags.h b/src/Magnum/MeshTools/InterleaveFlags.h index d9437980a..295a9b53e 100644 --- a/src/Magnum/MeshTools/InterleaveFlags.h +++ b/src/Magnum/MeshTools/InterleaveFlags.h @@ -43,7 +43,7 @@ namespace Magnum { namespace MeshTools { @see @ref InterleaveFlags, @ref interleavedLayout(const Trade::MeshData&, UnsignedInt, Containers::ArrayView, InterleaveFlags), @ref interleave(const Trade::MeshData&, Containers::ArrayView, InterleaveFlags), - @ref concatenate(Containers::Iterable, InterleaveFlags) + @ref concatenate(const Containers::Iterable&, InterleaveFlags) */ enum class InterleaveFlag: UnsignedInt { /** @@ -72,7 +72,7 @@ enum class InterleaveFlag: UnsignedInt { * * Has no effect when passed to @ref interleavedLayout(const Trade::MeshData&, UnsignedInt, Containers::ArrayView, InterleaveFlags) "interleavedLayout()" * as that function doesn't preserve the index buffer. Has no effect when - * passed to @ref concatenate(Containers::Iterable, InterleaveFlags) "concatenate()" + * passed to @ref concatenate(const Containers::Iterable&, InterleaveFlags) "concatenate()" * as that function allocates a new combined index buffer anyway. * @see @ref isMeshIndexTypeImplementationSpecific() */ @@ -85,7 +85,7 @@ enum class InterleaveFlag: UnsignedInt { @see @ref interleavedLayout(const Trade::MeshData&, UnsignedInt, Containers::ArrayView, InterleaveFlags), @ref interleave(const Trade::MeshData&, Containers::ArrayView, InterleaveFlags), - @ref concatenate(Containers::Iterable, InterleaveFlags) + @ref concatenate(const Containers::Iterable&, InterleaveFlags) */ typedef Containers::EnumSet InterleaveFlags; diff --git a/src/Magnum/Trade/AbstractSceneConverter.cpp b/src/Magnum/Trade/AbstractSceneConverter.cpp index 4cd235c14..2f316647d 100644 --- a/src/Magnum/Trade/AbstractSceneConverter.cpp +++ b/src/Magnum/Trade/AbstractSceneConverter.cpp @@ -209,7 +209,7 @@ struct AbstractSceneConverter::State { Containers::StringView AbstractSceneConverter::pluginInterface() { return /* [interface] */ -"cz.mosra.magnum.Trade.AbstractSceneConverter/0.2"_s +"cz.mosra.magnum.Trade.AbstractSceneConverter/0.2.1"_s /* [interface] */ ; } @@ -824,7 +824,7 @@ bool AbstractSceneConverter::doAdd(const UnsignedInt id, const MeshData& mesh, c return doAdd(id, Containers::Iterable{mesh}, name); } -Containers::Optional AbstractSceneConverter::add(const Containers::Iterable meshLevels, const Containers::StringView name) { +Containers::Optional AbstractSceneConverter::add(const Containers::Iterable& meshLevels, const Containers::StringView name) { CORRADE_ASSERT(features() >= (SceneConverterFeature::AddMeshes|SceneConverterFeature::MeshLevels), "Trade::AbstractSceneConverter::add(): multi-level mesh conversion not supported", {}); CORRADE_ASSERT(_state, @@ -837,11 +837,11 @@ Containers::Optional AbstractSceneConverter::add(const Containers:: return {}; } -Containers::Optional AbstractSceneConverter::add(const Containers::Iterable meshLevels) { +Containers::Optional AbstractSceneConverter::add(const Containers::Iterable& meshLevels) { return add(meshLevels, {}); } -bool AbstractSceneConverter::doAdd(UnsignedInt, Containers::Iterable, Containers::StringView) { +bool AbstractSceneConverter::doAdd(UnsignedInt, const Containers::Iterable&, Containers::StringView) { CORRADE_ASSERT_UNREACHABLE("Trade::AbstractSceneConverter::add(): multi-level mesh conversion advertised but not implemented", {}); } @@ -924,7 +924,7 @@ 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* const messagePrefix, const Containers::Iterable>& imageLevels) { CORRADE_ASSERT(!imageLevels.isEmpty(), messagePrefix << "at least one image level has to be specified", false); @@ -1009,7 +1009,7 @@ Containers::Optional AbstractSceneConverter::add(const CompressedIm return add(image, {}); } -Containers::Optional AbstractSceneConverter::add(const Containers::Iterable imageLevels, const Containers::StringView name) { +Containers::Optional AbstractSceneConverter::add(const Containers::Iterable& imageLevels, const Containers::StringView name) { #ifndef CORRADE_NO_ASSERT /* Explicitly return if checks fail for CORRADE_GRACEFUL_ASSERT builds. Has to be first so we can safely ask for the first item in asserts @@ -1027,15 +1027,15 @@ Containers::Optional AbstractSceneConverter::add(const Containers:: return {}; } -Containers::Optional AbstractSceneConverter::add(const Containers::Iterable imageLevels) { +Containers::Optional AbstractSceneConverter::add(const Containers::Iterable& imageLevels) { return add(imageLevels, {}); } -bool AbstractSceneConverter::doAdd(UnsignedInt, Containers::Iterable, Containers::StringView) { +bool AbstractSceneConverter::doAdd(UnsignedInt, const Containers::Iterable&, Containers::StringView) { CORRADE_ASSERT_UNREACHABLE("Trade::AbstractSceneConverter::add(): multi-level 1D image conversion advertised but not implemented", {}); } -Containers::Optional AbstractSceneConverter::add(const Containers::Iterable imageLevels, const Containers::StringView name) { +Containers::Optional AbstractSceneConverter::add(const Containers::Iterable& imageLevels, const Containers::StringView name) { Containers::Array data{NoInit, imageLevels.size()}; for(std::size_t i = 0; i != imageLevels.size(); ++i) { const ImageView1D& image = imageLevels[i]; @@ -1045,11 +1045,11 @@ Containers::Optional AbstractSceneConverter::add(const Containers:: return add(data, name); } -Containers::Optional AbstractSceneConverter::add(const Containers::Iterable imageLevels) { +Containers::Optional AbstractSceneConverter::add(const Containers::Iterable& imageLevels) { return add(imageLevels, {}); } -Containers::Optional AbstractSceneConverter::add(const Containers::Iterable imageLevels, const Containers::StringView name) { +Containers::Optional AbstractSceneConverter::add(const Containers::Iterable& imageLevels, const Containers::StringView name) { Containers::Array data{NoInit, imageLevels.size()}; for(std::size_t i = 0; i != imageLevels.size(); ++i) { const CompressedImageView1D& image = imageLevels[i]; @@ -1059,7 +1059,7 @@ Containers::Optional AbstractSceneConverter::add(const Containers:: return add(data, name); } -Containers::Optional AbstractSceneConverter::add(const Containers::Iterable imageLevels) { +Containers::Optional AbstractSceneConverter::add(const Containers::Iterable& imageLevels) { return add(imageLevels, {}); } @@ -1110,7 +1110,7 @@ Containers::Optional AbstractSceneConverter::add(const CompressedIm return add(image, {}); } -Containers::Optional AbstractSceneConverter::add(const Containers::Iterable imageLevels, const Containers::StringView name) { +Containers::Optional AbstractSceneConverter::add(const Containers::Iterable& imageLevels, const Containers::StringView name) { #ifndef CORRADE_NO_ASSERT /* Explicitly return if checks fail for CORRADE_GRACEFUL_ASSERT builds. Has to be first so we can safely ask for the first item in asserts @@ -1128,15 +1128,15 @@ Containers::Optional AbstractSceneConverter::add(const Containers:: return {}; } -Containers::Optional AbstractSceneConverter::add(const Containers::Iterable imageLevels) { +Containers::Optional AbstractSceneConverter::add(const Containers::Iterable& imageLevels) { return add(imageLevels, {}); } -bool AbstractSceneConverter::doAdd(UnsignedInt, Containers::Iterable, Containers::StringView) { +bool AbstractSceneConverter::doAdd(UnsignedInt, const Containers::Iterable&, Containers::StringView) { CORRADE_ASSERT_UNREACHABLE("Trade::AbstractSceneConverter::add(): multi-level 2D image conversion advertised but not implemented", {}); } -Containers::Optional AbstractSceneConverter::add(const Containers::Iterable imageLevels, const Containers::StringView name) { +Containers::Optional AbstractSceneConverter::add(const Containers::Iterable& imageLevels, const Containers::StringView name) { Containers::Array data{NoInit, imageLevels.size()}; for(std::size_t i = 0; i != imageLevels.size(); ++i) { const ImageView2D& image = imageLevels[i]; @@ -1146,11 +1146,11 @@ Containers::Optional AbstractSceneConverter::add(const Containers:: return add(data, name); } -Containers::Optional AbstractSceneConverter::add(const Containers::Iterable imageLevels) { +Containers::Optional AbstractSceneConverter::add(const Containers::Iterable& imageLevels) { return add(imageLevels, {}); } -Containers::Optional AbstractSceneConverter::add(const Containers::Iterable imageLevels, const Containers::StringView name) { +Containers::Optional AbstractSceneConverter::add(const Containers::Iterable& imageLevels, const Containers::StringView name) { Containers::Array data{NoInit, imageLevels.size()}; for(std::size_t i = 0; i != imageLevels.size(); ++i) { const CompressedImageView2D& image = imageLevels[i]; @@ -1160,7 +1160,7 @@ Containers::Optional AbstractSceneConverter::add(const Containers:: return add(data, name); } -Containers::Optional AbstractSceneConverter::add(const Containers::Iterable imageLevels) { +Containers::Optional AbstractSceneConverter::add(const Containers::Iterable& imageLevels) { return add(imageLevels, {}); } @@ -1211,7 +1211,7 @@ Containers::Optional AbstractSceneConverter::add(const CompressedIm return add(image, {}); } -Containers::Optional AbstractSceneConverter::add(const Containers::Iterable imageLevels, const Containers::StringView name) { +Containers::Optional AbstractSceneConverter::add(const Containers::Iterable& imageLevels, const Containers::StringView name) { #ifndef CORRADE_NO_ASSERT /* Explicitly return if checks fail for CORRADE_GRACEFUL_ASSERT builds. Has to be first so we can safely ask for the first item in asserts @@ -1229,15 +1229,15 @@ Containers::Optional AbstractSceneConverter::add(const Containers:: return {}; } -Containers::Optional AbstractSceneConverter::add(const Containers::Iterable imageLevels) { +Containers::Optional AbstractSceneConverter::add(const Containers::Iterable& imageLevels) { return add(imageLevels, {}); } -bool AbstractSceneConverter::doAdd(UnsignedInt, Containers::Iterable, Containers::StringView) { +bool AbstractSceneConverter::doAdd(UnsignedInt, const Containers::Iterable&, Containers::StringView) { CORRADE_ASSERT_UNREACHABLE("Trade::AbstractSceneConverter::add(): multi-level 3D image conversion advertised but not implemented", {}); } -Containers::Optional AbstractSceneConverter::add(const Containers::Iterable imageLevels, const Containers::StringView name) { +Containers::Optional AbstractSceneConverter::add(const Containers::Iterable& imageLevels, const Containers::StringView name) { Containers::Array data{NoInit, imageLevels.size()}; for(std::size_t i = 0; i != imageLevels.size(); ++i) { const ImageView3D& image = imageLevels[i]; @@ -1247,11 +1247,11 @@ Containers::Optional AbstractSceneConverter::add(const Containers:: return add(data, name); } -Containers::Optional AbstractSceneConverter::add(const Containers::Iterable imageLevels) { +Containers::Optional AbstractSceneConverter::add(const Containers::Iterable& imageLevels) { return add(imageLevels, {}); } -Containers::Optional AbstractSceneConverter::add(const Containers::Iterable imageLevels, const Containers::StringView name) { +Containers::Optional AbstractSceneConverter::add(const Containers::Iterable& imageLevels, const Containers::StringView name) { Containers::Array data{NoInit, imageLevels.size()}; for(std::size_t i = 0; i != imageLevels.size(); ++i) { const CompressedImageView3D& image = imageLevels[i]; @@ -1261,7 +1261,7 @@ Containers::Optional AbstractSceneConverter::add(const Containers:: return add(data, name); } -Containers::Optional AbstractSceneConverter::add(const Containers::Iterable imageLevels) { +Containers::Optional AbstractSceneConverter::add(const Containers::Iterable& imageLevels) { return add(imageLevels, {}); } diff --git a/src/Magnum/Trade/AbstractSceneConverter.h b/src/Magnum/Trade/AbstractSceneConverter.h index 81a17bb76..d7e2bb61c 100644 --- a/src/Magnum/Trade/AbstractSceneConverter.h +++ b/src/Magnum/Trade/AbstractSceneConverter.h @@ -241,7 +241,7 @@ enum class SceneConverterFeature: UnsignedInt { /** * Add multiple mesh levels with - * @ref AbstractSceneConverter::add(Containers::Iterable, Containers::StringView) + * @ref AbstractSceneConverter::add(const Containers::Iterable&, Containers::StringView) * if @ref SceneConverterFeature::AddMeshes is also supported. * @m_since_latest */ @@ -249,13 +249,13 @@ enum class SceneConverterFeature: UnsignedInt { /** * Add multiple image levels with - * @ref AbstractSceneConverter::add(Containers::Iterable, Containers::StringView) + * @ref AbstractSceneConverter::add(const Containers::Iterable&, Containers::StringView) * if @ref SceneConverterFeature::AddImages1D or * @relativeref{SceneConverterFeature,AddCompressedImages1D} is also - * supported; with @ref AbstractSceneConverter::add(Containers::Iterable, Containers::StringView) + * supported; with @ref AbstractSceneConverter::add(const Containers::Iterable&, Containers::StringView) * if @ref SceneConverterFeature::AddImages2D or * @relativeref{SceneConverterFeature,AddCompressedImages2D} is also - * supported; or with @ref AbstractSceneConverter::add(Containers::Iterable, Containers::StringView) + * supported; or with @ref AbstractSceneConverter::add(const Containers::Iterable&, Containers::StringView) * if @ref SceneConverterFeature::AddImages3D or * @relativeref{SceneConverterFeature,AddCompressedImages3D} is also * supported. @@ -429,7 +429,7 @@ enum class SceneContent: UnsignedInt { /** * Multiple mesh levels. For every mesh gathers @ref MeshData from all * @ref AbstractImporter::meshLevelCount() and passes them to - * @ref AbstractSceneConverter::add(Containers::Iterable, Containers::StringView) + * @ref AbstractSceneConverter::add(const Containers::Iterable&, Containers::StringView) * instead of passing just the first level to * @ref AbstractSceneConverter::add(const MeshData&, Containers::StringView). * @see @ref SceneContent::Meshes @@ -442,9 +442,9 @@ enum class SceneContent: UnsignedInt { * @ref AbstractImporter::image1DLevelCount() / * @relativeref{AbstractImporter,image2DLevelCount()} / * @relativeref{AbstractImporter,image3DLevelCount()} and passes them to - * @ref AbstractSceneConverter::add(Containers::Iterable, Containers::StringView) / - * @ref AbstractSceneConverter::add(Containers::Iterable, Containers::StringView) "add(Containers::Iterable, Containers::StringView)" / - * @ref AbstractSceneConverter::add(Containers::Iterable, Containers::StringView) "add(Containers::Iterable, Containers::StringView)" + * @ref AbstractSceneConverter::add(const Containers::Iterable&, Containers::StringView) / + * @ref AbstractSceneConverter::add(const Containers::Iterable&, Containers::StringView) "add(const Containers::Iterable&, Containers::StringView)" / + * @ref AbstractSceneConverter::add(const Containers::Iterable&, Containers::StringView) "add(const Containers::Iterable&, Containers::StringView)" * instead of just passing the first level to * * @ref AbstractSceneConverter::add(const ImageData1D&, Containers::StringView) / @@ -744,7 +744,7 @@ checked by the implementation: (if any) was aborted with @ref doAbort(). - The @ref doAdd() and various `doSet*()` functions are called only if a corresponding @ref SceneConverterFeature is supported. -- The @ref doAdd(UnsignedInt, Containers::Iterable, Containers::StringView) +- The @ref doAdd(UnsignedInt, const Containers::Iterable&, Containers::StringView) function is called only if the list has at least one mesh - All @ref doAdd() functions taking a single image are called only if the image has a non-zero size in all dimensions and the data is not @@ -1389,7 +1389,7 @@ class MAGNUM_TRADE_EXPORT AbstractSceneConverter: public PluginManager::Abstract * * Count of meshes successfully added with * @ref add(const MeshData&, Containers::StringView) or - * @ref add(Containers::Iterable, Containers::StringView) + * @ref add(const Containers::Iterable&, Containers::StringView) * since the initial @ref begin(), @ref beginData() or @ref beginFile() * call. Expects that a conversion is currently in progress. If * @ref SceneConverterFeature::AddMeshes is not supported and only the @@ -1460,10 +1460,10 @@ class MAGNUM_TRADE_EXPORT AbstractSceneConverter: public PluginManager::Abstract * @ref setMeshAttributeName() */ #ifdef DOXYGEN_GENERATING_OUTPUT - Containers::Optional add(Containers::Iterable meshLevels, Containers::StringView name = {}); + Containers::Optional add(const Containers::Iterable& meshLevels, Containers::StringView name = {}); #else - Containers::Optional add(Containers::Iterable meshLevels, Containers::StringView name); - Containers::Optional add(Containers::Iterable meshLevels); + Containers::Optional add(const Containers::Iterable& meshLevels, Containers::StringView name); + Containers::Optional add(const Containers::Iterable& meshLevels); #endif /** @@ -1577,7 +1577,7 @@ class MAGNUM_TRADE_EXPORT AbstractSceneConverter: public PluginManager::Abstract * * Count of images successfully added with * @ref add(const ImageData1D&, Containers::StringView) or - * @ref add(Containers::Iterable, Containers::StringView) + * @ref add(const Containers::Iterable&, Containers::StringView) * and overloads since the initial @ref begin(), @ref beginData() or * @ref beginFile() call. Expects that a conversion is currently in * progress. If neither @ref SceneConverterFeature::AddImages1D nor @@ -1663,10 +1663,10 @@ class MAGNUM_TRADE_EXPORT AbstractSceneConverter: public PluginManager::Abstract * @ref ImageData::isCompressed() */ #ifdef DOXYGEN_GENERATING_OUTPUT - Containers::Optional add(Containers::Iterable imageLevels, Containers::StringView name = {}); + Containers::Optional add(const Containers::Iterable& imageLevels, Containers::StringView name = {}); #else - Containers::Optional add(Containers::Iterable imageLevels, Containers::StringView name); - Containers::Optional add(Containers::Iterable imageLevels); + Containers::Optional add(const Containers::Iterable& imageLevels, Containers::StringView name); + Containers::Optional add(const Containers::Iterable& imageLevels); #endif /** @@ -1680,10 +1680,10 @@ class MAGNUM_TRADE_EXPORT AbstractSceneConverter: public PluginManager::Abstract allow passing an array of Reference, fixes the ambiguity. */ #ifdef DOXYGEN_GENERATING_OUTPUT - Containers::Optional add(Containers::Iterable imageLevels, Containers::StringView name = {}); + Containers::Optional add(const Containers::Iterable& imageLevels, Containers::StringView name = {}); #else - Containers::Optional add(Containers::Iterable imageLevels, Containers::StringView name); - Containers::Optional add(Containers::Iterable imageLevels); + Containers::Optional add(const Containers::Iterable& imageLevels, Containers::StringView name); + Containers::Optional add(const Containers::Iterable& imageLevels); #endif /** @@ -1697,10 +1697,10 @@ class MAGNUM_TRADE_EXPORT AbstractSceneConverter: public PluginManager::Abstract allow passing an array of Reference, fixes the ambiguity. */ #ifdef DOXYGEN_GENERATING_OUTPUT - Containers::Optional add(Containers::Iterable imageLevels, Containers::StringView name = {}); + Containers::Optional add(const Containers::Iterable& imageLevels, Containers::StringView name = {}); #else - Containers::Optional add(Containers::Iterable imageLevels, Containers::StringView name); - Containers::Optional add(Containers::Iterable imageLevels); + Containers::Optional add(const Containers::Iterable& imageLevels, Containers::StringView name); + Containers::Optional add(const Containers::Iterable& imageLevels); #endif /** @@ -1709,7 +1709,7 @@ class MAGNUM_TRADE_EXPORT AbstractSceneConverter: public PluginManager::Abstract * * Count of images successfully added with * @ref add(const ImageData2D&, Containers::StringView) or - * @ref add(Containers::Iterable, Containers::StringView) + * @ref add(const Containers::Iterable&, Containers::StringView) * and overloads since the initial @ref begin(), @ref beginData() or * @ref beginFile() call. Expects that a conversion is currently in * progress. If neither @ref SceneConverterFeature::AddImages2D nor @@ -1794,10 +1794,10 @@ class MAGNUM_TRADE_EXPORT AbstractSceneConverter: public PluginManager::Abstract * @see @ref isConverting(), @ref features() */ #ifdef DOXYGEN_GENERATING_OUTPUT - Containers::Optional add(Containers::Iterable imageLevels, Containers::StringView name = {}); + Containers::Optional add(const Containers::Iterable& imageLevels, Containers::StringView name = {}); #else - Containers::Optional add(Containers::Iterable imageLevels, Containers::StringView name); - Containers::Optional add(Containers::Iterable imageLevels); + Containers::Optional add(const Containers::Iterable& imageLevels, Containers::StringView name); + Containers::Optional add(const Containers::Iterable& imageLevels); #endif /** @@ -1811,10 +1811,10 @@ class MAGNUM_TRADE_EXPORT AbstractSceneConverter: public PluginManager::Abstract allow passing an array of Reference, fixes the ambiguity. */ #ifdef DOXYGEN_GENERATING_OUTPUT - Containers::Optional add(Containers::Iterable imageLevels, Containers::StringView name = {}); + Containers::Optional add(const Containers::Iterable& imageLevels, Containers::StringView name = {}); #else - Containers::Optional add(Containers::Iterable imageLevels, Containers::StringView name); - Containers::Optional add(Containers::Iterable imageLevels); + Containers::Optional add(const Containers::Iterable& imageLevels, Containers::StringView name); + Containers::Optional add(const Containers::Iterable& imageLevels); #endif /** @@ -1828,10 +1828,10 @@ class MAGNUM_TRADE_EXPORT AbstractSceneConverter: public PluginManager::Abstract allow passing an array of Reference, fixes the ambiguity. */ #ifdef DOXYGEN_GENERATING_OUTPUT - Containers::Optional add(Containers::Iterable imageLevels, Containers::StringView name = {}); + Containers::Optional add(const Containers::Iterable& imageLevels, Containers::StringView name = {}); #else - Containers::Optional add(Containers::Iterable imageLevels, Containers::StringView name); - Containers::Optional add(Containers::Iterable imageLevels); + Containers::Optional add(const Containers::Iterable& imageLevels, Containers::StringView name); + Containers::Optional add(const Containers::Iterable& imageLevels); #endif /** @@ -1840,7 +1840,7 @@ class MAGNUM_TRADE_EXPORT AbstractSceneConverter: public PluginManager::Abstract * * Count of images successfully added with * @ref add(const ImageData3D&, Containers::StringView) or - * @ref add(Containers::Iterable, Containers::StringView) + * @ref add(const Containers::Iterable&, Containers::StringView) * and overloads since the initial @ref begin(), @ref beginData() or * @ref beginFile() call. Expects that a conversion is currently in * progress. If neither @ref SceneConverterFeature::AddImages3D nor @@ -1925,10 +1925,10 @@ class MAGNUM_TRADE_EXPORT AbstractSceneConverter: public PluginManager::Abstract * @see @ref isConverting(), @ref features() */ #ifdef DOXYGEN_GENERATING_OUTPUT - Containers::Optional add(Containers::Iterable imageLevels, Containers::StringView name = {}); + Containers::Optional add(const Containers::Iterable& imageLevels, Containers::StringView name = {}); #else - Containers::Optional add(Containers::Iterable imageLevels, Containers::StringView name); - Containers::Optional add(Containers::Iterable imageLevels); + Containers::Optional add(const Containers::Iterable& imageLevels, Containers::StringView name); + Containers::Optional add(const Containers::Iterable& imageLevels); #endif /** @@ -1942,10 +1942,10 @@ class MAGNUM_TRADE_EXPORT AbstractSceneConverter: public PluginManager::Abstract allow passing an array of Reference, fixes the ambiguity. */ #ifdef DOXYGEN_GENERATING_OUTPUT - Containers::Optional add(Containers::Iterable imageLevels, Containers::StringView name = {}); + Containers::Optional add(const Containers::Iterable& imageLevels, Containers::StringView name = {}); #else - Containers::Optional add(Containers::Iterable imageLevels, Containers::StringView name); - Containers::Optional add(Containers::Iterable imageLevels); + Containers::Optional add(const Containers::Iterable& imageLevels, Containers::StringView name); + Containers::Optional add(const Containers::Iterable& imageLevels); #endif /** @@ -1959,10 +1959,10 @@ class MAGNUM_TRADE_EXPORT AbstractSceneConverter: public PluginManager::Abstract allow passing an array of Reference, fixes the ambiguity. */ #ifdef DOXYGEN_GENERATING_OUTPUT - Containers::Optional add(Containers::Iterable imageLevels, Containers::StringView name = {}); + Containers::Optional add(const Containers::Iterable& imageLevels, Containers::StringView name = {}); #else - Containers::Optional add(Containers::Iterable imageLevels, Containers::StringView name); - Containers::Optional add(Containers::Iterable imageLevels); + Containers::Optional add(const Containers::Iterable& imageLevels, Containers::StringView name); + Containers::Optional add(const Containers::Iterable& imageLevels); #endif /** @@ -2260,7 +2260,7 @@ class MAGNUM_TRADE_EXPORT AbstractSceneConverter: public PluginManager::Abstract * * If @ref SceneConverterFeature::AddMeshes together with * @relativeref{SceneConverterFeature,MeshLevels} is supported, default - * implementation calls @ref doAdd(UnsignedInt, Containers::Iterable, Containers::StringView) + * implementation calls @ref doAdd(UnsignedInt, const Containers::Iterable&, Containers::StringView) * with just the single @p mesh. * * Otherwise, if @ref SceneConverterFeature::ConvertMesh, @@ -2283,13 +2283,13 @@ class MAGNUM_TRADE_EXPORT AbstractSceneConverter: public PluginManager::Abstract virtual bool doAdd(UnsignedInt id, const MeshData& mesh, Containers::StringView name); /** - * @brief Implementation for @ref add(Containers::Iterable, Containers::StringView) + * @brief Implementation for @ref add(const Containers::Iterable&, Containers::StringView) * @m_since_latest * * The @p id is equal to @ref meshCount() at the time this function * is called. */ - virtual bool doAdd(UnsignedInt id, Containers::Iterable meshLevels, Containers::StringView name); + virtual bool doAdd(UnsignedInt id, const Containers::Iterable& meshLevels, Containers::StringView name); /** * @brief Implementation for @ref setMeshAttributeName() @@ -2330,22 +2330,22 @@ class MAGNUM_TRADE_EXPORT AbstractSceneConverter: public PluginManager::Abstract * @ref ImageData1D instance. * * If @ref SceneConverterFeature::ImageLevels is supported, default - * implementation calls @ref doAdd(UnsignedInt, Containers::Iterable, Containers::StringView) + * implementation calls @ref doAdd(UnsignedInt, const Containers::Iterable&, Containers::StringView) * with just the single @p image. */ virtual bool doAdd(UnsignedInt id, const ImageData1D& image, Containers::StringView name); /** - * @brief Implementation for @ref add(Containers::Iterable, Containers::StringView) + * @brief Implementation for @ref add(const Containers::Iterable&, Containers::StringView) * @m_since_latest * * The @p id is equal to @ref image1DCount() at the time this function - * is called. If @ref add(Containers::Iterable, Containers::StringView) - * or @ref add(Containers::Iterable, Containers::StringView) + * is called. If @ref add(const Containers::Iterable&, Containers::StringView) + * or @ref add(const Containers::Iterable&, Containers::StringView) * was called, receives the views wrapped in non-owning * @ref ImageData1D instances. */ - virtual bool doAdd(UnsignedInt id, Containers::Iterable imageLevels, Containers::StringView name); + virtual bool doAdd(UnsignedInt id, const Containers::Iterable& imageLevels, Containers::StringView name); /** * @brief Implementation for @ref add(const ImageData2D&, Containers::StringView) @@ -2358,22 +2358,22 @@ class MAGNUM_TRADE_EXPORT AbstractSceneConverter: public PluginManager::Abstract * @ref ImageData2D instance. * * If @ref SceneConverterFeature::ImageLevels is supported, default - * implementation calls @ref doAdd(UnsignedInt, Containers::Iterable, Containers::StringView) + * implementation calls @ref doAdd(UnsignedInt, const Containers::Iterable&, Containers::StringView) * with just the single @p image. */ virtual bool doAdd(UnsignedInt id, const ImageData2D& image, Containers::StringView name); /** - * @brief Implementation for @ref add(Containers::Iterable, Containers::StringView) + * @brief Implementation for @ref add(const Containers::Iterable&, Containers::StringView) * @m_since_latest * * The @p id is equal to @ref image2DCount() at the time this function - * is called. If @ref add(Containers::Iterable, Containers::StringView) - * or @ref add(Containers::Iterable, Containers::StringView) + * is called. If @ref add(const Containers::Iterable&, Containers::StringView) + * or @ref add(const Containers::Iterable&, Containers::StringView) * was called, receives the views wrapped in non-owning * @ref ImageData2D instances. */ - virtual bool doAdd(UnsignedInt id, Containers::Iterable imageLevels, Containers::StringView name); + virtual bool doAdd(UnsignedInt id, const Containers::Iterable& imageLevels, Containers::StringView name); /** * @brief Implementation for @ref add(const ImageData3D&, Containers::StringView) @@ -2386,22 +2386,22 @@ class MAGNUM_TRADE_EXPORT AbstractSceneConverter: public PluginManager::Abstract * @ref ImageData3D instance. * * If @ref SceneConverterFeature::ImageLevels is supported, default - * implementation calls @ref doAdd(UnsignedInt, Containers::Iterable, Containers::StringView) + * implementation calls @ref doAdd(UnsignedInt, const Containers::Iterable&, Containers::StringView) * with just the single @p image. */ virtual bool doAdd(UnsignedInt id, const ImageData3D& image, Containers::StringView name); /** - * @brief Implementation for @ref add(Containers::Iterable, Containers::StringView) + * @brief Implementation for @ref add(const Containers::Iterable&, Containers::StringView) * @m_since_latest * * The @p id is equal to @ref image3DCount() at the time this function - * is called. If @ref add(Containers::Iterable, Containers::StringView) - * or @ref add(Containers::Iterable, Containers::StringView) + * is called. If @ref add(const Containers::Iterable&, Containers::StringView) + * or @ref add(const Containers::Iterable&, Containers::StringView) * was called, receives the views wrapped in non-owning * @ref ImageData3D instances. */ - virtual bool doAdd(UnsignedInt id, Containers::Iterable imageLevels, Containers::StringView name); + virtual bool doAdd(UnsignedInt id, const Containers::Iterable& imageLevels, Containers::StringView name); /* Called from addImporterContents() and addSupportedImporterContents() */ MAGNUM_TRADE_LOCAL bool addImporterContentsInternal(AbstractImporter& importer, SceneContents contents, bool noLevelsIfUnsupported); diff --git a/src/Magnum/Trade/Test/AbstractSceneConverterTest.cpp b/src/Magnum/Trade/Test/AbstractSceneConverterTest.cpp index 8ecc4803c..8c826b819 100644 --- a/src/Magnum/Trade/Test/AbstractSceneConverterTest.cpp +++ b/src/Magnum/Trade/Test/AbstractSceneConverterTest.cpp @@ -3869,7 +3869,7 @@ void AbstractSceneConverterTest::addMeshLevels() { bool doBegin() override { return true; } - bool doAdd(UnsignedInt id, Containers::Iterable meshLevels, Containers::StringView name) override { + bool doAdd(UnsignedInt id, const Containers::Iterable& meshLevels, Containers::StringView name) override { /* Camera count should not be increased before the function returns */ CORRADE_COMPARE(id, meshCount()); @@ -3912,7 +3912,7 @@ void AbstractSceneConverterTest::addMeshLevelsFailed() { bool doBegin() override { return true; } - bool doAdd(UnsignedInt, Containers::Iterable, Containers::StringView) override { + bool doAdd(UnsignedInt, const Containers::Iterable&, Containers::StringView) override { return false; } } converter; @@ -3991,7 +3991,7 @@ void AbstractSceneConverterTest::addMeshThroughLevels() { bool doBegin() override { return true; } - bool doAdd(UnsignedInt, Containers::Iterable meshLevels, Containers::StringView name) override { + bool doAdd(UnsignedInt, const Containers::Iterable& meshLevels, Containers::StringView name) override { CORRADE_COMPARE(name, "hello"); CORRADE_COMPARE(meshLevels.size(), 1); CORRADE_COMPARE(meshLevels[0].importerState(), reinterpret_cast(0xdeadbeef)); @@ -4830,7 +4830,7 @@ void AbstractSceneConverterTest::addImageLevels1D() { bool doBegin() override { return true; } - bool doAdd(UnsignedInt id, Containers::Iterable imageLevels, Containers::StringView name) override { + bool doAdd(UnsignedInt id, const Containers::Iterable& imageLevels, Containers::StringView name) override { /* Camera count should not be increased before the function returns */ CORRADE_COMPARE(id, image1DCount()); @@ -4876,7 +4876,7 @@ void AbstractSceneConverterTest::addImageLevels1DView() { bool doBegin() override { return true; } - bool doAdd(UnsignedInt, Containers::Iterable imageLevels, Containers::StringView name) override { + bool doAdd(UnsignedInt, const Containers::Iterable& imageLevels, Containers::StringView name) override { CORRADE_COMPARE(name, "hello"); CORRADE_COMPARE(imageLevels.size(), 2); CORRADE_VERIFY(!imageLevels[1].isCompressed()); @@ -4915,7 +4915,7 @@ void AbstractSceneConverterTest::addImageLevels1DCompressedView() { bool doBegin() override { return true; } - bool doAdd(UnsignedInt, Containers::Iterable imageLevels, Containers::StringView name) override { + bool doAdd(UnsignedInt, const Containers::Iterable& imageLevels, Containers::StringView name) override { CORRADE_COMPARE(name, "hello"); CORRADE_COMPARE(imageLevels.size(), 2); CORRADE_VERIFY(imageLevels[1].isCompressed()); @@ -4955,7 +4955,7 @@ void AbstractSceneConverterTest::addImageLevels1DFailed() { bool doBegin() override { return true; } - bool doAdd(UnsignedInt, Containers::Iterable, Containers::StringView) override { + bool doAdd(UnsignedInt, const Containers::Iterable&, Containers::StringView) override { return false; } } converter; @@ -5048,7 +5048,7 @@ void AbstractSceneConverterTest::addImageLevels2D() { bool doBegin() override { return true; } - bool doAdd(UnsignedInt id, Containers::Iterable imageLevels, Containers::StringView name) override { + bool doAdd(UnsignedInt id, const Containers::Iterable& imageLevels, Containers::StringView name) override { /* Camera count should not be increased before the function returns */ CORRADE_COMPARE(id, image2DCount()); @@ -5094,7 +5094,7 @@ void AbstractSceneConverterTest::addImageLevels2DView() { bool doBegin() override { return true; } - bool doAdd(UnsignedInt, Containers::Iterable imageLevels, Containers::StringView name) override { + bool doAdd(UnsignedInt, const Containers::Iterable& imageLevels, Containers::StringView name) override { CORRADE_COMPARE(name, "hello"); CORRADE_COMPARE(imageLevels.size(), 2); CORRADE_VERIFY(!imageLevels[1].isCompressed()); @@ -5133,7 +5133,7 @@ void AbstractSceneConverterTest::addImageLevels2DCompressedView() { bool doBegin() override { return true; } - bool doAdd(UnsignedInt, Containers::Iterable imageLevels, Containers::StringView name) override { + bool doAdd(UnsignedInt, const Containers::Iterable& imageLevels, Containers::StringView name) override { CORRADE_COMPARE(name, "hello"); CORRADE_COMPARE(imageLevels.size(), 2); CORRADE_VERIFY(imageLevels[1].isCompressed()); @@ -5173,7 +5173,7 @@ void AbstractSceneConverterTest::addImageLevels2DFailed() { bool doBegin() override { return true; } - bool doAdd(UnsignedInt, Containers::Iterable, Containers::StringView) override { + bool doAdd(UnsignedInt, const Containers::Iterable&, Containers::StringView) override { return false; } } converter; @@ -5455,7 +5455,7 @@ void AbstractSceneConverterTest::addImageLevels3D() { bool doBegin() override { return true; } - bool doAdd(UnsignedInt id, Containers::Iterable imageLevels, Containers::StringView name) override { + bool doAdd(UnsignedInt id, const Containers::Iterable& imageLevels, Containers::StringView name) override { /* Camera count should not be increased before the function returns */ CORRADE_COMPARE(id, image3DCount()); @@ -5501,7 +5501,7 @@ void AbstractSceneConverterTest::addImageLevels3DView() { bool doBegin() override { return true; } - bool doAdd(UnsignedInt, Containers::Iterable imageLevels, Containers::StringView name) override { + bool doAdd(UnsignedInt, const Containers::Iterable& imageLevels, Containers::StringView name) override { CORRADE_COMPARE(name, "hello"); CORRADE_COMPARE(imageLevels.size(), 2); CORRADE_VERIFY(!imageLevels[1].isCompressed()); @@ -5540,7 +5540,7 @@ void AbstractSceneConverterTest::addImageLevels3DCompressedView() { bool doBegin() override { return true; } - bool doAdd(UnsignedInt, Containers::Iterable imageLevels, Containers::StringView name) override { + bool doAdd(UnsignedInt, const Containers::Iterable& imageLevels, Containers::StringView name) override { CORRADE_COMPARE(name, "hello"); CORRADE_COMPARE(imageLevels.size(), 2); CORRADE_VERIFY(imageLevels[1].isCompressed()); @@ -5580,7 +5580,7 @@ void AbstractSceneConverterTest::addImageLevels3DFailed() { bool doBegin() override { return true; } - bool doAdd(UnsignedInt, Containers::Iterable, Containers::StringView) override { + bool doAdd(UnsignedInt, const Containers::Iterable&, Containers::StringView) override { return false; } } converter; @@ -5673,7 +5673,7 @@ void AbstractSceneConverterTest::addImage1DThroughLevels() { bool doBegin() override { return true; } - bool doAdd(UnsignedInt, Containers::Iterable imageLevels, Containers::StringView name) override { + bool doAdd(UnsignedInt, const Containers::Iterable& imageLevels, Containers::StringView name) override { CORRADE_COMPARE(name, "hello"); CORRADE_COMPARE(imageLevels.size(), 1); CORRADE_COMPARE(imageLevels[0].importerState(), reinterpret_cast(0xdeadbeef)); @@ -5703,7 +5703,7 @@ void AbstractSceneConverterTest::addImage2DThroughLevels() { bool doBegin() override { return true; } - bool doAdd(UnsignedInt, Containers::Iterable imageLevels, Containers::StringView name) override { + bool doAdd(UnsignedInt, const Containers::Iterable& imageLevels, Containers::StringView name) override { CORRADE_COMPARE(name, "hello"); CORRADE_COMPARE(imageLevels.size(), 1); CORRADE_COMPARE(imageLevels[0].importerState(), reinterpret_cast(0xdeadbeef)); @@ -5733,7 +5733,7 @@ void AbstractSceneConverterTest::addImage3DThroughLevels() { bool doBegin() override { return true; } - bool doAdd(UnsignedInt, Containers::Iterable imageLevels, Containers::StringView name) override { + bool doAdd(UnsignedInt, const Containers::Iterable& imageLevels, Containers::StringView name) override { CORRADE_COMPARE(name, "hello"); CORRADE_COMPARE(imageLevels.size(), 1); CORRADE_COMPARE(imageLevels[0].importerState(), reinterpret_cast(0xdeadbeef)); @@ -6037,7 +6037,7 @@ void AbstractSceneConverterTest::addImporterContents() { Debug{} << "Adding mesh" << id << "named" << name << "with" << data.importerState(); return true; } - bool doAdd(UnsignedInt id, Containers::Iterable levels, Containers::StringView name) override { + bool doAdd(UnsignedInt id, const Containers::Iterable& levels, Containers::StringView name) override { for(std::size_t i = 0; i != levels.size(); ++i) Debug{} << "Adding mesh" << id << "level" << i << "named" << name << "with" << levels[i].importerState(); return true; @@ -6056,7 +6056,7 @@ void AbstractSceneConverterTest::addImporterContents() { Debug{} << "Adding 1D image" << id << "named" << name << "with" << data.importerState(); return true; } - bool doAdd(UnsignedInt id, Containers::Iterable levels, Containers::StringView name) override { + bool doAdd(UnsignedInt id, const Containers::Iterable& levels, Containers::StringView name) override { for(std::size_t i = 0; i != levels.size(); ++i) Debug{} << "Adding 1D image" << id << "level" << i << "named" << name << "with" << levels[i].importerState(); return true; @@ -6066,7 +6066,7 @@ void AbstractSceneConverterTest::addImporterContents() { Debug{} << "Adding 2D image" << id << "named" << name << "with" << data.importerState(); return true; } - bool doAdd(UnsignedInt id, Containers::Iterable levels, Containers::StringView name) override { + bool doAdd(UnsignedInt id, const Containers::Iterable& levels, Containers::StringView name) override { for(std::size_t i = 0; i != levels.size(); ++i) Debug{} << "Adding 2D image" << id << "level" << i << "named" << name << "with" << levels[i].importerState(); return true; @@ -6076,7 +6076,7 @@ void AbstractSceneConverterTest::addImporterContents() { Debug{} << "Adding 3D image" << id << "named" << name << "with" << data.importerState(); return true; } - bool doAdd(UnsignedInt id, Containers::Iterable levels, Containers::StringView name) override { + bool doAdd(UnsignedInt id, const Containers::Iterable& levels, Containers::StringView name) override { for(std::size_t i = 0; i != levels.size(); ++i) Debug{} << "Adding 3D image" << id << "level" << i << "named" << name << "with" << levels[i].importerState(); return true; @@ -6193,7 +6193,7 @@ void AbstractSceneConverterTest::addImporterContentsCustomMeshAttributes() { bool doBeginData() override { return true; } - bool doAdd(UnsignedInt, Containers::Iterable, Containers::StringView) override { + bool doAdd(UnsignedInt, const Containers::Iterable&, Containers::StringView) override { Debug{} << "Adding mesh levels"; return true; } @@ -6412,7 +6412,7 @@ void AbstractSceneConverterTest::addImporterContentsImportFail() { Debug{} << "Adding mesh"; return true; } - bool doAdd(UnsignedInt, Containers::Iterable, Containers::StringView) override { + bool doAdd(UnsignedInt, const Containers::Iterable&, Containers::StringView) override { Debug{} << "Adding mesh levels"; return true; } @@ -6430,7 +6430,7 @@ void AbstractSceneConverterTest::addImporterContentsImportFail() { Debug{} << "Adding 1D image"; return true; } - bool doAdd(UnsignedInt, Containers::Iterable, Containers::StringView) override { + bool doAdd(UnsignedInt, const Containers::Iterable&, Containers::StringView) override { Debug{} << "Adding 1D image levels"; return true; } @@ -6439,7 +6439,7 @@ void AbstractSceneConverterTest::addImporterContentsImportFail() { Debug{} << "Adding 2D image"; return true; } - bool doAdd(UnsignedInt, Containers::Iterable, Containers::StringView) override { + bool doAdd(UnsignedInt, const Containers::Iterable&, Containers::StringView) override { Debug{} << "Adding 2D image levels"; return true; } @@ -6447,7 +6447,7 @@ void AbstractSceneConverterTest::addImporterContentsImportFail() { Debug{} << "Adding 3D image"; return true; } - bool doAdd(UnsignedInt, Containers::Iterable, Containers::StringView) override { + bool doAdd(UnsignedInt, const Containers::Iterable&, Containers::StringView) override { Debug{} << "Adding 3D image levels"; return true; } @@ -6637,7 +6637,7 @@ void AbstractSceneConverterTest::addImporterContentsConversionFail() { Debug{} << "Adding mesh"; return true; } - bool doAdd(UnsignedInt id, Containers::Iterable, Containers::StringView) override { + bool doAdd(UnsignedInt id, const Containers::Iterable&, Containers::StringView) override { if(id == 2) return false; Debug{} << "Adding mesh levels"; @@ -6663,7 +6663,7 @@ void AbstractSceneConverterTest::addImporterContentsConversionFail() { Debug{} << "Adding 1D image"; return true; } - bool doAdd(UnsignedInt id, Containers::Iterable, Containers::StringView) override { + bool doAdd(UnsignedInt id, const Containers::Iterable&, Containers::StringView) override { if(id == 2) return false; Debug{} << "Adding 1D image levels"; @@ -6676,7 +6676,7 @@ void AbstractSceneConverterTest::addImporterContentsConversionFail() { Debug{} << "Adding 2D image"; return true; } - bool doAdd(UnsignedInt id, Containers::Iterable, Containers::StringView) override { + bool doAdd(UnsignedInt id, const Containers::Iterable&, Containers::StringView) override { if(id == 2) return false; Debug{} << "Adding 2D image levels"; @@ -6688,7 +6688,7 @@ void AbstractSceneConverterTest::addImporterContentsConversionFail() { Debug{} << "Adding 3D image"; return true; } - bool doAdd(UnsignedInt id, Containers::Iterable, Containers::StringView) override { + bool doAdd(UnsignedInt id, const Containers::Iterable&, Containers::StringView) override { if(id == 2) return false; Debug{} << "Adding 3D image levels"; @@ -6919,15 +6919,15 @@ void AbstractSceneConverterTest::addImporterContentsNotSupportedUncompressedImag } bool doBeginData() override { return true; } - bool doAdd(UnsignedInt, Containers::Iterable, Containers::StringView) override { + bool doAdd(UnsignedInt, const Containers::Iterable&, Containers::StringView) override { Debug{} << "Added 1D image"; return true; } - bool doAdd(UnsignedInt, Containers::Iterable, Containers::StringView) override { + bool doAdd(UnsignedInt, const Containers::Iterable&, Containers::StringView) override { Debug{} << "Added 2D image"; return true; } - bool doAdd(UnsignedInt, Containers::Iterable, Containers::StringView) override { + bool doAdd(UnsignedInt, const Containers::Iterable&, Containers::StringView) override { Debug{} << "Added 3D image"; return true; } @@ -6997,15 +6997,15 @@ void AbstractSceneConverterTest::addImporterContentsNotSupportedCompressedImage( } bool doBeginData() override { return true; } - bool doAdd(UnsignedInt, Containers::Iterable, Containers::StringView) override { + bool doAdd(UnsignedInt, const Containers::Iterable&, Containers::StringView) override { Debug{} << "Added 1D image"; return true; } - bool doAdd(UnsignedInt, Containers::Iterable, Containers::StringView) override { + bool doAdd(UnsignedInt, const Containers::Iterable&, Containers::StringView) override { Debug{} << "Added 2D image"; return true; } - bool doAdd(UnsignedInt, Containers::Iterable, Containers::StringView) override { + bool doAdd(UnsignedInt, const Containers::Iterable&, Containers::StringView) override { Debug{} << "Added 3D image"; return true; } @@ -7159,7 +7159,7 @@ void AbstractSceneConverterTest::addSupportedImporterContents() { bool doAdd(UnsignedInt, const SkinData3D&, Containers::StringView) override { return true; } - bool doAdd(UnsignedInt, Containers::Iterable, Containers::StringView) override { + bool doAdd(UnsignedInt, const Containers::Iterable&, Containers::StringView) override { return true; } bool doAdd(UnsignedInt, const MaterialData&, Containers::StringView) override { @@ -7168,13 +7168,13 @@ void AbstractSceneConverterTest::addSupportedImporterContents() { bool doAdd(UnsignedInt, const TextureData&, Containers::StringView) override { return true; } - bool doAdd(UnsignedInt, Containers::Iterable, Containers::StringView) override { + bool doAdd(UnsignedInt, const Containers::Iterable&, Containers::StringView) override { return true; } - bool doAdd(UnsignedInt, Containers::Iterable, Containers::StringView) override { + bool doAdd(UnsignedInt, const Containers::Iterable&, Containers::StringView) override { return true; } - bool doAdd(UnsignedInt, Containers::Iterable, Containers::StringView) override { + bool doAdd(UnsignedInt, const Containers::Iterable&, Containers::StringView) override { return true; } diff --git a/src/Magnum/Vk/DescriptorSetLayout.cpp b/src/Magnum/Vk/DescriptorSetLayout.cpp index 2d604a14a..9e1f900d0 100644 --- a/src/Magnum/Vk/DescriptorSetLayout.cpp +++ b/src/Magnum/Vk/DescriptorSetLayout.cpp @@ -91,7 +91,7 @@ DescriptorSetLayoutBinding& DescriptorSetLayoutBinding::operator=(DescriptorSetL return *this; } -DescriptorSetLayoutCreateInfo::DescriptorSetLayoutCreateInfo(const Containers::Iterable bindings, const Flags flags): _info{} { +DescriptorSetLayoutCreateInfo::DescriptorSetLayoutCreateInfo(const Containers::Iterable& bindings, const Flags flags): _info{} { /* Check the total count of immutable samplers to allocate them all in a contiguous memory location. Also check if we have any binding flags. If yes, we have to create an additional array and put a structure into the diff --git a/src/Magnum/Vk/DescriptorSetLayoutCreateInfo.h b/src/Magnum/Vk/DescriptorSetLayoutCreateInfo.h index 0d07ed378..d52e88243 100644 --- a/src/Magnum/Vk/DescriptorSetLayoutCreateInfo.h +++ b/src/Magnum/Vk/DescriptorSetLayoutCreateInfo.h @@ -323,7 +323,7 @@ class MAGNUM_VK_EXPORT DescriptorSetLayoutCreateInfo { * - `pBindingFlags` to a list of all * @ref DescriptorSetLayoutBinding::flags() from @p bindings */ - explicit DescriptorSetLayoutCreateInfo(Containers::Iterable bindings, Flags flags = {}); + explicit DescriptorSetLayoutCreateInfo(const Containers::Iterable& bindings, Flags flags = {}); /** @overload */ /* Iterable takes std::initializer_list itself but having it also here diff --git a/src/MagnumPlugins/AnySceneConverter/AnySceneConverter.cpp b/src/MagnumPlugins/AnySceneConverter/AnySceneConverter.cpp index 84c5d126e..c31d47bf9 100644 --- a/src/MagnumPlugins/AnySceneConverter/AnySceneConverter.cpp +++ b/src/MagnumPlugins/AnySceneConverter/AnySceneConverter.cpp @@ -233,7 +233,7 @@ bool AnySceneConverter::doAdd(CORRADE_UNUSED const UnsignedInt id, const MeshDat return !!_converter->add(mesh, name); } -bool AnySceneConverter::doAdd(CORRADE_UNUSED const UnsignedInt id, const Containers::Iterable meshLevels, const Containers::StringView name) { +bool AnySceneConverter::doAdd(CORRADE_UNUSED const UnsignedInt id, const Containers::Iterable& meshLevels, const Containers::StringView name) { CORRADE_INTERNAL_ASSERT(id == _converter->meshCount()); return !!_converter->add(meshLevels, name); } @@ -257,7 +257,7 @@ bool AnySceneConverter::doAdd(CORRADE_UNUSED const UnsignedInt id, const ImageDa return !!_converter->add(image, name); } -bool AnySceneConverter::doAdd(CORRADE_UNUSED const UnsignedInt id, const Containers::Iterable imageLevels, const Containers::StringView name) { +bool AnySceneConverter::doAdd(CORRADE_UNUSED const UnsignedInt id, const Containers::Iterable& imageLevels, const Containers::StringView name) { CORRADE_INTERNAL_ASSERT(id == _converter->image1DCount()); return !!_converter->add(imageLevels, name); } @@ -267,7 +267,7 @@ bool AnySceneConverter::doAdd(CORRADE_UNUSED const UnsignedInt id, const ImageDa return !!_converter->add(image, name); } -bool AnySceneConverter::doAdd(CORRADE_UNUSED const UnsignedInt id, const Containers::Iterable imageLevels, const Containers::StringView name) { +bool AnySceneConverter::doAdd(CORRADE_UNUSED const UnsignedInt id, const Containers::Iterable& imageLevels, const Containers::StringView name) { CORRADE_INTERNAL_ASSERT(id == _converter->image2DCount()); return !!_converter->add(imageLevels, name); } @@ -277,7 +277,7 @@ bool AnySceneConverter::doAdd(CORRADE_UNUSED const UnsignedInt id, const ImageDa return !!_converter->add(image, name); } -bool AnySceneConverter::doAdd(CORRADE_UNUSED const UnsignedInt id, const Containers::Iterable imageLevels, const Containers::StringView name) { +bool AnySceneConverter::doAdd(CORRADE_UNUSED const UnsignedInt id, const Containers::Iterable& imageLevels, const Containers::StringView name) { CORRADE_INTERNAL_ASSERT(id == _converter->image3DCount()); return !!_converter->add(imageLevels, name); } @@ -285,4 +285,4 @@ bool AnySceneConverter::doAdd(CORRADE_UNUSED const UnsignedInt id, const Contain }} CORRADE_PLUGIN_REGISTER(AnySceneConverter, Magnum::Trade::AnySceneConverter, - "cz.mosra.magnum.Trade.AbstractSceneConverter/0.2") + "cz.mosra.magnum.Trade.AbstractSceneConverter/0.2.1") diff --git a/src/MagnumPlugins/AnySceneConverter/AnySceneConverter.h b/src/MagnumPlugins/AnySceneConverter/AnySceneConverter.h index 8fa18d800..f3fed03c4 100644 --- a/src/MagnumPlugins/AnySceneConverter/AnySceneConverter.h +++ b/src/MagnumPlugins/AnySceneConverter/AnySceneConverter.h @@ -145,20 +145,20 @@ class MAGNUM_ANYSCENECONVERTER_EXPORT AnySceneConverter: public AbstractSceneCon bool doAdd(UnsignedInt id, const SkinData3D& skin, Containers::StringView name) override; bool doAdd(UnsignedInt id, const MeshData& mesh, Containers::StringView name) override; - bool doAdd(UnsignedInt id, Containers::Iterable meshLevels, Containers::StringView name) override; + bool doAdd(UnsignedInt id, const Containers::Iterable& meshLevels, Containers::StringView name) override; void doSetMeshAttributeName(UnsignedShort attribute, Containers::StringView name) override; bool doAdd(UnsignedInt id, const MaterialData& material, Containers::StringView name) override; bool doAdd(UnsignedInt id, const TextureData& texture, Containers::StringView name) override; bool doAdd(UnsignedInt id, const ImageData1D& image, Containers::StringView name) override; - bool doAdd(UnsignedInt id, Containers::Iterable imageLevels, Containers::StringView name) override; + bool doAdd(UnsignedInt id, const Containers::Iterable& imageLevels, Containers::StringView name) override; bool doAdd(UnsignedInt id, const ImageData2D& image, Containers::StringView name) override; - bool doAdd(UnsignedInt id, Containers::Iterable imageLevels, Containers::StringView name) override; + bool doAdd(UnsignedInt id, const Containers::Iterable& imageLevels, Containers::StringView name) override; bool doAdd(UnsignedInt id, const ImageData3D& image, Containers::StringView name) override; - bool doAdd(UnsignedInt id, Containers::Iterable imageLevels, Containers::StringView name) override; + bool doAdd(UnsignedInt id, const Containers::Iterable& imageLevels, Containers::StringView name) override; Containers::Pointer _converter; };