Supply locale to QCollatorPrivate via its constructor

Both places that new'd it were then setting its locale themselves;
they might as well do it tidily by passing it to the constructor.
There's also no need to cleanup() in the constructor; every back-end
is a no-op when collator has its initial value.

Tidied up the class declaration in the process:
 * moved {con,de}structor to be first methods
 * comment on the two methods back-ends provide

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

View File

@ -77,9 +77,8 @@ QT_BEGIN_NAMESPACE
\sa setLocale() \sa setLocale()
*/ */
QCollator::QCollator(const QLocale &locale) QCollator::QCollator(const QLocale &locale)
: d(new QCollatorPrivate) : d(new QCollatorPrivate(locale))
{ {
d->locale = locale;
d->init(); d->init();
} }
@ -158,8 +157,7 @@ QCollator &QCollator::operator=(const QCollator &other)
void QCollator::detach() void QCollator::detach()
{ {
if (d->ref.load() != 1) { if (d->ref.load() != 1) {
QCollatorPrivate *x = new QCollatorPrivate; QCollatorPrivate *x = new QCollatorPrivate(d->locale);
x->locale = d->locale;
if (!d->ref.deref()) if (!d->ref.deref())
delete d; delete d;
d = x; d = x;

View File

@ -104,19 +104,18 @@ public:
CollatorType collator = 0; CollatorType collator = 0;
QCollatorPrivate(const QLocale &locale) : locale(locale) {}
~QCollatorPrivate() { cleanup(); }
void clear() { void clear() {
cleanup(); cleanup();
collator = 0; collator = 0;
} }
// Implemented by each back-end, in its own way:
void init(); void init();
void cleanup(); void cleanup();
QCollatorPrivate()
{ cleanup(); }
~QCollatorPrivate() { cleanup(); }
private: private:
Q_DISABLE_COPY(QCollatorPrivate) Q_DISABLE_COPY(QCollatorPrivate)
}; };