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 <edward.welbourne@theqtcompany.com> Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
This commit is contained in:
parent
80d1e732d8
commit
3200653546
@ -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) {
|
||||
|
@ -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()); }
|
||||
|
Loading…
Reference in New Issue
Block a user