From cf61ed4ed6388edb6ea029a798f67a9c6cbd11a9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Vladim=C3=ADr=20Vondru=C5=A1?= Date: Tue, 12 Apr 2022 22:29:29 +0200 Subject: [PATCH] [wip] Trade: sad initializer_list overloads TODO: what to do?! sfinae with such types is heavy iron --- src/Magnum/Trade/AbstractSceneConverter.cpp | 48 ++++++++++++++ src/Magnum/Trade/AbstractSceneConverter.h | 72 +++++++++++++++++++++ 2 files changed, 120 insertions(+) diff --git a/src/Magnum/Trade/AbstractSceneConverter.cpp b/src/Magnum/Trade/AbstractSceneConverter.cpp index 0642adc89..e3f54f7d8 100644 --- a/src/Magnum/Trade/AbstractSceneConverter.cpp +++ b/src/Magnum/Trade/AbstractSceneConverter.cpp @@ -925,10 +925,18 @@ Containers::Optional AbstractSceneConverter::add(const Containers:: return add(references, name); } +// Containers::Optional AbstractSceneConverter::add(const std::initializer_list imageLevels, const Containers::StringView name) { +// return add(Containers::arrayView(imageLevels), name); +// } + Containers::Optional AbstractSceneConverter::add(const Containers::ArrayView imageLevels) { return add(imageLevels, {}); } +// Containers::Optional AbstractSceneConverter::add(const std::initializer_list imageLevels) { +// return add(Containers::arrayView(imageLevels), {}); +// } + Containers::Optional AbstractSceneConverter::add(const Containers::ArrayView imageLevels, const Containers::StringView name) { /** @todo ArrayTuple or StaticAllocator? */ Containers::Array data{NoInit, imageLevels.size()}; @@ -942,9 +950,17 @@ Containers::Optional AbstractSceneConverter::add(const Containers:: return add(references, name); } +// Containers::Optional AbstractSceneConverter::add(const std::initializer_list imageLevels, const Containers::StringView name) { +// return add(Containers::arrayView(imageLevels), name); +// } + Containers::Optional AbstractSceneConverter::add(const Containers::ArrayView imageLevels) { return add(imageLevels, {}); } +/* +Containers::Optional AbstractSceneConverter::add(const std::initializer_list imageLevels) { + return add(Containers::arrayView(imageLevels), {}); +}*/ UnsignedInt AbstractSceneConverter::image2DCount() const { CORRADE_ASSERT(_state, "Trade::AbstractSceneConverter::image2DCount(): no conversion in progress", {}); @@ -1040,10 +1056,18 @@ Containers::Optional AbstractSceneConverter::add(const Containers:: return add(references, name); } +// Containers::Optional AbstractSceneConverter::add(const std::initializer_list imageLevels, const Containers::StringView name) { +// return add(Containers::arrayView(imageLevels), name); +// } + Containers::Optional AbstractSceneConverter::add(const Containers::ArrayView imageLevels) { return add(imageLevels, {}); } +// Containers::Optional AbstractSceneConverter::add(const std::initializer_list imageLevels) { +// return add(Containers::arrayView(imageLevels), {}); +// } + Containers::Optional AbstractSceneConverter::add(const Containers::ArrayView imageLevels, const Containers::StringView name) { /** @todo ArrayTuple or StaticAllocator? */ Containers::Array data{NoInit, imageLevels.size()}; @@ -1057,10 +1081,18 @@ Containers::Optional AbstractSceneConverter::add(const Containers:: return add(references, name); } +// Containers::Optional AbstractSceneConverter::add(const std::initializer_list imageLevels, const Containers::StringView name) { +// return add(Containers::arrayView(imageLevels), name); +// } + Containers::Optional AbstractSceneConverter::add(const Containers::ArrayView imageLevels) { return add(imageLevels, {}); } +// Containers::Optional AbstractSceneConverter::add(const std::initializer_list imageLevels) { +// return add(Containers::arrayView(imageLevels), {}); +// } + UnsignedInt AbstractSceneConverter::image3DCount() const { CORRADE_ASSERT(_state, "Trade::AbstractSceneConverter::image3DCount(): no conversion in progress", {}); return _state->image3DCount; @@ -1155,10 +1187,18 @@ Containers::Optional AbstractSceneConverter::add(const Containers:: return add(references, name); } +// Containers::Optional AbstractSceneConverter::add(const std::initializer_list imageLevels, const Containers::StringView name) { +// return add(Containers::arrayView(imageLevels), name); +// } + Containers::Optional AbstractSceneConverter::add(const Containers::ArrayView imageLevels) { return add(imageLevels, {}); } +// Containers::Optional AbstractSceneConverter::add(const std::initializer_list imageLevels) { +// return add(Containers::arrayView(imageLevels), {}); +// } + Containers::Optional AbstractSceneConverter::add(const Containers::ArrayView imageLevels, const Containers::StringView name) { /** @todo ArrayTuple or StaticAllocator? */ Containers::Array data{NoInit, imageLevels.size()}; @@ -1172,10 +1212,18 @@ Containers::Optional AbstractSceneConverter::add(const Containers:: return add(references, name); } +// Containers::Optional AbstractSceneConverter::add(const std::initializer_list imageLevels, const Containers::StringView name) { +// return add(Containers::arrayView(imageLevels), name); +// } + Containers::Optional AbstractSceneConverter::add(const Containers::ArrayView imageLevels) { return add(imageLevels, {}); } +// Containers::Optional AbstractSceneConverter::add(const std::initializer_list imageLevels) { +// return add(Containers::arrayView(imageLevels), {}); +// } + Debug& operator<<(Debug& debug, const SceneConverterFeature value) { debug << "Trade::SceneConverterFeature" << Debug::nospace; diff --git a/src/Magnum/Trade/AbstractSceneConverter.h b/src/Magnum/Trade/AbstractSceneConverter.h index 7170ad2b8..e5c517682 100644 --- a/src/Magnum/Trade/AbstractSceneConverter.h +++ b/src/Magnum/Trade/AbstractSceneConverter.h @@ -1345,6 +1345,18 @@ class MAGNUM_TRADE_EXPORT AbstractSceneConverter: public PluginManager::Abstract Containers::Optional add(Containers::ArrayView imageLevels); #endif +// TODO makes passing {ImageData} ambiguous, what to do?! +// /** +// * @overload +// * @m_since_latest +// */ +// #ifdef DOXYGEN_GENERATING_OUTPUT +// Containers::Optional add(std::initializer_list imageLevels, Containers::StringView name = {}); +// #else +// Containers::Optional add(std::initializer_list imageLevels, Containers::StringView name); +// Containers::Optional add(std::initializer_list imageLevels); +// #endif + /** * @overload * @m_since_latest @@ -1356,6 +1368,18 @@ class MAGNUM_TRADE_EXPORT AbstractSceneConverter: public PluginManager::Abstract Containers::Optional add(Containers::ArrayView imageLevels); #endif +// TODO makes passing {ImageData} ambiguous, what to do?! +// /** +// * @overload +// * @m_since_latest +// */ +// #ifdef DOXYGEN_GENERATING_OUTPUT +// Containers::Optional add(std::initializer_list imageLevels, Containers::StringView name = {}); +// #else +// Containers::Optional add(std::initializer_list imageLevels, Containers::StringView name); +// Containers::Optional add(std::initializer_list imageLevels); +// #endif + /** * @brief Count of added 2D images * @m_since_latest @@ -1473,6 +1497,18 @@ class MAGNUM_TRADE_EXPORT AbstractSceneConverter: public PluginManager::Abstract Containers::Optional add(Containers::ArrayView imageLevels); #endif +// TODO makes passing {ImageData} ambiguous, what to do?! +// /** +// * @overload +// * @m_since_latest +// */ +// #ifdef DOXYGEN_GENERATING_OUTPUT +// Containers::Optional add(std::initializer_list imageLevels, Containers::StringView name = {}); +// #else +// Containers::Optional add(std::initializer_list imageLevels, Containers::StringView name); +// Containers::Optional add(std::initializer_list imageLevels); +// #endif + /** * @overload * @m_since_latest @@ -1484,6 +1520,18 @@ class MAGNUM_TRADE_EXPORT AbstractSceneConverter: public PluginManager::Abstract Containers::Optional add(Containers::ArrayView imageLevels); #endif +// TODO makes passing {ImageData} ambiguous, what to do?! +// /** +// * @overload +// * @m_since_latest +// */ +// #ifdef DOXYGEN_GENERATING_OUTPUT +// Containers::Optional add(std::initializer_list imageLevels, Containers::StringView name = {}); +// #else +// Containers::Optional add(std::initializer_list imageLevels, Containers::StringView name); +// Containers::Optional add(std::initializer_list imageLevels); +// #endif + /** * @brief Count of added 3D images * @m_since_latest @@ -1601,6 +1649,18 @@ class MAGNUM_TRADE_EXPORT AbstractSceneConverter: public PluginManager::Abstract Containers::Optional add(Containers::ArrayView imageLevels); #endif +// TODO makes passing {ImageData} ambiguous, what to do?! +// /** +// * @overload +// * @m_since_latest +// */ +// #ifdef DOXYGEN_GENERATING_OUTPUT +// Containers::Optional add(std::initializer_list imageLevels, Containers::StringView name = {}); +// #else +// Containers::Optional add(std::initializer_list imageLevels, Containers::StringView name); +// Containers::Optional add(std::initializer_list imageLevels); +// #endif + /** * @overload * @m_since_latest @@ -1612,6 +1672,18 @@ class MAGNUM_TRADE_EXPORT AbstractSceneConverter: public PluginManager::Abstract Containers::Optional add(Containers::ArrayView imageLevels); #endif +// TODO makes passing {ImageData} ambiguous, what to do?! +// /** +// * @overload +// * @m_since_latest +// */ +// #ifdef DOXYGEN_GENERATING_OUTPUT +// Containers::Optional add(std::initializer_list imageLevels, Containers::StringView name = {}); +// #else +// Containers::Optional add(std::initializer_list imageLevels, Containers::StringView name); +// Containers::Optional add(std::initializer_list imageLevels); +// #endif + protected: /** * @brief Implementation for @ref convertToFile(const MeshData&, Containers::StringView)