From af75a27de7c8c4afc628aef32007d40c61725175 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?S=C3=A9rgio=20Martins?= <sergio.martins@kdab.com>
Date: Fri, 5 Jun 2015 19:13:15 +0100
Subject: [PATCH] itemsviews: Add 15 QList::reserve() calls

Change-Id: I4ed8872ecd560d51c00cb3d2b93e082c5abdd8dc
Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
---
 src/widgets/itemviews/qcolumnview.cpp       |  4 +++-
 src/widgets/itemviews/qfileiconprovider.cpp |  1 +
 src/widgets/itemviews/qlistwidget.cpp       | 18 ++++++++++++++----
 src/widgets/itemviews/qtablewidget.cpp      | 17 +++++++++++++----
 src/widgets/itemviews/qtreewidget.cpp       |  8 ++++++--
 5 files changed, 37 insertions(+), 11 deletions(-)

diff --git a/src/widgets/itemviews/qcolumnview.cpp b/src/widgets/itemviews/qcolumnview.cpp
index 5c317bbb0c7..0ee03035a41 100644
--- a/src/widgets/itemviews/qcolumnview.cpp
+++ b/src/widgets/itemviews/qcolumnview.cpp
@@ -878,7 +878,9 @@ QList<int> QColumnView::columnWidths() const
 {
     Q_D(const QColumnView);
     QList<int> list;
-    for (int i = 0; i < d->columns.count(); ++i)
+    const int columnCount = d->columns.count();
+    list.reserve(columnCount);
+    for (int i = 0; i < columnCount; ++i)
         list.append(d->columnSizes.at(i));
     return list;
 }
diff --git a/src/widgets/itemviews/qfileiconprovider.cpp b/src/widgets/itemviews/qfileiconprovider.cpp
index 1cc3a2a9055..cab32619c53 100644
--- a/src/widgets/itemviews/qfileiconprovider.cpp
+++ b/src/widgets/itemviews/qfileiconprovider.cpp
@@ -117,6 +117,7 @@ public:
             if (themeSizes.isEmpty())
                 return sizes;
 
+            sizes.reserve(themeSizes.count());
             foreach (int size, themeSizes)
                 sizes << QSize(size, size);
         }
diff --git a/src/widgets/itemviews/qlistwidget.cpp b/src/widgets/itemviews/qlistwidget.cpp
index 66f965aa54e..668bfda59d6 100644
--- a/src/widgets/itemviews/qlistwidget.cpp
+++ b/src/widgets/itemviews/qlistwidget.cpp
@@ -299,7 +299,10 @@ void QListModel::sort(int column, Qt::SortOrder order)
     std::sort(sorting.begin(), sorting.end(), compare);
     QModelIndexList fromIndexes;
     QModelIndexList toIndexes;
-    for (int r = 0; r < sorting.count(); ++r) {
+    const int sortingCount = sorting.count();
+    fromIndexes.reserve(sortingCount);
+    toIndexes.reserve(sortingCount);
+    for (int r = 0; r < sortingCount; ++r) {
         QListWidgetItem *item = sorting.at(r).first;
         toIndexes.append(createIndex(r, 0, item));
         fromIndexes.append(createIndex(sorting.at(r).second, 0, sorting.at(r).first));
@@ -423,7 +426,9 @@ QMimeData *QListModel::internalMimeData()  const
 QMimeData *QListModel::mimeData(const QModelIndexList &indexes) const
 {
     QList<QListWidgetItem*> itemlist;
-    for (int i = 0; i < indexes.count(); ++i)
+    const int indexesCount = indexes.count();
+    itemlist.reserve(indexesCount);
+    for (int i = 0; i < indexesCount; ++i)
         itemlist << at(indexes.at(i).row());
     const QListWidget *view = qobject_cast<const QListWidget*>(QObject::parent());
 
@@ -1710,7 +1715,9 @@ QList<QListWidgetItem*> QListWidget::findItems(const QString &text, Qt::MatchFla
     QModelIndexList indexes = d->listModel()->match(model()->index(0, 0, QModelIndex()),
                                                 Qt::DisplayRole, text, -1, flags);
     QList<QListWidgetItem*> items;
-    for (int i = 0; i < indexes.size(); ++i)
+    const int indexesSize = indexes.size();
+    items.reserve(indexesSize);
+    for (int i = 0; i < indexesSize; ++i)
         items.append(d->listModel()->at(indexes.at(i).row()));
     return items;
 }
@@ -1795,6 +1802,7 @@ QMimeData *QListWidget::mimeData(const QList<QListWidgetItem*> items) const
 
     // if non empty, it's called from the model's own mimeData
     if (cachedIndexes.isEmpty()) {
+        cachedIndexes.reserve(items.count());
         foreach (QListWidgetItem *item, items)
             cachedIndexes << indexFromItem(item);
 
@@ -1845,7 +1853,9 @@ void QListWidget::dropEvent(QDropEvent *event) {
         if (d->dropOn(event, &row, &col, &topIndex)) {
             QList<QModelIndex> selIndexes = selectedIndexes();
             QList<QPersistentModelIndex> persIndexes;
-            for (int i = 0; i < selIndexes.count(); i++)
+            const int selIndexesCount = selIndexes.count();
+            persIndexes.reserve(selIndexesCount);
+            for (int i = 0; i < selIndexesCount; i++)
                 persIndexes.append(selIndexes.at(i));
 
             if (persIndexes.contains(topIndex))
diff --git a/src/widgets/itemviews/qtablewidget.cpp b/src/widgets/itemviews/qtablewidget.cpp
index 9ebcbc35a76..b2d4abe5ac6 100644
--- a/src/widgets/itemviews/qtablewidget.cpp
+++ b/src/widgets/itemviews/qtablewidget.cpp
@@ -812,7 +812,9 @@ QMimeData *QTableModel::internalMimeData()  const
 QMimeData *QTableModel::mimeData(const QModelIndexList &indexes) const
 {
     QList<QTableWidgetItem*> items;
-    for (int i = 0; i < indexes.count(); ++i)
+    const int indexesCount = indexes.count();
+    items.reserve(indexesCount);
+    for (int i = 0; i < indexesCount; ++i)
         items << item(indexes.at(i));
     const QTableWidget *view = qobject_cast<const QTableWidget*>(QObject::parent());
 
@@ -2326,7 +2328,9 @@ QList<QTableWidgetSelectionRange> QTableWidget::selectedRanges() const
 {
     const QList<QItemSelectionRange> ranges = selectionModel()->selection();
     QList<QTableWidgetSelectionRange> result;
-    for (int i = 0; i < ranges.count(); ++i)
+    const int rangesCount = ranges.count();
+    result.reserve(rangesCount);
+    for (int i = 0; i < rangesCount; ++i)
         result.append(QTableWidgetSelectionRange(ranges.at(i).top(),
                                                  ranges.at(i).left(),
                                                  ranges.at(i).bottom(),
@@ -2372,7 +2376,9 @@ QList<QTableWidgetItem*> QTableWidget::findItems(const QString &text, Qt::MatchF
         indexes += d->model->match(model()->index(0, column, QModelIndex()),
                                      Qt::DisplayRole, text, -1, flags);
     QList<QTableWidgetItem*> items;
-    for (int i = 0; i < indexes.size(); ++i)
+    const int indexCount = indexes.size();
+    items.reserve(indexCount);
+    for (int i = 0; i < indexCount; ++i)
         items.append(d->tableModel()->item(indexes.at(i)));
     return items;
 }
@@ -2565,6 +2571,7 @@ QMimeData *QTableWidget::mimeData(const QList<QTableWidgetItem*> items) const
 
     // if non empty, it's called from the model's own mimeData
     if (cachedIndexes.isEmpty()) {
+        cachedIndexes.reserve(items.count());
         foreach (QTableWidgetItem *item, items)
             cachedIndexes << indexFromItem(item);
 
@@ -2676,7 +2683,9 @@ void QTableWidget::dropEvent(QDropEvent *event) {
             }
 
             QList<QTableWidgetItem *> taken;
-            for (int i = 0; i < indexes.count(); ++i)
+            const int indexesCount = indexes.count();
+            taken.reserve(indexesCount);
+            for (int i = 0; i < indexesCount; ++i)
                 taken.append(takeItem(indexes.at(i).row(), indexes.at(i).column()));
 
             for (int i = 0; i < indexes.count(); ++i) {
diff --git a/src/widgets/itemviews/qtreewidget.cpp b/src/widgets/itemviews/qtreewidget.cpp
index 1366a003184..5970e942927 100644
--- a/src/widgets/itemviews/qtreewidget.cpp
+++ b/src/widgets/itemviews/qtreewidget.cpp
@@ -3042,7 +3042,9 @@ QList<QTreeWidgetItem*> QTreeWidget::findItems(const QString &text, Qt::MatchFla
     QModelIndexList indexes = d->model->match(model()->index(0, column, QModelIndex()),
                                                 Qt::DisplayRole, text, -1, flags);
     QList<QTreeWidgetItem*> items;
-    for (int i = 0; i < indexes.size(); ++i)
+    const int indexesSize = indexes.size();
+    items.reserve(indexesSize);
+    for (int i = 0; i < indexesSize; ++i)
         items.append(d->item(indexes.at(i)));
     return items;
 }
@@ -3371,7 +3373,9 @@ void QTreeWidget::dropEvent(QDropEvent *event) {
         if (d->dropOn(event, &row, &col, &topIndex)) {
             QList<QModelIndex> idxs = selectedIndexes();
             QList<QPersistentModelIndex> indexes;
-            for (int i = 0; i < idxs.count(); i++)
+            const int indexesCount = idxs.count();
+            indexes.reserve(indexesCount);
+            for (int i = 0; i < indexesCount; i++)
                 indexes.append(idxs.at(i));
 
             if (indexes.contains(topIndex))
-- 
GitLab