QDate: rework stdSysDaysToJulianDay()
Use !QT_CORE_REMOVED_SINCE(6, 7) to make the function a template
in new C++20 code. The removed_api.cpp will still compile the
exported version, keeping BC.
This simplifies the ifdef'ery around the functions and saves the
need for the QT6_{DECL,CALL}_NEW_OVERLOAD trick.
Picking this change down to 6.7, because the original patch was
also picked to 6.7.
Tested it on MSVC in C++20 mode, and verified that the symbol
is still there. Also tested the case from the linked bugreport,
and verified that it does not give linker errors.
Amends 88702cc87c
and effectively reverts 91f48cc4b77b1cfb5a4490c3bed3eb97edd2f85a.
Task-number: QTBUG-125610
Pick-to: 6.7
Change-Id: Idf49fd142cdc78ff8964a36f8c1e326357e1028e
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Reviewed-by: Marc Mutz <marc.mutz@qt.io>
(cherry picked from commit d23764c5a12e0d6d26dd54ee5613f7e5b1f9c8af)
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
bb10
parent
7fb7972021
commit
665aaf9f6a
|
|
@ -700,7 +700,7 @@ QCborError QCborStreamReader::lastError()
|
|||
return std::as_const(*this).lastError();
|
||||
}
|
||||
|
||||
#include "qdatetime.h"
|
||||
#include "qdatetime.h" // also inlined API
|
||||
|
||||
QDateTime::QDateTime(QDate date, QTime time, const QTimeZone &timeZone)
|
||||
: QDateTime(date, time, timeZone, TransitionResolution::LegacyBehavior) {}
|
||||
|
|
|
|||
|
|
@ -35,28 +35,28 @@ public:
|
|||
#if __cpp_lib_chrono >= 201907L || defined(Q_QDOC)
|
||||
QT_POST_CXX17_API_IN_EXPORTED_CLASS
|
||||
Q_IMPLICIT constexpr QDate(std::chrono::year_month_day date) noexcept
|
||||
: jd(date.ok() ? stdSysDaysToJulianDay(date QT6_CALL_NEW_OVERLOAD_TAIL) : nullJd())
|
||||
: jd(date.ok() ? stdSysDaysToJulianDay(date) : nullJd())
|
||||
{}
|
||||
|
||||
QT_POST_CXX17_API_IN_EXPORTED_CLASS
|
||||
Q_IMPLICIT constexpr QDate(std::chrono::year_month_day_last date) noexcept
|
||||
: jd(date.ok() ? stdSysDaysToJulianDay(date QT6_CALL_NEW_OVERLOAD_TAIL) : nullJd())
|
||||
: jd(date.ok() ? stdSysDaysToJulianDay(date) : nullJd())
|
||||
{}
|
||||
|
||||
QT_POST_CXX17_API_IN_EXPORTED_CLASS
|
||||
Q_IMPLICIT constexpr QDate(std::chrono::year_month_weekday date) noexcept
|
||||
: jd(date.ok() ? stdSysDaysToJulianDay(date QT6_CALL_NEW_OVERLOAD_TAIL) : nullJd())
|
||||
: jd(date.ok() ? stdSysDaysToJulianDay(date) : nullJd())
|
||||
{}
|
||||
|
||||
QT_POST_CXX17_API_IN_EXPORTED_CLASS
|
||||
Q_IMPLICIT constexpr QDate(std::chrono::year_month_weekday_last date) noexcept
|
||||
: jd(date.ok() ? stdSysDaysToJulianDay(date QT6_CALL_NEW_OVERLOAD_TAIL) : nullJd())
|
||||
: jd(date.ok() ? stdSysDaysToJulianDay(date) : nullJd())
|
||||
{}
|
||||
|
||||
QT_POST_CXX17_API_IN_EXPORTED_CLASS
|
||||
static constexpr QDate fromStdSysDays(const std::chrono::sys_days &days) noexcept
|
||||
{
|
||||
return QDate(stdSysDaysToJulianDay(days QT6_CALL_NEW_OVERLOAD_TAIL));
|
||||
return QDate(stdSysDaysToJulianDay(days));
|
||||
}
|
||||
|
||||
QT_POST_CXX17_API_IN_EXPORTED_CLASS
|
||||
|
|
@ -177,9 +177,11 @@ private:
|
|||
static constexpr inline qint64 unixEpochJd() { return Q_INT64_C(2440588); }
|
||||
|
||||
#if __cpp_lib_chrono >= 201907L
|
||||
#if !QT_CORE_REMOVED_SINCE(6, 7)
|
||||
QT_POST_CXX17_API_IN_EXPORTED_CLASS
|
||||
#endif
|
||||
static constexpr qint64
|
||||
stdSysDaysToJulianDay(const std::chrono::sys_days &days QT6_DECL_NEW_OVERLOAD_TAIL) noexcept
|
||||
stdSysDaysToJulianDay(const std::chrono::sys_days &days) noexcept
|
||||
{
|
||||
const auto epochDays = days.time_since_epoch().count();
|
||||
// minJd() and maxJd() fit into 40 bits.
|
||||
|
|
@ -191,13 +193,6 @@ private:
|
|||
}
|
||||
return unixEpochJd() + epochDays;
|
||||
}
|
||||
|
||||
#if QT_VERSION_MAJOR < 7 && !defined(QT_BOOTSTRAPPED)
|
||||
static constexpr qint64 stdSysDaysToJulianDay(const std::chrono::sys_days &days) noexcept
|
||||
{
|
||||
return stdSysDaysToJulianDay(days QT6_CALL_NEW_OVERLOAD_TAIL);
|
||||
}
|
||||
#endif // Qt < 7 and not bootstrapped
|
||||
#endif // __cpp_lib_chrono >= 201907L
|
||||
|
||||
qint64 jd;
|
||||
|
|
|
|||
Loading…
Reference in New Issue