[Development] QList

Giuseppe D'Angelo giuseppe.dangelo at kdab.com
Mon Mar 27 20:14:24 CEST 2017


Il 27/03/2017 17:46, Thiago Macieira ha scritto:
>> Another point that hasn’t been discussed yet, is how to handle QStringRef.
>> In my opinion, we should deprecate it, but it’s used quite a bit in some
>> parts of our API (QXmlStreamReader comes to my mind). It would be good to
>> also think about how to solve that case. QStringRef has a pointer to a
>> QString, but does not increase the refcount of it. So it looks like we can
>> simply make it an alias for QStringView. That would break the
>> QStringRef::string() method (which we should probably deprecate in 5.10 to
>> prepare for the change), but everything else should stay compatible.
> We can't... I tried that a while ago and it broke QXmlStreamReader and other 
> places badly. The issue is that they expect QStringRef to continue to be valid 
> after mutating the QString it was bound to. That works because of the pointer 
> to the QString, as opposed to a pointer to the data. And that's just what I 
> found by after changing QStringRef a few years ago to be like QStringView 
> today and simply running Qt Creator.
> 
> We can port away from QStringRef and into QStringView as we go by and where 
> it's safe. But unless we're willing to refactor some code substantially. 
> Unfortunately, it's very likely we can't begin this work now as it would break 
> the QStringRef API and thus be BIC/SIC.

If we can't make it an alias, can we start adding extra functions for
the various QStringRef *ref() methods (in QXmlStreamReader,
QRegularExpressionMatch, probably elsewhere too), returning QStringView?

Cheers,

-- 
Giuseppe D'Angelo | giuseppe.dangelo at kdab.com | Senior Software Engineer
KDAB (UK) Ltd., a KDAB Group company | Tel: UK +44-1625-809908
KDAB - Qt, C++ and OpenGL Experts

-------------- next part --------------
A non-text attachment was scrubbed...
Name: smime.p7s
Type: application/pkcs7-signature
Size: 4007 bytes
Desc: Firma crittografica S/MIME
URL: <http://lists.qt-project.org/pipermail/development/attachments/20170327/1a76bcea/attachment.bin>


More information about the Development mailing list