From ad63118071e3068ef3f45e75fad82a04952ba0fb Mon Sep 17 00:00:00 2001 From: Edward Welbourne Date: Mon, 4 Sep 2023 14:37:25 +0200 Subject: Turn Converter::Direction into a QFlags enum This lets us testFlag() instead of using raw bit-field operations. Pick-to: 6.6 6.5 Task-number: QTBUG-111228 Change-Id: I2c26e9a24728e81baa42cf14c75271a015460913 Reviewed-by: Ivan Solovev --- examples/corelib/serialization/convert/cborconverter.cpp | 4 ++-- examples/corelib/serialization/convert/cborconverter.h | 4 ++-- examples/corelib/serialization/convert/converter.h | 6 ++++-- examples/corelib/serialization/convert/datastreamconverter.cpp | 2 +- examples/corelib/serialization/convert/datastreamconverter.h | 2 +- examples/corelib/serialization/convert/debugtextdumper.cpp | 2 +- examples/corelib/serialization/convert/debugtextdumper.h | 2 +- examples/corelib/serialization/convert/jsonconverter.cpp | 2 +- examples/corelib/serialization/convert/jsonconverter.h | 2 +- examples/corelib/serialization/convert/main.cpp | 8 ++++---- examples/corelib/serialization/convert/nullconverter.cpp | 2 +- examples/corelib/serialization/convert/nullconverter.h | 2 +- examples/corelib/serialization/convert/textconverter.cpp | 2 +- examples/corelib/serialization/convert/textconverter.h | 2 +- examples/corelib/serialization/convert/xmlconverter.cpp | 2 +- examples/corelib/serialization/convert/xmlconverter.h | 2 +- 16 files changed, 24 insertions(+), 22 deletions(-) (limited to 'examples/corelib/serialization/convert') diff --git a/examples/corelib/serialization/convert/cborconverter.cpp b/examples/corelib/serialization/convert/cborconverter.cpp index 992f17e06c..38202712b5 100644 --- a/examples/corelib/serialization/convert/cborconverter.cpp +++ b/examples/corelib/serialization/convert/cborconverter.cpp @@ -125,7 +125,7 @@ QString CborDiagnosticDumper::name() const return "cbor-dump"_L1; } -Converter::Direction CborDiagnosticDumper::directions() const +Converter::Directions CborDiagnosticDumper::directions() const { return Out; } @@ -197,7 +197,7 @@ QString CborConverter::name() const return "cbor"; } -Converter::Direction CborConverter::directions() const +Converter::Directions CborConverter::directions() const { return InOut; } diff --git a/examples/corelib/serialization/convert/cborconverter.h b/examples/corelib/serialization/convert/cborconverter.h index 18bd55e09c..ff03185656 100644 --- a/examples/corelib/serialization/convert/cborconverter.h +++ b/examples/corelib/serialization/convert/cborconverter.h @@ -11,7 +11,7 @@ class CborDiagnosticDumper : public Converter // Converter interface public: QString name() const override; - Direction directions() const override; + Directions directions() const override; Options outputOptions() const override; const char *optionsHelp() const override; bool probeFile(QIODevice *f) const override; @@ -28,7 +28,7 @@ public: // Converter interface public: QString name() const override; - Direction directions() const override; + Directions directions() const override; Options outputOptions() const override; const char *optionsHelp() const override; bool probeFile(QIODevice *f) const override; diff --git a/examples/corelib/serialization/convert/converter.h b/examples/corelib/serialization/convert/converter.h index 786893bd4a..5e441aa72b 100644 --- a/examples/corelib/serialization/convert/converter.h +++ b/examples/corelib/serialization/convert/converter.h @@ -32,7 +32,8 @@ protected: public: static Converter *null; - enum Direction { In = 1, Out = 2, InOut = 3 }; + enum Direction { In = 1, Out = 2, InOut = In | Out }; + Q_DECLARE_FLAGS(Directions, Direction) enum Option { SupportsArbitraryMapKeys = 0x01 }; Q_DECLARE_FLAGS(Options, Option) @@ -40,7 +41,7 @@ public: virtual ~Converter() = 0; virtual QString name() const = 0; - virtual Direction directions() const = 0; + virtual Directions directions() const = 0; virtual Options outputOptions() const = 0; virtual const char *optionsHelp() const = 0; virtual bool probeFile(QIODevice *f) const = 0; @@ -49,6 +50,7 @@ public: const QStringList &options) const = 0; }; +Q_DECLARE_OPERATORS_FOR_FLAGS(Converter::Directions) Q_DECLARE_OPERATORS_FOR_FLAGS(Converter::Options) #endif // CONVERTER_H diff --git a/examples/corelib/serialization/convert/datastreamconverter.cpp b/examples/corelib/serialization/convert/datastreamconverter.cpp index f994f1583c..0007bef436 100644 --- a/examples/corelib/serialization/convert/datastreamconverter.cpp +++ b/examples/corelib/serialization/convert/datastreamconverter.cpp @@ -53,7 +53,7 @@ QString DataStreamConverter::name() const return "datastream"_L1; } -Converter::Direction DataStreamConverter::directions() const +Converter::Directions DataStreamConverter::directions() const { return InOut; } diff --git a/examples/corelib/serialization/convert/datastreamconverter.h b/examples/corelib/serialization/convert/datastreamconverter.h index a6d99c0f8e..201f3c4754 100644 --- a/examples/corelib/serialization/convert/datastreamconverter.h +++ b/examples/corelib/serialization/convert/datastreamconverter.h @@ -14,7 +14,7 @@ public: // Converter interface public: QString name() const override; - Direction directions() const override; + Directions directions() const override; Options outputOptions() const override; const char *optionsHelp() const override; bool probeFile(QIODevice *f) const override; diff --git a/examples/corelib/serialization/convert/debugtextdumper.cpp b/examples/corelib/serialization/convert/debugtextdumper.cpp index fcaa877c36..8e3f289373 100644 --- a/examples/corelib/serialization/convert/debugtextdumper.cpp +++ b/examples/corelib/serialization/convert/debugtextdumper.cpp @@ -48,7 +48,7 @@ QString DebugTextDumper::name() const return "debugtext-dump"_L1; } -Converter::Direction DebugTextDumper::directions() const +Converter::Directions DebugTextDumper::directions() const { return Out; } diff --git a/examples/corelib/serialization/convert/debugtextdumper.h b/examples/corelib/serialization/convert/debugtextdumper.h index d39a0eb427..636e6ccb3d 100644 --- a/examples/corelib/serialization/convert/debugtextdumper.h +++ b/examples/corelib/serialization/convert/debugtextdumper.h @@ -11,7 +11,7 @@ class DebugTextDumper : public Converter // Converter interface public: QString name() const override; - Direction directions() const override; + Directions directions() const override; Options outputOptions() const override; const char *optionsHelp() const override; bool probeFile(QIODevice *f) const override; diff --git a/examples/corelib/serialization/convert/jsonconverter.cpp b/examples/corelib/serialization/convert/jsonconverter.cpp index 23d8cb98c3..3bd5acd507 100644 --- a/examples/corelib/serialization/convert/jsonconverter.cpp +++ b/examples/corelib/serialization/convert/jsonconverter.cpp @@ -30,7 +30,7 @@ QString JsonConverter::name() const return "json"_L1; } -Converter::Direction JsonConverter::directions() const +Converter::Directions JsonConverter::directions() const { return InOut; } diff --git a/examples/corelib/serialization/convert/jsonconverter.h b/examples/corelib/serialization/convert/jsonconverter.h index 07011c9395..acff1433be 100644 --- a/examples/corelib/serialization/convert/jsonconverter.h +++ b/examples/corelib/serialization/convert/jsonconverter.h @@ -11,7 +11,7 @@ class JsonConverter : public Converter // Converter interface public: QString name() const override; - Direction directions() const override; + Directions directions() const override; Options outputOptions() const override; const char *optionsHelp() const override; bool probeFile(QIODevice *f) const override; diff --git a/examples/corelib/serialization/convert/main.cpp b/examples/corelib/serialization/convert/main.cpp index 697236dd7d..59e5bf5b96 100644 --- a/examples/corelib/serialization/convert/main.cpp +++ b/examples/corelib/serialization/convert/main.cpp @@ -36,9 +36,9 @@ int main(int argc, char *argv[]) for (const Converter *conv : std::as_const(*availableConverters)) { auto direction = conv->directions(); QString name = conv->name(); - if (direction & Converter::In) + if (direction.testFlag(Converter::In)) inputFormats << name; - if (direction & Converter::Out) + if (direction.testFlag(Converter::Out)) outputFormats << name; } inputFormats.sort(); @@ -162,7 +162,7 @@ int main(int argc, char *argv[]) if (!inconv) { // probe the input to find a file format for (const Converter *conv : std::as_const(*availableConverters)) { - if (conv->directions() & Converter::In && conv->probeFile(&input)) { + if (conv->directions().testFlag(Converter::In) && conv->probeFile(&input)) { inconv = conv; break; } @@ -177,7 +177,7 @@ int main(int argc, char *argv[]) if (!outconv) { // probe the output to find a file format for (const Converter *conv : std::as_const(*availableConverters)) { - if (conv->directions() & Converter::Out && conv->probeFile(&output)) { + if (conv->directions().testFlag(Converter::Out) && conv->probeFile(&output)) { outconv = conv; break; } diff --git a/examples/corelib/serialization/convert/nullconverter.cpp b/examples/corelib/serialization/convert/nullconverter.cpp index 02b844d2b5..e44aa67c38 100644 --- a/examples/corelib/serialization/convert/nullconverter.cpp +++ b/examples/corelib/serialization/convert/nullconverter.cpp @@ -13,7 +13,7 @@ QString NullConverter::name() const return "null"_L1; } -Converter::Direction NullConverter::directions() const +Converter::Directions NullConverter::directions() const { return Out; } diff --git a/examples/corelib/serialization/convert/nullconverter.h b/examples/corelib/serialization/convert/nullconverter.h index 5a08abde59..fb215c313c 100644 --- a/examples/corelib/serialization/convert/nullconverter.h +++ b/examples/corelib/serialization/convert/nullconverter.h @@ -11,7 +11,7 @@ class NullConverter : public Converter // Converter interface public: QString name() const override; - Direction directions() const override; + Directions directions() const override; Options outputOptions() const override; const char *optionsHelp() const override; bool probeFile(QIODevice *f) const override; diff --git a/examples/corelib/serialization/convert/textconverter.cpp b/examples/corelib/serialization/convert/textconverter.cpp index f043daa257..76102d387a 100644 --- a/examples/corelib/serialization/convert/textconverter.cpp +++ b/examples/corelib/serialization/convert/textconverter.cpp @@ -49,7 +49,7 @@ QString TextConverter::name() const return "text"_L1; } -Converter::Direction TextConverter::directions() const +Converter::Directions TextConverter::directions() const { return InOut; } diff --git a/examples/corelib/serialization/convert/textconverter.h b/examples/corelib/serialization/convert/textconverter.h index a961f14113..46e5500d9a 100644 --- a/examples/corelib/serialization/convert/textconverter.h +++ b/examples/corelib/serialization/convert/textconverter.h @@ -11,7 +11,7 @@ class TextConverter : public Converter // Converter interface public: QString name() const override; - Direction directions() const override; + Directions directions() const override; Options outputOptions() const override; const char *optionsHelp() const override; bool probeFile(QIODevice *f) const override; diff --git a/examples/corelib/serialization/convert/xmlconverter.cpp b/examples/corelib/serialization/convert/xmlconverter.cpp index f9da8cfe60..a39ca7a548 100644 --- a/examples/corelib/serialization/convert/xmlconverter.cpp +++ b/examples/corelib/serialization/convert/xmlconverter.cpp @@ -401,7 +401,7 @@ QString XmlConverter::name() const return "xml"_L1; } -Converter::Direction XmlConverter::directions() const +Converter::Directions XmlConverter::directions() const { return InOut; } diff --git a/examples/corelib/serialization/convert/xmlconverter.h b/examples/corelib/serialization/convert/xmlconverter.h index 51476e61e4..4888b0616f 100644 --- a/examples/corelib/serialization/convert/xmlconverter.h +++ b/examples/corelib/serialization/convert/xmlconverter.h @@ -11,7 +11,7 @@ class XmlConverter : public Converter // Converter interface public: QString name() const override; - Direction directions() const override; + Directions directions() const override; Options outputOptions() const override; const char *optionsHelp() const override; bool probeFile(QIODevice *f) const override; -- cgit v1.2.3