[Development] QAnyStringView
Marc Mutz
marc.mutz at kdab.com
Wed Jun 24 10:03:16 CEST 2020
On 2020-06-24 09:32, Marc Mutz via Development wrote:
[...]
>>> 2) the complexity is already there and QAnyStringView helps in
>>> reducing
>>> it:
>>>
>>> https://codereview.qt-project.org/c/qt/qtbase/+/303483 (QCalendar)
>>> https://codereview.qt-project.org/c/qt/qtbase/+/303512 (QColor)
>>> https://codereview.qt-project.org/c/qt/qtbase/+/303707 (arg())
>>> https://codereview.qt-project.org/c/qt/qtbase/+/303708 (QUuid)
I should note that apart from the above, I'm aware of the following
QtBase APIs outside string classes that would require porting to
QAnyStringView:
- https://codereview.qt-project.org/c/qt/qtbase/+/305402
(QVersionNumber)
- QtJSON (no idea what the status of this is - will it be removed?)
- QCbor (possibly; no idea what it is, except something like QtJSON)
- QDate/Time/QLocale format strings and number parsing
- QXmlStream
- QTextStream / QDataStream
- QtTest (compare functions)
That's not too much.
We also need to come up with a strategy for storing Q*View in QVariant,
like QLatin1String.
We have several other APIs that would benefit from QAnyStringView:
- QObject::setObjectName() - almost exclusively passed literals
- QRegularExpression's pattern - ditto, and pattern is compiled into
code anyway
- QSettings
- QUrl/Query, Network headers
- possibly QFont::fromString(), but that one is just weird (not a static
function)
- any fromString() and lookup APIs elsewhere in Qt
These are just off the top of my head. There's probably more.
Another, much more complicated issue (but we have that now) is hashing.
We have mixed-type equality, but the hash functions don't agree. This is
pre-existing, but a variant string type exacerbates the issue. The only
fix atm is to = delete qHash(QAnyStringView) because it's not
meaningfully (ie. consistently) implementable.
Thanks,
Marc
More information about the Development
mailing list