diff options
author | Alexey Rusakov <Kitsune-Ral@users.sf.net> | 2022-07-11 10:08:44 +0200 |
---|---|---|
committer | Alexey Rusakov <Kitsune-Ral@users.sf.net> | 2022-07-12 11:54:29 +0200 |
commit | ab2d78de6a9d33e1470ae9db2ed6ed9565c817e5 (patch) | |
tree | 354095b872f871445363e4bced36ad7ef29c1933 /lib/events/roomcreateevent.h | |
parent | 607489a2e6a3e3238eac0178f5c7bbc70f178f46 (diff) | |
download | libquotient-ab2d78de6a9d33e1470ae9db2ed6ed9565c817e5.tar.gz libquotient-ab2d78de6a9d33e1470ae9db2ed6ed9565c817e5.zip |
fromJson()/toJson() refactoring
fromJson() is generalised to accept any JSON-like type while passing
QJsonObject to JsonConverter<>::load (instead of doLoad). This allows to
(still) rely on JsonConverter<> as a customisation point while providing
an opportunity to overload fromJson for custom types in a pointed way
(specifically, by providing the overload for
`fromJson(const QJsonObject&)`), instead of having to go with full-blown
JsonConverter<> specialisation. This will be used in a further commit
to simplify ReceiptEvent definition.
Using if constexpr in combination with constraints (`requires()`) -
the first such case in Quotient codebase - allowed to put the entire
logic in a single JsonConverter<>::load() body instead of having a
facility JsonExporter<> class for SFINAE.
Aside from that, fromJson<QJsonValue, QJsonValue> is entirely dropped
because it's not supposed to be used that way (it's no-op after all);
reflecting that, Event::unsignedPart() and Event::contentPart() no more
default to QJsonValue as the expected return type, you have to
explicitly provide the type instead (and as one can see from the changes
in the commit, it's actually better that way since it's better
to validate the value inside JSON - e.g. check QString or QJsonObject
for emptiness - than the QJsonValue envelope which may still wrap
an empty value).
toJson() is also generalised, replacing 3 functions with one that has
a constexpr if to discern between two kinds of types.
Diffstat (limited to 'lib/events/roomcreateevent.h')
0 files changed, 0 insertions, 0 deletions