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 <thiago.macieira@intel.com>
This commit is contained in:
Marc Mutz 2015-01-21 15:04:59 +01:00
parent 2450a66001
commit dec7e3ebb7
2 changed files with 35 additions and 35 deletions

View File

@ -2627,15 +2627,18 @@ void QDateTimePrivate::setDateTime(const QDate &date, const QTime &time)
checkValidDateTime(); checkValidDateTime();
} }
void QDateTimePrivate::getDateTime(QDate *date, QTime *time) const QPair<QDate, QTime> QDateTimePrivate::getDateTime() const
{ {
msecsToTime(m_msecs, date, time); QPair<QDate, QTime> result;
msecsToTime(m_msecs, &result.first, &result.second);
if (date && isNullDate()) if (isNullDate())
*date = QDate(); result.first = QDate();
if (time && isNullTime()) if (isNullTime())
*time = QTime(); result.second = QTime();
return result;
} }
// Set the Daylight Status if LocalTime set via msecs // Set the Daylight Status if LocalTime set via msecs
@ -3523,9 +3526,9 @@ QString QDateTime::toString(Qt::DateFormat format) const
default: default:
#ifndef QT_NO_TEXTDATE #ifndef QT_NO_TEXTDATE
case Qt::TextDate: { case Qt::TextDate: {
QDate dt; const QPair<QDate, QTime> p = d->getDateTime();
QTime tm; const QDate &dt = p.first;
d->getDateTime(&dt, &tm); const QTime &tm = p.second;
//We cant use date.toString(Qt::TextDate) as we need to insert the time before the year //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())) buf = QString::fromLatin1("%1 %2 %3 %4 %5").arg(dt.shortDayName(dt.dayOfWeek()))
.arg(dt.shortMonthName(dt.month())) .arg(dt.shortMonthName(dt.month()))
@ -3541,9 +3544,9 @@ QString QDateTime::toString(Qt::DateFormat format) const
} }
#endif #endif
case Qt::ISODate: { case Qt::ISODate: {
QDate dt; const QPair<QDate, QTime> p = d->getDateTime();
QTime tm; const QDate &dt = p.first;
d->getDateTime(&dt, &tm); const QTime &tm = p.second;
buf = dt.toString(Qt::ISODate); buf = dt.toString(Qt::ISODate);
if (buf.isEmpty()) if (buf.isEmpty())
return QString(); // failed to convert return QString(); // failed to convert
@ -3661,9 +3664,9 @@ QDateTime QDateTime::addDays(qint64 ndays) const
{ {
QDateTime dt(*this); QDateTime dt(*this);
dt.detach(); dt.detach();
QDate date; QPair<QDate, QTime> p = d->getDateTime();
QTime time; QDate &date = p.first;
d->getDateTime(&date, &time); QTime &time = p.second;
date = date.addDays(ndays); date = date.addDays(ndays);
// Result might fall into "missing" DaylightTime transition hour, // Result might fall into "missing" DaylightTime transition hour,
// so call conversion and use the adjusted returned time // so call conversion and use the adjusted returned time
@ -3697,9 +3700,9 @@ QDateTime QDateTime::addMonths(int nmonths) const
{ {
QDateTime dt(*this); QDateTime dt(*this);
dt.detach(); dt.detach();
QDate date; QPair<QDate, QTime> p = d->getDateTime();
QTime time; QDate &date = p.first;
d->getDateTime(&date, &time); QTime &time = p.second;
date = date.addMonths(nmonths); date = date.addMonths(nmonths);
// Result might fall into "missing" DaylightTime transition hour, // Result might fall into "missing" DaylightTime transition hour,
// so call conversion and use the adjusted returned time // so call conversion and use the adjusted returned time
@ -3733,9 +3736,9 @@ QDateTime QDateTime::addYears(int nyears) const
{ {
QDateTime dt(*this); QDateTime dt(*this);
dt.detach(); dt.detach();
QDate date; QPair<QDate, QTime> p = d->getDateTime();
QTime time; QDate &date = p.first;
d->getDateTime(&date, &time); QTime &time = p.second;
date = date.addYears(nyears); date = date.addYears(nyears);
// Result might fall into "missing" DaylightTime transition hour, // Result might fall into "missing" DaylightTime transition hour,
// so call conversion and use the adjusted returned time // 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) QDataStream &operator<<(QDataStream &out, const QDateTime &dateTime)
{ {
QDate dt; QPair<QDate, QTime> dateAndTime;
QTime tm;
if (out.version() >= QDataStream::Qt_5_2) { if (out.version() >= QDataStream::Qt_5_2) {
// In 5.2 we switched to using Qt::TimeSpec and added offset support // In 5.2 we switched to using Qt::TimeSpec and added offset support
dateTime.d->getDateTime(&dt, &tm); dateAndTime = dateTime.d->getDateTime();
out << dt << tm << qint8(dateTime.timeSpec()); out << dateAndTime << qint8(dateTime.timeSpec());
if (dateTime.timeSpec() == Qt::OffsetFromUTC) if (dateTime.timeSpec() == Qt::OffsetFromUTC)
out << qint32(dateTime.offsetFromUtc()); out << qint32(dateTime.offsetFromUtc());
#ifndef QT_BOOTSTRAPPED #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 // This approach is wrong and should not be used again; it breaks
// the guarantee that a deserialised local datetime is the same time // the guarantee that a deserialised local datetime is the same time
// of day, regardless of which timezone it was serialised in. // of day, regardless of which timezone it was serialised in.
if (dateTime.isValid()) dateAndTime = (dateTime.isValid() ? dateTime.toUTC() : dateTime).d->getDateTime();
dateTime.toUTC().d->getDateTime(&dt, &tm); out << dateAndTime << qint8(dateTime.timeSpec());
else
dateTime.d->getDateTime(&dt, &tm);
out << dt << tm << qint8(dateTime.timeSpec());
} else if (out.version() >= QDataStream::Qt_4_0) { } else if (out.version() >= QDataStream::Qt_4_0) {
// From 4.0 to 5.1 (except 5.0) we used QDateTimePrivate::Spec // From 4.0 to 5.1 (except 5.0) we used QDateTimePrivate::Spec
dateTime.d->getDateTime(&dt, &tm); dateAndTime = dateTime.d->getDateTime();
out << dt << tm; out << dateAndTime;
if (out.version() >= QDataStream::Qt_4_0) { if (out.version() >= QDataStream::Qt_4_0) {
switch (dateTime.timeSpec()) { switch (dateTime.timeSpec()) {
case Qt::UTC: case Qt::UTC:
@ -4823,8 +4822,8 @@ QDataStream &operator<<(QDataStream &out, const QDateTime &dateTime)
} else { // version < QDataStream::Qt_4_0 } else { // version < QDataStream::Qt_4_0
// Before 4.0 there was no TimeSpec, only Qt::LocalTime was supported // Before 4.0 there was no TimeSpec, only Qt::LocalTime was supported
dateTime.d->getDateTime(&dt, &tm); dateAndTime = dateTime.d->getDateTime();
out << dt << tm; out << dateAndTime;
} }

View File

@ -48,6 +48,7 @@
#include "qplatformdefs.h" #include "qplatformdefs.h"
#include "QtCore/qatomic.h" #include "QtCore/qatomic.h"
#include "QtCore/qdatetime.h" #include "QtCore/qdatetime.h"
#include "QtCore/qpair.h"
#include "qtimezone.h" #include "qtimezone.h"
@ -113,7 +114,7 @@ public:
void setTimeSpec(Qt::TimeSpec spec, int offsetSeconds); void setTimeSpec(Qt::TimeSpec spec, int offsetSeconds);
void setDateTime(const QDate &date, const QTime &time); void setDateTime(const QDate &date, const QTime &time);
void getDateTime(QDate *date, QTime *time) const; QPair<QDate, QTime> getDateTime() const;
void setDaylightStatus(DaylightStatus status); void setDaylightStatus(DaylightStatus status);
DaylightStatus daylightStatus() const; DaylightStatus daylightStatus() const;