diff options
author | Christian Ehrlicher <ch.ehrlicher@gmx.de> | 2023-01-07 14:11:51 +0100 |
---|---|---|
committer | Marc Mutz <marc.mutz@qt.io> | 2023-01-20 13:16:35 +0000 |
commit | e04af5b9ea60f17787e4cf81cfe1b79a69be3406 (patch) | |
tree | ba59adba322f13af3e6247a2dc5a7ea2543d71c8 /src/sql/kernel | |
parent | 8d5ff757744c35e9c96d379ef5600cfbfaab609a (diff) |
SQL: use qsizetype and range-based for loops where possible
Some public functions are still using int instead qsizetype which
can't be changed until Qt7.
Change-Id: Ib6f210c344acce9f3836e8a5493a741eb8b2b385
Reviewed-by: Marc Mutz <marc.mutz@qt.io>
Diffstat (limited to 'src/sql/kernel')
-rw-r--r-- | src/sql/kernel/qsqlcachedresult.cpp | 2 | ||||
-rw-r--r-- | src/sql/kernel/qsqldatabase.cpp | 17 | ||||
-rw-r--r-- | src/sql/kernel/qsqldriver.cpp | 26 | ||||
-rw-r--r-- | src/sql/kernel/qsqlquery.cpp | 6 | ||||
-rw-r--r-- | src/sql/kernel/qsqlresult.cpp | 38 | ||||
-rw-r--r-- | src/sql/kernel/qsqlresult_p.h | 6 |
6 files changed, 45 insertions, 50 deletions
diff --git a/src/sql/kernel/qsqlcachedresult.cpp b/src/sql/kernel/qsqlcachedresult.cpp index 477cf6da11..3cc0b6419a 100644 --- a/src/sql/kernel/qsqlcachedresult.cpp +++ b/src/sql/kernel/qsqlcachedresult.cpp @@ -20,7 +20,7 @@ QT_BEGIN_NAMESPACE to indicate that we are not interested in the actual values. */ -static const uint initial_cache_size = 128; +static constexpr qsizetype initial_cache_size = 128; void QSqlCachedResultPrivate::cleanup() { diff --git a/src/sql/kernel/qsqldatabase.cpp b/src/sql/kernel/qsqldatabase.cpp index ee8ebcb8c7..8e896314eb 100644 --- a/src/sql/kernel/qsqldatabase.cpp +++ b/src/sql/kernel/qsqldatabase.cpp @@ -499,19 +499,18 @@ QStringList QSqlDatabase::drivers() if (QFactoryLoader *fl = loader()) { typedef QMultiMap<int, QString> PluginKeyMap; - typedef PluginKeyMap::const_iterator PluginKeyMapConstIterator; const PluginKeyMap keyMap = fl->keyMap(); - const PluginKeyMapConstIterator cend = keyMap.constEnd(); - for (PluginKeyMapConstIterator it = keyMap.constBegin(); it != cend; ++it) - if (!list.contains(it.value())) - list << it.value(); + for (const QString &val : keyMap) { + if (!list.contains(val)) + list << val; + } } - DriverDict dict = QSqlDatabasePrivate::driverDict(); - for (DriverDict::const_iterator i = dict.constBegin(); i != dict.constEnd(); ++i) { - if (!list.contains(i.key())) - list << i.key(); + const DriverDict dict = QSqlDatabasePrivate::driverDict(); + for (const auto &[k, _] : dict.asKeyValueRange()) { + if (!list.contains(k)) + list << k; } return list; diff --git a/src/sql/kernel/qsqldriver.cpp b/src/sql/kernel/qsqldriver.cpp index 6102aece24..f30fcfd349 100644 --- a/src/sql/kernel/qsqldriver.cpp +++ b/src/sql/kernel/qsqldriver.cpp @@ -8,6 +8,7 @@ #include "qsqlfield.h" #include "qsqlindex.h" #include "private/qsqldriver_p.h" +#include "private/qtools_p.h" #include <limits.h> @@ -445,12 +446,11 @@ QString QSqlDriver::sqlStatement(StatementType type, const QString &tableName, { const auto tableNameString = tableName.isEmpty() ? QString() : prepareIdentifier(tableName, QSqlDriver::TableName, this); - int i; QString s; s.reserve(128); switch (type) { case SelectStatement: - for (i = 0; i < rec.count(); ++i) { + for (qsizetype i = 0; i < rec.count(); ++i) { if (rec.isGenerated(i)) s.append(prepareIdentifier(rec.fieldName(i), QSqlDriver::FieldName, this)).append(", "_L1); } @@ -463,7 +463,7 @@ QString QSqlDriver::sqlStatement(StatementType type, const QString &tableName, { const QString tableNamePrefix = tableNameString.isEmpty() ? QString() : tableNameString + u'.'; - for (int i = 0; i < rec.count(); ++i) { + for (qsizetype i = 0; i < rec.count(); ++i) { if (!rec.isGenerated(i)) continue; s.append(s.isEmpty() ? "WHERE "_L1 : " AND "_L1); @@ -480,7 +480,7 @@ QString QSqlDriver::sqlStatement(StatementType type, const QString &tableName, } case UpdateStatement: s = s + "UPDATE "_L1 + tableNameString + " SET "_L1; - for (i = 0; i < rec.count(); ++i) { + for (qsizetype i = 0; i < rec.count(); ++i) { if (!rec.isGenerated(i)) continue; s.append(prepareIdentifier(rec.fieldName(i), QSqlDriver::FieldName, this)).append(u'='); @@ -501,7 +501,7 @@ QString QSqlDriver::sqlStatement(StatementType type, const QString &tableName, case InsertStatement: { s = s + "INSERT INTO "_L1 + tableNameString + " ("_L1; QString vals; - for (i = 0; i < rec.count(); ++i) { + for (qsizetype i = 0; i < rec.count(); ++i) { if (!rec.isGenerated(i)) continue; s.append(prepareIdentifier(rec.fieldName(i), QSqlDriver::FieldName, this)).append(", "_L1); @@ -612,15 +612,15 @@ QString QSqlDriver::formatValue(const QSqlField &field, bool trimStrings) const break; case QMetaType::QByteArray : { if (hasFeature(BLOB)) { - QByteArray ba = field.value().toByteArray(); - QString res; - static const char hexchars[] = "0123456789abcdef"; - for (int i = 0; i < ba.size(); ++i) { - uchar s = (uchar) ba[i]; - res += QLatin1Char(hexchars[s >> 4]); - res += QLatin1Char(hexchars[s & 0x0f]); + const QByteArray ba = field.value().toByteArray(); + r.reserve((ba.size() + 1) * 2); + r += u'\''; + for (const char c : ba) { + const uchar s = uchar(c); + r += QLatin1Char(QtMiscUtils::toHexLower(s >> 4)); + r += QLatin1Char(QtMiscUtils::toHexLower(s & 0x0f)); } - r = u'\'' + res + u'\''; + r += u'\''; break; } } diff --git a/src/sql/kernel/qsqlquery.cpp b/src/sql/kernel/qsqlquery.cpp index d729dbda6b..14a3dc4130 100644 --- a/src/sql/kernel/qsqlquery.cpp +++ b/src/sql/kernel/qsqlquery.cpp @@ -336,7 +336,7 @@ bool QSqlQuery::isNull(int field) const bool QSqlQuery::isNull(const QString &name) const { - int index = d->sqlResult->record().indexOf(name); + qsizetype index = d->sqlResult->record().indexOf(name); if (index > -1) return isNull(index); qWarning("QSqlQuery::isNull: unknown field name '%s'", qPrintable(name)); @@ -447,7 +447,7 @@ QVariant QSqlQuery::value(int index) const QVariant QSqlQuery::value(const QString& name) const { - int index = d->sqlResult->record().indexOf(name); + qsizetype index = d->sqlResult->record().indexOf(name); if (index > -1) return value(index); qWarning("QSqlQuery::value: unknown field name '%s'", qPrintable(name)); @@ -920,7 +920,7 @@ QSqlRecord QSqlQuery::record() const QSqlRecord rec = d->sqlResult->record(); if (isValid()) { - for (int i = 0; i < rec.count(); ++i) + for (qsizetype i = 0; i < rec.count(); ++i) rec.setValue(i, value(i)); } return rec; diff --git a/src/sql/kernel/qsqlresult.cpp b/src/sql/kernel/qsqlresult.cpp index d283e1212e..c1d8ec31f4 100644 --- a/src/sql/kernel/qsqlresult.cpp +++ b/src/sql/kernel/qsqlresult.cpp @@ -23,7 +23,7 @@ QString QSqlResultPrivate::holderAt(int index) const return holders.size() > index ? holders.at(index).holderName : fieldSerial(index); } -QString QSqlResultPrivate::fieldSerial(int i) const +QString QSqlResultPrivate::fieldSerial(qsizetype i) const { return QString(":%1"_L1).arg(i); } @@ -37,15 +37,15 @@ static bool qIsAlnum(QChar ch) QString QSqlResultPrivate::positionalToNamedBinding(const QString &query) const { - int n = query.size(); + const qsizetype n = query.size(); QString result; result.reserve(n * 5 / 4); QChar closingQuote; - int count = 0; + qsizetype count = 0; bool ignoreBraces = (sqldriver->dbmsType() == QSqlDriver::PostgreSQL); - for (int i = 0; i < n; ++i) { + for (qsizetype i = 0; i < n; ++i) { QChar ch = query.at(i); if (!closingQuote.isNull()) { if (ch == closingQuote) { @@ -84,13 +84,13 @@ QString QSqlResultPrivate::namedToPositionalBinding(const QString &query) query.trimmed().startsWith("EXECUTE BLOCK"_L1, Qt::CaseInsensitive)) return query; - int n = query.size(); + const qsizetype n = query.size(); QString result; result.reserve(n); QChar closingQuote; int count = 0; - int i = 0; + qsizetype i = 0; bool ignoreBraces = (sqldriver->dbmsType() == QSqlDriver::PostgreSQL); while (i < n) { @@ -624,12 +624,9 @@ bool QSqlResult::exec() // fake preparation - just replace the placeholders.. QString query = lastQuery(); if (d->binds == NamedBinding) { - int i; - QVariant val; - QString holder; - for (i = d->holders.size() - 1; i >= 0; --i) { - holder = d->holders.at(i).holderName; - val = d->values.value(d->indexes.value(holder).value(0,-1)); + for (qsizetype i = d->holders.size() - 1; i >= 0; --i) { + const QString &holder = d->holders.at(i).holderName; + const QVariant val = d->values.value(d->indexes.value(holder).value(0,-1)); QSqlField f(""_L1, val.metaType()); if (QSqlResultPrivate::isVariantNull(val)) f.setValue(QVariant()); @@ -639,21 +636,18 @@ bool QSqlResult::exec() holder.size(), driver()->formatValue(f)); } } else { - QString val; qsizetype i = 0; - int idx = 0; - for (idx = 0; idx < d->values.size(); ++idx) { + for (const QVariant &var : std::as_const(d->values)) { i = query.indexOf(u'?', i); if (i == -1) continue; - QVariant var = d->values.value(idx); QSqlField f(""_L1, var.metaType()); if (QSqlResultPrivate::isVariantNull(var)) f.clear(); else f.setValue(var); - val = driver()->formatValue(f); - query = query.replace(i, 1, driver()->formatValue(f)); + const QString val = driver()->formatValue(f); + query = query.replace(i, 1, val); i += val.size(); } } @@ -945,11 +939,13 @@ bool QSqlResult::execBatch(bool arrayBind) Q_UNUSED(arrayBind); Q_D(QSqlResult); - QList<QVariant> values = d->values; + const QList<QVariant> values = d->values; if (values.size() == 0) return false; - for (int i = 0; i < values.at(0).toList().size(); ++i) { - for (int j = 0; j < values.size(); ++j) + const qsizetype batchCount = values.at(0).toList().size(); + const qsizetype valueCount = values.size(); + for (qsizetype i = 0; i < batchCount; ++i) { + for (qsizetype j = 0; j < valueCount; ++j) bindValue(j, values.at(j).toList().at(i), QSql::In); if (!exec()) return false; diff --git a/src/sql/kernel/qsqlresult_p.h b/src/sql/kernel/qsqlresult_p.h index 7e84283b4f..1e8e8a3033 100644 --- a/src/sql/kernel/qsqlresult_p.h +++ b/src/sql/kernel/qsqlresult_p.h @@ -30,11 +30,11 @@ QT_BEGIN_NAMESPACE inline Class##Private* drv_d_func() { return !sqldriver ? nullptr : reinterpret_cast<Class *>(static_cast<QSqlDriver*>(sqldriver))->d_func(); } struct QHolder { - QHolder(const QString &hldr = QString(), int index = -1): holderName(hldr), holderPos(index) { } + QHolder(const QString &hldr = QString(), qsizetype index = -1): holderName(hldr), holderPos(index) { } bool operator==(const QHolder &h) const { return h.holderPos == holderPos && h.holderName == holderName; } bool operator!=(const QHolder &h) const { return h.holderPos != holderPos || h.holderName != holderName; } QString holderName; - int holderPos; + qsizetype holderPos; }; class Q_SQL_EXPORT QSqlResultPrivate @@ -72,7 +72,7 @@ public: clearIndex(); } - virtual QString fieldSerial(int) const; + virtual QString fieldSerial(qsizetype) const; QString positionalToNamedBinding(const QString &query) const; QString namedToPositionalBinding(const QString &query); QString holderAt(int index) const; |