summaryrefslogtreecommitdiffstats
path: root/examples/corelib
diff options
context:
space:
mode:
authorEdward Welbourne <edward.welbourne@qt.io>2023-09-04 19:21:58 +0200
committerEdward Welbourne <edward.welbourne@qt.io>2023-11-01 21:28:55 +0100
commit1022b0d111ea401a9aee719f89c75ff0ddb4fe9b (patch)
tree8df9faaab1749a5889fccefe9be47be356015fdd /examples/corelib
parent8b8fc42f2c6b08097bcd04038ed7f12667a90875 (diff)
Eliminate duplicate overrides of Converter methods in example
The Out-only converters shouldn't need to implement loadFile(), as it shouldn't be called - a converter is not used for input unless it says it supports input. At the same time, provide the "ground state" implementations for optionsHelp(), outputOptions() and probeFile() to save the trivial implementations the need to duplicate one another. In the process, make the handling of loadFile()'s outputConverter more consistent among those that do implement it. Always set outputConverter if it's initially null (the caller does assert this). Pick-to: 6.6 6.5 Task-number: QTBUG-111228 Change-Id: I856d12c791d1f8e0accdb7dd1412d493117b2302 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Diffstat (limited to 'examples/corelib')
-rw-r--r--examples/corelib/serialization/convert/cborconverter.cpp14
-rw-r--r--examples/corelib/serialization/convert/cborconverter.h2
-rw-r--r--examples/corelib/serialization/convert/converter.cpp17
-rw-r--r--examples/corelib/serialization/convert/converter.h8
-rw-r--r--examples/corelib/serialization/convert/debugtextdumper.cpp19
-rw-r--r--examples/corelib/serialization/convert/debugtextdumper.h3
-rw-r--r--examples/corelib/serialization/convert/jsonconverter.cpp5
-rw-r--r--examples/corelib/serialization/convert/jsonconverter.h1
-rw-r--r--examples/corelib/serialization/convert/nullconverter.cpp19
-rw-r--r--examples/corelib/serialization/convert/nullconverter.h3
-rw-r--r--examples/corelib/serialization/convert/textconverter.cpp10
-rw-r--r--examples/corelib/serialization/convert/textconverter.h2
12 files changed, 21 insertions, 82 deletions
diff --git a/examples/corelib/serialization/convert/cborconverter.cpp b/examples/corelib/serialization/convert/cborconverter.cpp
index 4ee86535aa..21f63f7d83 100644
--- a/examples/corelib/serialization/convert/cborconverter.cpp
+++ b/examples/corelib/serialization/convert/cborconverter.cpp
@@ -142,20 +142,6 @@ const char *CborDiagnosticDumper::optionsHelp() const
return diagnosticHelp;
}
-bool CborDiagnosticDumper::probeFile(QIODevice *f) const
-{
- Q_UNUSED(f);
- return false;
-}
-
-QVariant CborDiagnosticDumper::loadFile(QIODevice *f, const Converter *&outputConverter) const
-{
- Q_UNREACHABLE();
- Q_UNUSED(f);
- Q_UNUSED(outputConverter);
- return QVariant();
-}
-
void CborDiagnosticDumper::saveFile(QIODevice *f, const QVariant &contents,
const QStringList &options) const
{
diff --git a/examples/corelib/serialization/convert/cborconverter.h b/examples/corelib/serialization/convert/cborconverter.h
index ff03185656..db68f99fda 100644
--- a/examples/corelib/serialization/convert/cborconverter.h
+++ b/examples/corelib/serialization/convert/cborconverter.h
@@ -14,8 +14,6 @@ public:
Directions directions() const override;
Options outputOptions() const override;
const char *optionsHelp() const override;
- bool probeFile(QIODevice *f) const override;
- QVariant loadFile(QIODevice *f, const Converter *&outputConverter) const override;
void saveFile(QIODevice *f, const QVariant &contents,
const QStringList &options) const override;
};
diff --git a/examples/corelib/serialization/convert/converter.cpp b/examples/corelib/serialization/convert/converter.cpp
index 7ecd4134e9..231d0d51cd 100644
--- a/examples/corelib/serialization/convert/converter.cpp
+++ b/examples/corelib/serialization/convert/converter.cpp
@@ -23,3 +23,20 @@ const QList<const Converter *> &Converter::allConverters()
{
return converters();
}
+
+// Some virtual methods that Converter classes needn't override, when not relevant:
+Converter::Options Converter::outputOptions() const { return {}; }
+const char *Converter::optionsHelp() const { return nullptr; }
+bool Converter::probeFile(QIODevice *) const { return false; }
+
+// The virtual method they should override if they claim to support In:
+QVariant Converter::loadFile(QIODevice *, const Converter *&outputConverter) const
+{
+ Q_ASSERT(!directions().testFlag(Converter::Direction::In));
+ // For those that don't, this should never be called.
+ Q_UNIMPLEMENTED();
+ // But every implementation should at least do this:
+ if (!outputConverter)
+ outputConverter = this;
+ return QVariant();
+}
diff --git a/examples/corelib/serialization/convert/converter.h b/examples/corelib/serialization/convert/converter.h
index fabbffddfb..6631d3107f 100644
--- a/examples/corelib/serialization/convert/converter.h
+++ b/examples/corelib/serialization/convert/converter.h
@@ -29,10 +29,10 @@ public:
virtual QString name() 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;
- virtual QVariant loadFile(QIODevice *f, const Converter *&outputConverter) const = 0;
+ virtual Options outputOptions() const;
+ virtual const char *optionsHelp() const;
+ virtual bool probeFile(QIODevice *f) const;
+ virtual QVariant loadFile(QIODevice *f, const Converter *&outputConverter) const;
virtual void saveFile(QIODevice *f, const QVariant &contents,
const QStringList &options) const = 0;
};
diff --git a/examples/corelib/serialization/convert/debugtextdumper.cpp b/examples/corelib/serialization/convert/debugtextdumper.cpp
index 2415e32f44..f010bd8e2a 100644
--- a/examples/corelib/serialization/convert/debugtextdumper.cpp
+++ b/examples/corelib/serialization/convert/debugtextdumper.cpp
@@ -59,25 +59,6 @@ Converter::Options DebugTextDumper::outputOptions() const
return SupportsArbitraryMapKeys;
}
-const char *DebugTextDumper::optionsHelp() const
-{
- return nullptr;
-}
-
-bool DebugTextDumper::probeFile(QIODevice *f) const
-{
- Q_UNUSED(f);
- return false;
-}
-
-QVariant DebugTextDumper::loadFile(QIODevice *f, const Converter *&outputConverter) const
-{
- Q_UNREACHABLE();
- Q_UNUSED(f);
- Q_UNUSED(outputConverter);
- return QVariant();
-}
-
void DebugTextDumper::saveFile(QIODevice *f, const QVariant &contents,
const QStringList &options) const
{
diff --git a/examples/corelib/serialization/convert/debugtextdumper.h b/examples/corelib/serialization/convert/debugtextdumper.h
index 636e6ccb3d..7d3d762104 100644
--- a/examples/corelib/serialization/convert/debugtextdumper.h
+++ b/examples/corelib/serialization/convert/debugtextdumper.h
@@ -13,9 +13,6 @@ public:
QString name() const override;
Directions directions() const override;
Options outputOptions() const override;
- const char *optionsHelp() const override;
- bool probeFile(QIODevice *f) const override;
- QVariant loadFile(QIODevice *f, const Converter *&outputConverter) const override;
void saveFile(QIODevice *f, const QVariant &contents,
const QStringList &options) const override;
};
diff --git a/examples/corelib/serialization/convert/jsonconverter.cpp b/examples/corelib/serialization/convert/jsonconverter.cpp
index 611061705b..1b59ed5c1f 100644
--- a/examples/corelib/serialization/convert/jsonconverter.cpp
+++ b/examples/corelib/serialization/convert/jsonconverter.cpp
@@ -33,11 +33,6 @@ Converter::Directions JsonConverter::directions() const
return Direction::InOut;
}
-Converter::Options JsonConverter::outputOptions() const
-{
- return {};
-}
-
const char *JsonConverter::optionsHelp() const
{
return jsonOptionHelp;
diff --git a/examples/corelib/serialization/convert/jsonconverter.h b/examples/corelib/serialization/convert/jsonconverter.h
index acff1433be..e1dd1ecdb4 100644
--- a/examples/corelib/serialization/convert/jsonconverter.h
+++ b/examples/corelib/serialization/convert/jsonconverter.h
@@ -12,7 +12,6 @@ class JsonConverter : public Converter
public:
QString name() const override;
Directions directions() const override;
- Options outputOptions() const override;
const char *optionsHelp() const override;
bool probeFile(QIODevice *f) const override;
QVariant loadFile(QIODevice *f, const Converter *&outputConverter) const override;
diff --git a/examples/corelib/serialization/convert/nullconverter.cpp b/examples/corelib/serialization/convert/nullconverter.cpp
index 00ae47a086..fb8be5c944 100644
--- a/examples/corelib/serialization/convert/nullconverter.cpp
+++ b/examples/corelib/serialization/convert/nullconverter.cpp
@@ -26,25 +26,6 @@ Converter::Options NullConverter::outputOptions() const
return SupportsArbitraryMapKeys;
}
-const char *NullConverter::optionsHelp() const
-{
- return nullptr;
-}
-
-bool NullConverter::probeFile(QIODevice *f) const
-{
- Q_UNUSED(f);
- return false;
-}
-
-QVariant NullConverter::loadFile(QIODevice *f, const Converter *&outputConverter) const
-{
- Q_UNUSED(f);
- Q_UNUSED(outputConverter);
- outputConverter = this;
- return QVariant();
-}
-
void NullConverter::saveFile(QIODevice *f, const QVariant &contents,
const QStringList &options) const
{
diff --git a/examples/corelib/serialization/convert/nullconverter.h b/examples/corelib/serialization/convert/nullconverter.h
index fb215c313c..1bdf9f22f7 100644
--- a/examples/corelib/serialization/convert/nullconverter.h
+++ b/examples/corelib/serialization/convert/nullconverter.h
@@ -13,9 +13,6 @@ public:
QString name() const override;
Directions directions() const override;
Options outputOptions() const override;
- const char *optionsHelp() const override;
- bool probeFile(QIODevice *f) const override;
- QVariant loadFile(QIODevice *f, const Converter *&outputConverter) const override;
void saveFile(QIODevice *f, const QVariant &contents,
const QStringList &options) const override;
};
diff --git a/examples/corelib/serialization/convert/textconverter.cpp b/examples/corelib/serialization/convert/textconverter.cpp
index 3bfd806bf4..1f8b4f9c19 100644
--- a/examples/corelib/serialization/convert/textconverter.cpp
+++ b/examples/corelib/serialization/convert/textconverter.cpp
@@ -54,16 +54,6 @@ Converter::Directions TextConverter::directions() const
return Direction::InOut;
}
-Converter::Options TextConverter::outputOptions() const
-{
- return {};
-}
-
-const char *TextConverter::optionsHelp() const
-{
- return nullptr;
-}
-
bool TextConverter::probeFile(QIODevice *f) const
{
if (QFile *file = qobject_cast<QFile *>(f))
diff --git a/examples/corelib/serialization/convert/textconverter.h b/examples/corelib/serialization/convert/textconverter.h
index 46e5500d9a..526f295517 100644
--- a/examples/corelib/serialization/convert/textconverter.h
+++ b/examples/corelib/serialization/convert/textconverter.h
@@ -12,8 +12,6 @@ class TextConverter : public Converter
public:
QString name() const override;
Directions directions() const override;
- Options outputOptions() const override;
- const char *optionsHelp() const override;
bool probeFile(QIODevice *f) const override;
QVariant loadFile(QIODevice *f, const Converter *&outputConverter) const override;
void saveFile(QIODevice *f, const QVariant &contents,