Use suitable abstraction for the null value of CollatorType

QCollatorPrivate defines a back-end-specific CollatorType and sets a
member of this type to 0; but ICU's version really wants a nullptr not
0.  So provide a named constant of the type, that's the NoCollator
value for use there.

Change-Id: Iad4d2f803ff4807ea568755efe00b9a92f1a8eeb
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
This commit is contained in:
Edward Welbourne 2018-07-11 18:25:33 +02:00
parent d283d81c1c
commit 6694065148
2 changed files with 9 additions and 5 deletions

View File

@ -61,7 +61,7 @@ void QCollatorPrivate::init()
collator = ucol_open(name.constData(), &status);
if (U_FAILURE(status)) {
qWarning("Could not create collator: %d", status);
collator = 0;
collator = nullptr;
dirty = false;
return;
}
@ -100,7 +100,7 @@ void QCollatorPrivate::cleanup()
{
if (collator)
ucol_close(collator);
collator = 0;
collator = nullptr;
}
int QCollator::compare(const QChar *s1, int len1, const QChar *s2, int len2) const

View File

@ -68,21 +68,25 @@ QT_BEGIN_NAMESPACE
#if QT_CONFIG(icu)
typedef UCollator *CollatorType;
typedef QByteArray CollatorKeyType;
const CollatorType NoCollator = nullptr;
#elif defined(Q_OS_OSX)
typedef CollatorRef CollatorType;
typedef QVector<UCCollationValue> CollatorKeyType;
const CollatorType NoCollator = 0;
#elif defined(Q_OS_WIN)
typedef QString CollatorKeyType;
typedef int CollatorType;
const CollatorType NoCollator = 0;
# ifdef Q_OS_WINRT
# define USE_COMPARESTRINGEX
# endif
#else //posix
#else // posix - ignores CollatorType collator, only handles system locale
typedef QVector<wchar_t> CollatorKeyType;
typedef int CollatorType;
const CollatorType NoCollator = 0;
#endif
class QCollatorPrivate
@ -102,14 +106,14 @@ public:
bool ignorePunctuation = false;
bool dirty = true;
CollatorType collator = 0;
CollatorType collator = NoCollator;
QCollatorPrivate(const QLocale &locale) : locale(locale) {}
~QCollatorPrivate() { cleanup(); }
void clear() {
cleanup();
collator = 0;
collator = NoCollator;
}
// Implemented by each back-end, in its own way: