Replace confusing member variable with a predicate
The Converter class, in the eponymous example, had a null member variable that wasn't a nullptr - it pointed to an instance of NullConverter - so that other converters could test whether a Converter * they'd been passed was null (in the sense of pointing to a NullConverter). This, however, was susceptible to misreading - I misread one such comparison as a nullptr check and thus thought it redundant with an earlier actual nullptr check. To spare future readers similar confusion, replace the public static member variable with a protected (since only other derived classes need it) static predicate, to at least give the reader a clue that this is using the word null in a class-specific sense. Pick-to: 6.6 6.5 Task-number: QTBUG-111228 Change-Id: I1e4f494b303d1bf90107f8c6fa3a4a22f6d81b90 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
This commit is contained in:
parent
0de55973d3
commit
0b1670134b
@ -250,7 +250,7 @@ QVariant CborConverter::loadFile(QIODevice *f, const Converter *&outputConverter
|
||||
|
||||
if (outputConverter == nullptr)
|
||||
outputConverter = &cborDiagnosticDumper;
|
||||
else if (outputConverter == null)
|
||||
else if (isNull(outputConverter))
|
||||
return QVariant();
|
||||
else if (!outputConverter->outputOptions().testFlag(SupportsArbitraryMapKeys))
|
||||
return contents.toVariant();
|
||||
|
@ -12,9 +12,9 @@ class Converter
|
||||
{
|
||||
protected:
|
||||
Converter();
|
||||
static bool isNull(const Converter *converter); // in nullconverter.cpp
|
||||
|
||||
public:
|
||||
static Converter *null;
|
||||
|
||||
enum class Direction { In = 1, Out = 2, InOut = In | Out };
|
||||
Q_DECLARE_FLAGS(Directions, Direction)
|
||||
|
@ -76,7 +76,7 @@ QVariant JsonConverter::loadFile(QIODevice *f, const Converter *&outputConverter
|
||||
qFatal("Could not parse JSON content: offset %d: %s",
|
||||
error.offset, qPrintable(error.errorString()));
|
||||
}
|
||||
if (outputConverter == null)
|
||||
if (isNull(outputConverter))
|
||||
return QVariant();
|
||||
return doc.toVariant();
|
||||
}
|
||||
|
@ -6,7 +6,10 @@
|
||||
using namespace Qt::StringLiterals;
|
||||
|
||||
static NullConverter nullConverter;
|
||||
Converter *Converter::null = &nullConverter;
|
||||
bool Converter::isNull(const Converter *converter)
|
||||
{
|
||||
return converter == &nullConverter;
|
||||
}
|
||||
|
||||
QString NullConverter::name() const
|
||||
{
|
||||
|
Loading…
Reference in New Issue
Block a user