Use QByteArrayView more in QConfFileSettingsPrivate's methods

Avoid allocating QBA methods when the QBAV methods can do just as
well, especially where the QBA was already being QBAV-wrapped to avoid
such allocations.

Change-Id: I180c2316362685ffda613bab2c761e72c4483fce
Reviewed-by: Sona Kurazyan <sona.kurazyan@qt.io>
Reviewed-by: Marc Mutz <marc.mutz@qt.io>
This commit is contained in:
Edward Welbourne 2022-03-21 15:01:31 +01:00
parent b4d003c77f
commit 08d20ee850
2 changed files with 15 additions and 15 deletions

View File

@ -573,9 +573,9 @@ void QSettingsPrivate::iniEscapedKey(const QString &key, QByteArray &result)
} }
} }
bool QSettingsPrivate::iniUnescapedKey(const QByteArray &key, int from, int to, QString &result) bool QSettingsPrivate::iniUnescapedKey(QByteArrayView key, int from, int to, QString &result)
{ {
const QString decoded = QString::fromUtf8(QByteArrayView(key).first(to).sliced(from)); const QString decoded = QString::fromUtf8(key.first(to).sliced(from));
const qsizetype size = decoded.size(); const qsizetype size = decoded.size();
result.reserve(result.length() + size); result.reserve(result.length() + size);
qsizetype i = 0; qsizetype i = 0;
@ -740,7 +740,7 @@ void QSettingsPrivate::iniEscapedStringList(const QStringList &strs, QByteArray
} }
} }
bool QSettingsPrivate::iniUnescapedStringList(const QByteArray &str, int from, int to, bool QSettingsPrivate::iniUnescapedStringList(QByteArrayView str, int from, int to,
QString &stringResult, QStringList &stringListResult) QString &stringResult, QStringList &stringListResult)
{ {
static const char escapeCodes[][2] = static const char escapeCodes[][2] =
@ -844,7 +844,7 @@ StNormal:
++j; ++j;
} }
stringResult += fromUtf8(QByteArrayView(str).first(j).sliced(i)); stringResult += fromUtf8(str.first(j).sliced(i));
i = j; i = j;
} }
} }
@ -1535,7 +1535,7 @@ static const char charTraits[256] =
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
}; };
bool QConfFileSettingsPrivate::readIniLine(const QByteArray &data, int &dataPos, bool QConfFileSettingsPrivate::readIniLine(QByteArrayView data, int &dataPos,
int &lineStart, int &lineLen, int &equalsPos) int &lineStart, int &lineLen, int &equalsPos)
{ {
int dataLen = data.length(); int dataLen = data.length();
@ -1606,7 +1606,7 @@ break_out_of_outer_loop:
possible, so if the user doesn't check the status he will get the possible, so if the user doesn't check the status he will get the
most out of the file anyway. most out of the file anyway.
*/ */
bool QConfFileSettingsPrivate::readIniFile(const QByteArray &data, bool QConfFileSettingsPrivate::readIniFile(QByteArrayView data,
UnparsedSettingsMap *unparsedIniSections) UnparsedSettingsMap *unparsedIniSections)
{ {
#define FLUSH_CURRENT_SECTION() \ #define FLUSH_CURRENT_SECTION() \
@ -1641,13 +1641,13 @@ bool QConfFileSettingsPrivate::readIniFile(const QByteArray &data,
FLUSH_CURRENT_SECTION(); FLUSH_CURRENT_SECTION();
// this is a section // this is a section
QByteArray iniSection; QByteArrayView iniSection;
int idx = data.indexOf(']', lineStart); int idx = data.indexOf(']', lineStart);
if (idx == -1 || idx >= lineStart + lineLen) { if (idx == -1 || idx >= lineStart + lineLen) {
ok = false; ok = false;
iniSection = data.mid(lineStart + 1, lineLen - 1); iniSection = data.sliced(lineStart + 1, lineLen - 1);
} else { } else {
iniSection = data.mid(lineStart + 1, idx - lineStart - 1); iniSection = data.sliced(lineStart + 1, idx - lineStart - 1);
} }
iniSection = iniSection.trimmed(); iniSection = iniSection.trimmed();
@ -1676,7 +1676,7 @@ bool QConfFileSettingsPrivate::readIniFile(const QByteArray &data,
#undef FLUSH_CURRENT_SECTION #undef FLUSH_CURRENT_SECTION
} }
bool QConfFileSettingsPrivate::readIniSection(const QSettingsKey &section, const QByteArray &data, bool QConfFileSettingsPrivate::readIniSection(const QSettingsKey &section, QByteArrayView data,
ParsedSettingsMap *settingsMap) ParsedSettingsMap *settingsMap)
{ {
QStringList strListValue; QStringList strListValue;

View File

@ -231,10 +231,10 @@ public:
static QString variantToString(const QVariant &v); static QString variantToString(const QVariant &v);
static QVariant stringToVariant(const QString &s); static QVariant stringToVariant(const QString &s);
static void iniEscapedKey(const QString &key, QByteArray &result); static void iniEscapedKey(const QString &key, QByteArray &result);
static bool iniUnescapedKey(const QByteArray &key, int from, int to, QString &result); static bool iniUnescapedKey(QByteArrayView key, int from, int to, QString &result);
static void iniEscapedString(const QString &str, QByteArray &result); static void iniEscapedString(const QString &str, QByteArray &result);
static void iniEscapedStringList(const QStringList &strs, QByteArray &result); static void iniEscapedStringList(const QStringList &strs, QByteArray &result);
static bool iniUnescapedStringList(const QByteArray &str, int from, int to, static bool iniUnescapedStringList(QByteArrayView str, int from, int to,
QString &stringResult, QStringList &stringListResult); QString &stringResult, QStringList &stringListResult);
static QStringList splitArgs(const QString &s, int idx); static QStringList splitArgs(const QString &s, int idx);
@ -276,10 +276,10 @@ public:
bool isWritable() const override; bool isWritable() const override;
QString fileName() const override; QString fileName() const override;
bool readIniFile(const QByteArray &data, UnparsedSettingsMap *unparsedIniSections); bool readIniFile(QByteArrayView data, UnparsedSettingsMap *unparsedIniSections);
static bool readIniSection(const QSettingsKey &section, const QByteArray &data, static bool readIniSection(const QSettingsKey &section, QByteArrayView data,
ParsedSettingsMap *settingsMap); ParsedSettingsMap *settingsMap);
static bool readIniLine(const QByteArray &data, int &dataPos, int &lineStart, int &lineLen, static bool readIniLine(QByteArrayView data, int &dataPos, int &lineStart, int &lineLen,
int &equalsPos); int &equalsPos);
private: private: