24.05.2019, 14:27, "Konstantin Tokarev" <annu...@yandex.ru>:
> Actually, clazy provides related checks "inefficient-qlist". I think 
> following plan can work:
>
> 1. Implement opposite "replace-efficient-qlist-to-qvector" check in clazy 
> which finds QList<T>
> where sizeof(T) <= sizeof(void*) and T is movable, and allows automatic 
> replacement with QVector
>
> 2. Apply this transformation to all public and private Qt APIs, and refrain 
> from QList replacements
> in places which are not sanctioned by tool.

2a. Replace remaining uses of QList in public and private APIs with 
typedefs/aliases, like
QList<QSomething*> -> QSomethingList

>
> 3. Implement clazy check "inefficient-qvector-insert" which warns when 
> prepend/push_front and
> insert into middle are used with QVector.
>
> Algorithm of porting to Qt 6 could be:
>
> 1. Run inefficient-qvector-insert over code base and store results
> 2. Apply replace-efficient-qlist-to-qvector to whole code base
> 3. Run inefficient-qvector-insert again and make a diff with step 1, and 
> suggest user to check
> these cases carefully for possible reference issues and performance 
> regressions
>
> Results:
> 1. Do a big chunk of worldwide QList elemination without compatibility hacks 
> and with relatively
> low risk
> 2. Users should finally get the message that QList is not the go-to container 
> preferred in most cases.
>
> Porting other part of QList usages can be delayed to Qt7.
-- 
Regards,
Konstantin

_______________________________________________
Development mailing list
Development@qt-project.org
https://lists.qt-project.org/listinfo/development

Reply via email to