From dec7e3ebb7afac615f7bf6ffa0f48e049605e8a9 Mon Sep 17 00:00:00 2001 From: Marc Mutz Date: Wed, 21 Jan 2015 15:04:59 +0100 Subject: QDateTimePrivate: replace out parameters with return-by-value in getDateTime() Compilers don't like out parameters. Effects on Linux GCC 4.9 stripped release builds: text -584B data +-0B relocs +-0 Change-Id: Ie00c89b9edaced3a6adeb2707734c8f5238e67c1 Reviewed-by: Thiago Macieira --- src/corelib/tools/qdatetime.cpp | 67 ++++++++++++++++++++--------------------- src/corelib/tools/qdatetime_p.h | 3 +- 2 files changed, 35 insertions(+), 35 deletions(-) (limited to 'src') diff --git a/src/corelib/tools/qdatetime.cpp b/src/corelib/tools/qdatetime.cpp index a16cfef1b2..8a1a885246 100644 --- a/src/corelib/tools/qdatetime.cpp +++ b/src/corelib/tools/qdatetime.cpp @@ -2627,15 +2627,18 @@ void QDateTimePrivate::setDateTime(const QDate &date, const QTime &time) checkValidDateTime(); } -void QDateTimePrivate::getDateTime(QDate *date, QTime *time) const +QPair QDateTimePrivate::getDateTime() const { - msecsToTime(m_msecs, date, time); + QPair result; + msecsToTime(m_msecs, &result.first, &result.second); - if (date && isNullDate()) - *date = QDate(); + if (isNullDate()) + result.first = QDate(); - if (time && isNullTime()) - *time = QTime(); + if (isNullTime()) + result.second = QTime(); + + return result; } // Set the Daylight Status if LocalTime set via msecs @@ -3523,9 +3526,9 @@ QString QDateTime::toString(Qt::DateFormat format) const default: #ifndef QT_NO_TEXTDATE case Qt::TextDate: { - QDate dt; - QTime tm; - d->getDateTime(&dt, &tm); + const QPair p = d->getDateTime(); + const QDate &dt = p.first; + const QTime &tm = p.second; //We cant use date.toString(Qt::TextDate) as we need to insert the time before the year buf = QString::fromLatin1("%1 %2 %3 %4 %5").arg(dt.shortDayName(dt.dayOfWeek())) .arg(dt.shortMonthName(dt.month())) @@ -3541,9 +3544,9 @@ QString QDateTime::toString(Qt::DateFormat format) const } #endif case Qt::ISODate: { - QDate dt; - QTime tm; - d->getDateTime(&dt, &tm); + const QPair p = d->getDateTime(); + const QDate &dt = p.first; + const QTime &tm = p.second; buf = dt.toString(Qt::ISODate); if (buf.isEmpty()) return QString(); // failed to convert @@ -3661,9 +3664,9 @@ QDateTime QDateTime::addDays(qint64 ndays) const { QDateTime dt(*this); dt.detach(); - QDate date; - QTime time; - d->getDateTime(&date, &time); + QPair p = d->getDateTime(); + QDate &date = p.first; + QTime &time = p.second; date = date.addDays(ndays); // Result might fall into "missing" DaylightTime transition hour, // so call conversion and use the adjusted returned time @@ -3697,9 +3700,9 @@ QDateTime QDateTime::addMonths(int nmonths) const { QDateTime dt(*this); dt.detach(); - QDate date; - QTime time; - d->getDateTime(&date, &time); + QPair p = d->getDateTime(); + QDate &date = p.first; + QTime &time = p.second; date = date.addMonths(nmonths); // Result might fall into "missing" DaylightTime transition hour, // so call conversion and use the adjusted returned time @@ -3733,9 +3736,9 @@ QDateTime QDateTime::addYears(int nyears) const { QDateTime dt(*this); dt.detach(); - QDate date; - QTime time; - d->getDateTime(&date, &time); + QPair p = d->getDateTime(); + QDate &date = p.first; + QTime &time = p.second; date = date.addYears(nyears); // Result might fall into "missing" DaylightTime transition hour, // so call conversion and use the adjusted returned time @@ -4769,14 +4772,13 @@ QDataStream &operator>>(QDataStream &in, QTime &time) */ QDataStream &operator<<(QDataStream &out, const QDateTime &dateTime) { - QDate dt; - QTime tm; + QPair dateAndTime; if (out.version() >= QDataStream::Qt_5_2) { // In 5.2 we switched to using Qt::TimeSpec and added offset support - dateTime.d->getDateTime(&dt, &tm); - out << dt << tm << qint8(dateTime.timeSpec()); + dateAndTime = dateTime.d->getDateTime(); + out << dateAndTime << qint8(dateTime.timeSpec()); if (dateTime.timeSpec() == Qt::OffsetFromUTC) out << qint32(dateTime.offsetFromUtc()); #ifndef QT_BOOTSTRAPPED @@ -4790,17 +4792,14 @@ QDataStream &operator<<(QDataStream &out, const QDateTime &dateTime) // This approach is wrong and should not be used again; it breaks // the guarantee that a deserialised local datetime is the same time // of day, regardless of which timezone it was serialised in. - if (dateTime.isValid()) - dateTime.toUTC().d->getDateTime(&dt, &tm); - else - dateTime.d->getDateTime(&dt, &tm); - out << dt << tm << qint8(dateTime.timeSpec()); + dateAndTime = (dateTime.isValid() ? dateTime.toUTC() : dateTime).d->getDateTime(); + out << dateAndTime << qint8(dateTime.timeSpec()); } else if (out.version() >= QDataStream::Qt_4_0) { // From 4.0 to 5.1 (except 5.0) we used QDateTimePrivate::Spec - dateTime.d->getDateTime(&dt, &tm); - out << dt << tm; + dateAndTime = dateTime.d->getDateTime(); + out << dateAndTime; if (out.version() >= QDataStream::Qt_4_0) { switch (dateTime.timeSpec()) { case Qt::UTC: @@ -4823,8 +4822,8 @@ QDataStream &operator<<(QDataStream &out, const QDateTime &dateTime) } else { // version < QDataStream::Qt_4_0 // Before 4.0 there was no TimeSpec, only Qt::LocalTime was supported - dateTime.d->getDateTime(&dt, &tm); - out << dt << tm; + dateAndTime = dateTime.d->getDateTime(); + out << dateAndTime; } diff --git a/src/corelib/tools/qdatetime_p.h b/src/corelib/tools/qdatetime_p.h index b8934f7f70..9f663dab99 100644 --- a/src/corelib/tools/qdatetime_p.h +++ b/src/corelib/tools/qdatetime_p.h @@ -48,6 +48,7 @@ #include "qplatformdefs.h" #include "QtCore/qatomic.h" #include "QtCore/qdatetime.h" +#include "QtCore/qpair.h" #include "qtimezone.h" @@ -113,7 +114,7 @@ public: void setTimeSpec(Qt::TimeSpec spec, int offsetSeconds); void setDateTime(const QDate &date, const QTime &time); - void getDateTime(QDate *date, QTime *time) const; + QPair getDateTime() const; void setDaylightStatus(DaylightStatus status); DaylightStatus daylightStatus() const; -- cgit v1.2.3