From 32006535461d05d48bb8c63d27ed7e08215d7165 Mon Sep 17 00:00:00 2001 From: Anton Kudryavtsev Date: Thu, 31 Mar 2016 13:54:30 +0300 Subject: QLocalePrivate: add overloaded codeToScript() and codeToLanguage() ... for QStringRef and QChar array. Now we can use QStringRef arg or QChar array arg to avoid unnecessary allocations. Also mark these functions as Q_DECL_NOTHROW. Change-Id: Ibe75346d80cc413e303fad886ecb82dbdb89af24 Reviewed-by: Edward Welbourne Reviewed-by: Marc Mutz --- src/corelib/tools/qlocale.cpp | 14 ++++++-------- src/corelib/tools/qlocale_p.h | 8 ++++++-- 2 files changed, 12 insertions(+), 10 deletions(-) (limited to 'src') diff --git a/src/corelib/tools/qlocale.cpp b/src/corelib/tools/qlocale.cpp index 8d64e02814..e5a21dfef4 100644 --- a/src/corelib/tools/qlocale.cpp +++ b/src/corelib/tools/qlocale.cpp @@ -91,9 +91,8 @@ QT_BEGIN_INCLUDE_NAMESPACE #include "qlocale_data_p.h" QT_END_INCLUDE_NAMESPACE -QLocale::Language QLocalePrivate::codeToLanguage(const QString &code) +QLocale::Language QLocalePrivate::codeToLanguage(const QChar *code, int len) Q_DECL_NOTHROW { - int len = code.length(); if (len != 2 && len != 3) return QLocale::C; ushort uc1 = code[0].toLower().unicode(); @@ -134,17 +133,16 @@ QLocale::Language QLocalePrivate::codeToLanguage(const QString &code) return QLocale::C; } -QLocale::Script QLocalePrivate::codeToScript(const QString &code) +QLocale::Script QLocalePrivate::codeToScript(const QChar *code, int len) Q_DECL_NOTHROW { - int len = code.length(); if (len != 4) return QLocale::AnyScript; // script is titlecased in our data - unsigned char c0 = code.at(0).toUpper().toLatin1(); - unsigned char c1 = code.at(1).toLower().toLatin1(); - unsigned char c2 = code.at(2).toLower().toLatin1(); - unsigned char c3 = code.at(3).toLower().toLatin1(); + unsigned char c0 = code[0].toUpper().toLatin1(); + unsigned char c1 = code[1].toLower().toLatin1(); + unsigned char c2 = code[2].toLower().toLatin1(); + unsigned char c3 = code[3].toLower().toLatin1(); const unsigned char *c = script_code_list; for (int i = 0; i < QLocale::LastScript; ++i, c += 4) { diff --git a/src/corelib/tools/qlocale_p.h b/src/corelib/tools/qlocale_p.h index edffcea3e5..f95edf4d14 100644 --- a/src/corelib/tools/qlocale_p.h +++ b/src/corelib/tools/qlocale_p.h @@ -353,8 +353,12 @@ public: static QString languageToCode(QLocale::Language language); static QString scriptToCode(QLocale::Script script); static QString countryToCode(QLocale::Country country); - static QLocale::Language codeToLanguage(const QString &code); - static QLocale::Script codeToScript(const QString &code); + static QLocale::Language codeToLanguage(const QChar *code, int len) Q_DECL_NOTHROW; + static QLocale::Language codeToLanguage(const QString &code) Q_DECL_NOTHROW { return codeToLanguage(code.data(), code.size()); } + static QLocale::Language codeToLanguage(const QStringRef &code) Q_DECL_NOTHROW { return codeToLanguage(code.data(), code.size()); } + static QLocale::Script codeToScript(const QChar *code, int len) Q_DECL_NOTHROW; + static QLocale::Script codeToScript(const QString &code) Q_DECL_NOTHROW { return codeToScript(code.data(), code.size()); } + static QLocale::Script codeToScript(const QStringRef &code) Q_DECL_NOTHROW { return codeToScript(code.data(), code.size()); } static QLocale::Country codeToCountry(const QChar *code, int len) Q_DECL_NOTHROW; static QLocale::Country codeToCountry(const QString &code) Q_DECL_NOTHROW { return codeToCountry(code.data(), code.size()); } static QLocale::Country codeToCountry(const QStringRef &code) Q_DECL_NOTHROW { return codeToCountry(code.data(), code.size()); } -- cgit v1.2.3