From ad6b9a406140c89e97c33dcce15c0f21982ab85b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Vladim=C3=ADr=20Vondru=C5=A1?= Date: Fri, 14 Apr 2023 18:04:43 +0200 Subject: [PATCH] Trade: add *{Importer,Converter}Flag::Quiet. A counterpart / inverse to Verbose, is meant to be used by plugins to suppress all warnings. This flag was already used by the ShaderConverter APIs. Fonts don't have any flags (and don't have any verbose output or warnings at the moment either), so there it isn't added; audio importers are in a maintenance mode with no new features added as I'll be eventually merging them with the general importer interface in Trade. --- src/Magnum/Trade/AbstractImageConverter.cpp | 2 ++ src/Magnum/Trade/AbstractImageConverter.h | 12 ++++++++++++ src/Magnum/Trade/AbstractImporter.cpp | 2 ++ src/Magnum/Trade/AbstractImporter.h | 12 ++++++++++++ src/Magnum/Trade/AbstractSceneConverter.cpp | 2 ++ src/Magnum/Trade/AbstractSceneConverter.h | 11 +++++++++++ 6 files changed, 41 insertions(+) diff --git a/src/Magnum/Trade/AbstractImageConverter.cpp b/src/Magnum/Trade/AbstractImageConverter.cpp index af3b83aa9..7b3a48812 100644 --- a/src/Magnum/Trade/AbstractImageConverter.cpp +++ b/src/Magnum/Trade/AbstractImageConverter.cpp @@ -1365,6 +1365,7 @@ Debug& operator<<(Debug& debug, const ImageConverterFlag value) { switch(value) { /* LCOV_EXCL_START */ #define _c(v) case ImageConverterFlag::v: return debug << "::" #v; + _c(Quiet) _c(Verbose) #undef _c /* LCOV_EXCL_STOP */ @@ -1375,6 +1376,7 @@ Debug& operator<<(Debug& debug, const ImageConverterFlag value) { Debug& operator<<(Debug& debug, const ImageConverterFlags value) { return Containers::enumSetDebugOutput(debug, value, "Trade::ImageConverterFlags{}", { + ImageConverterFlag::Quiet, ImageConverterFlag::Verbose}); } diff --git a/src/Magnum/Trade/AbstractImageConverter.h b/src/Magnum/Trade/AbstractImageConverter.h index 87f5fa9f6..a9f4b86d5 100644 --- a/src/Magnum/Trade/AbstractImageConverter.h +++ b/src/Magnum/Trade/AbstractImageConverter.h @@ -387,6 +387,13 @@ MAGNUM_TRADE_EXPORT Debug& operator<<(Debug& debug, ImageConverterFeatures value @see @ref ImageConverterFlags, @ref AbstractImageConverter::setFlags() */ enum class ImageConverterFlag: UnsignedByte { + /** + * Suppress warnings, print just errors. By default the converter prints + * both warnings and errors. + * @m_since_latest + */ + Quiet = 1 << 1, + /** * Print verbose diagnostic during conversion. By default the converter * only prints messages on error or when some operation might cause @@ -398,6 +405,11 @@ enum class ImageConverterFlag: UnsignedByte { */ Verbose = 1 << 0 + /** @todo is warning as error (like in ShaderConverter) usable for anything + here? in case of a compiler it makes sense, in case of an importer not + so much probably? it'd also mean expanding each and every Warning + print (using Error, adding a return) which is a lot to maintain */ + /** @todo ~~Y flip~~ Y up */ }; diff --git a/src/Magnum/Trade/AbstractImporter.cpp b/src/Magnum/Trade/AbstractImporter.cpp index 336933515..f19ef7ffe 100644 --- a/src/Magnum/Trade/AbstractImporter.cpp +++ b/src/Magnum/Trade/AbstractImporter.cpp @@ -1649,6 +1649,7 @@ Debug& operator<<(Debug& debug, const ImporterFlag value) { switch(value) { /* LCOV_EXCL_START */ #define _c(v) case ImporterFlag::v: return debug << "::" #v; + _c(Quiet) _c(Verbose) #undef _c /* LCOV_EXCL_STOP */ @@ -1659,6 +1660,7 @@ Debug& operator<<(Debug& debug, const ImporterFlag value) { Debug& operator<<(Debug& debug, const ImporterFlags value) { return Containers::enumSetDebugOutput(debug, value, "Trade::ImporterFlags{}", { + ImporterFlag::Quiet, ImporterFlag::Verbose}); } diff --git a/src/Magnum/Trade/AbstractImporter.h b/src/Magnum/Trade/AbstractImporter.h index 99fe9d638..7d597b303 100644 --- a/src/Magnum/Trade/AbstractImporter.h +++ b/src/Magnum/Trade/AbstractImporter.h @@ -105,6 +105,13 @@ typedef CORRADE_DEPRECATED("use InputFileCallbackPolicy instead") InputFileCallb @see @ref ImporterFlags, @ref AbstractImporter::setFlags() */ enum class ImporterFlag: UnsignedByte { + /** + * Suppress warnings, print just errors. By default the converter prints + * both warnings and errors. + * @m_since_latest + */ + Quiet = 1 << 1, + /** * Print verbose diagnostic during import. By default the importer only * prints messages on error or when some operation might cause unexpected @@ -117,6 +124,11 @@ enum class ImporterFlag: UnsignedByte { */ Verbose = 1 << 0, + /** @todo is warning as error (like in ShaderConverter) usable for anything + here? in case of a compiler it makes sense, in case of an importer not + so much probably? it'd also mean expanding each and every Warning + print (using Error, adding a return) which is a lot to maintain */ + /** @todo ~~Y flip~~ Y up for images, "I want to import just once, don't copy" ... */ }; diff --git a/src/Magnum/Trade/AbstractSceneConverter.cpp b/src/Magnum/Trade/AbstractSceneConverter.cpp index f331fbb43..f53693596 100644 --- a/src/Magnum/Trade/AbstractSceneConverter.cpp +++ b/src/Magnum/Trade/AbstractSceneConverter.cpp @@ -1756,6 +1756,7 @@ Debug& operator<<(Debug& debug, const SceneConverterFlag value) { switch(value) { /* LCOV_EXCL_START */ #define _c(v) case SceneConverterFlag::v: return debug << "::" #v; + _c(Quiet) _c(Verbose) #undef _c /* LCOV_EXCL_STOP */ @@ -1766,6 +1767,7 @@ Debug& operator<<(Debug& debug, const SceneConverterFlag value) { Debug& operator<<(Debug& debug, const SceneConverterFlags value) { return Containers::enumSetDebugOutput(debug, value, "Trade::SceneConverterFlags{}", { + SceneConverterFlag::Quiet, SceneConverterFlag::Verbose}); } diff --git a/src/Magnum/Trade/AbstractSceneConverter.h b/src/Magnum/Trade/AbstractSceneConverter.h index a0db79a6e..19f403d5e 100644 --- a/src/Magnum/Trade/AbstractSceneConverter.h +++ b/src/Magnum/Trade/AbstractSceneConverter.h @@ -287,6 +287,12 @@ MAGNUM_TRADE_EXPORT Debug& operator<<(Debug& debug, SceneConverterFeatures value @see @ref SceneConverterFlags, @ref AbstractSceneConverter::setFlags() */ enum class SceneConverterFlag: UnsignedByte { + /** + * Suppress warnings, print just errors. By default the converter prints + * both warnings and errors. + */ + Quiet = 1 << 1, + /** * Print verbose diagnostic during conversion. By default the converter * only prints messages on error or when some operation might cause @@ -297,6 +303,11 @@ enum class SceneConverterFlag: UnsignedByte { */ Verbose = 1 << 0 + /** @todo is warning as error (like in ShaderConverter) usable for anything + here? in case of a compiler it makes sense, in case of an importer not + so much probably? it'd also mean expanding each and every Warning + print (using Error, adding a return) which is a lot to maintain */ + /** @todo Y flip */ };