Turn Converter::Direction into a QFlags enum

This lets us testFlag() instead of using raw bit-field operations.

Task-number: QTBUG-111228
Change-Id: I2c26e9a24728e81baa42cf14c75271a015460913
Reviewed-by: Ivan Solovev <ivan.solovev@qt.io>
(cherry picked from commit ad63118071e3068ef3f45e75fad82a04952ba0fb)
This commit is contained in:
Edward Welbourne 2023-09-04 14:37:25 +02:00
parent 50b51d2b50
commit 9fcee2287a
16 changed files with 24 additions and 22 deletions

View File

@ -125,7 +125,7 @@ QString CborDiagnosticDumper::name() const
return "cbor-dump"_L1; return "cbor-dump"_L1;
} }
Converter::Direction CborDiagnosticDumper::directions() const Converter::Directions CborDiagnosticDumper::directions() const
{ {
return Out; return Out;
} }
@ -197,7 +197,7 @@ QString CborConverter::name() const
return "cbor"; return "cbor";
} }
Converter::Direction CborConverter::directions() const Converter::Directions CborConverter::directions() const
{ {
return InOut; return InOut;
} }

View File

@ -11,7 +11,7 @@ class CborDiagnosticDumper : public Converter
// Converter interface // Converter interface
public: public:
QString name() const override; QString name() const override;
Direction directions() const override; Directions directions() const override;
Options outputOptions() const override; Options outputOptions() const override;
const char *optionsHelp() const override; const char *optionsHelp() const override;
bool probeFile(QIODevice *f) const override; bool probeFile(QIODevice *f) const override;
@ -28,7 +28,7 @@ public:
// Converter interface // Converter interface
public: public:
QString name() const override; QString name() const override;
Direction directions() const override; Directions directions() const override;
Options outputOptions() const override; Options outputOptions() const override;
const char *optionsHelp() const override; const char *optionsHelp() const override;
bool probeFile(QIODevice *f) const override; bool probeFile(QIODevice *f) const override;

View File

@ -32,7 +32,8 @@ protected:
public: public:
static Converter *null; 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 }; enum Option { SupportsArbitraryMapKeys = 0x01 };
Q_DECLARE_FLAGS(Options, Option) Q_DECLARE_FLAGS(Options, Option)
@ -40,7 +41,7 @@ public:
virtual ~Converter() = 0; virtual ~Converter() = 0;
virtual QString name() const = 0; virtual QString name() const = 0;
virtual Direction directions() const = 0; virtual Directions directions() const = 0;
virtual Options outputOptions() const = 0; virtual Options outputOptions() const = 0;
virtual const char *optionsHelp() const = 0; virtual const char *optionsHelp() const = 0;
virtual bool probeFile(QIODevice *f) const = 0; virtual bool probeFile(QIODevice *f) const = 0;
@ -49,6 +50,7 @@ public:
const QStringList &options) const = 0; const QStringList &options) const = 0;
}; };
Q_DECLARE_OPERATORS_FOR_FLAGS(Converter::Directions)
Q_DECLARE_OPERATORS_FOR_FLAGS(Converter::Options) Q_DECLARE_OPERATORS_FOR_FLAGS(Converter::Options)
#endif // CONVERTER_H #endif // CONVERTER_H

View File

@ -53,7 +53,7 @@ QString DataStreamConverter::name() const
return "datastream"_L1; return "datastream"_L1;
} }
Converter::Direction DataStreamConverter::directions() const Converter::Directions DataStreamConverter::directions() const
{ {
return InOut; return InOut;
} }

View File

@ -14,7 +14,7 @@ public:
// Converter interface // Converter interface
public: public:
QString name() const override; QString name() const override;
Direction directions() const override; Directions directions() const override;
Options outputOptions() const override; Options outputOptions() const override;
const char *optionsHelp() const override; const char *optionsHelp() const override;
bool probeFile(QIODevice *f) const override; bool probeFile(QIODevice *f) const override;

View File

@ -48,7 +48,7 @@ QString DebugTextDumper::name() const
return "debugtext-dump"_L1; return "debugtext-dump"_L1;
} }
Converter::Direction DebugTextDumper::directions() const Converter::Directions DebugTextDumper::directions() const
{ {
return Out; return Out;
} }

View File

@ -11,7 +11,7 @@ class DebugTextDumper : public Converter
// Converter interface // Converter interface
public: public:
QString name() const override; QString name() const override;
Direction directions() const override; Directions directions() const override;
Options outputOptions() const override; Options outputOptions() const override;
const char *optionsHelp() const override; const char *optionsHelp() const override;
bool probeFile(QIODevice *f) const override; bool probeFile(QIODevice *f) const override;

View File

@ -30,7 +30,7 @@ QString JsonConverter::name() const
return "json"_L1; return "json"_L1;
} }
Converter::Direction JsonConverter::directions() const Converter::Directions JsonConverter::directions() const
{ {
return InOut; return InOut;
} }

View File

@ -11,7 +11,7 @@ class JsonConverter : public Converter
// Converter interface // Converter interface
public: public:
QString name() const override; QString name() const override;
Direction directions() const override; Directions directions() const override;
Options outputOptions() const override; Options outputOptions() const override;
const char *optionsHelp() const override; const char *optionsHelp() const override;
bool probeFile(QIODevice *f) const override; bool probeFile(QIODevice *f) const override;

View File

@ -36,9 +36,9 @@ int main(int argc, char *argv[])
for (const Converter *conv : std::as_const(*availableConverters)) { for (const Converter *conv : std::as_const(*availableConverters)) {
auto direction = conv->directions(); auto direction = conv->directions();
QString name = conv->name(); QString name = conv->name();
if (direction & Converter::In) if (direction.testFlag(Converter::In))
inputFormats << name; inputFormats << name;
if (direction & Converter::Out) if (direction.testFlag(Converter::Out))
outputFormats << name; outputFormats << name;
} }
inputFormats.sort(); inputFormats.sort();
@ -162,7 +162,7 @@ int main(int argc, char *argv[])
if (!inconv) { if (!inconv) {
// probe the input to find a file format // probe the input to find a file format
for (const Converter *conv : std::as_const(*availableConverters)) { 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; inconv = conv;
break; break;
} }
@ -177,7 +177,7 @@ int main(int argc, char *argv[])
if (!outconv) { if (!outconv) {
// probe the output to find a file format // probe the output to find a file format
for (const Converter *conv : std::as_const(*availableConverters)) { 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; outconv = conv;
break; break;
} }

View File

@ -13,7 +13,7 @@ QString NullConverter::name() const
return "null"_L1; return "null"_L1;
} }
Converter::Direction NullConverter::directions() const Converter::Directions NullConverter::directions() const
{ {
return Out; return Out;
} }

View File

@ -11,7 +11,7 @@ class NullConverter : public Converter
// Converter interface // Converter interface
public: public:
QString name() const override; QString name() const override;
Direction directions() const override; Directions directions() const override;
Options outputOptions() const override; Options outputOptions() const override;
const char *optionsHelp() const override; const char *optionsHelp() const override;
bool probeFile(QIODevice *f) const override; bool probeFile(QIODevice *f) const override;

View File

@ -49,7 +49,7 @@ QString TextConverter::name() const
return "text"_L1; return "text"_L1;
} }
Converter::Direction TextConverter::directions() const Converter::Directions TextConverter::directions() const
{ {
return InOut; return InOut;
} }

View File

@ -11,7 +11,7 @@ class TextConverter : public Converter
// Converter interface // Converter interface
public: public:
QString name() const override; QString name() const override;
Direction directions() const override; Directions directions() const override;
Options outputOptions() const override; Options outputOptions() const override;
const char *optionsHelp() const override; const char *optionsHelp() const override;
bool probeFile(QIODevice *f) const override; bool probeFile(QIODevice *f) const override;

View File

@ -401,7 +401,7 @@ QString XmlConverter::name() const
return "xml"_L1; return "xml"_L1;
} }
Converter::Direction XmlConverter::directions() const Converter::Directions XmlConverter::directions() const
{ {
return InOut; return InOut;
} }

View File

@ -11,7 +11,7 @@ class XmlConverter : public Converter
// Converter interface // Converter interface
public: public:
QString name() const override; QString name() const override;
Direction directions() const override; Directions directions() const override;
Options outputOptions() const override; Options outputOptions() const override;
const char *optionsHelp() const override; const char *optionsHelp() const override;
bool probeFile(QIODevice *f) const override; bool probeFile(QIODevice *f) const override;