diff options
author | Ivan Solovev <ivan.solovev@qt.io> | 2024-01-25 17:09:07 +0100 |
---|---|---|
committer | Ivan Solovev <ivan.solovev@qt.io> | 2024-01-29 16:06:46 +0100 |
commit | 59db912e860ddd045ea779fa579f2915535d0cf7 (patch) | |
tree | 4935db3301222df3a03631eac9fbf4afeca4c824 /src/corelib/time | |
parent | d4d3d6fdba1e847fb174cd6b19efb3b10e273118 (diff) |
QDate(Time)?::fromString(): do not use QCalendar as a default argument
QCalendar is not a trivial type, so using it as a default argument in
various fromString() overloads introduces an extra overhead.
In this case the function actually always needs a QCalendar object,
and a default-constructed QCalendar reproduces a valid gregorian
calendar. But getting rid of a default argument still gives us the
benefit of constructing the object only in the library, not at every
call site.
So, split each overload into two - with and without a QCalendar
argument.
Amends 41f84f3ddb780ec751e3fc706dd242fc4a99de7a
Found in 6.7 API review
Pick-to: 6.7
Change-Id: I7329276cbda0e5471dc5348af92fc8c9ca4e0738
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Reviewed-by: Marc Mutz <marc.mutz@qt.io>
Diffstat (limited to 'src/corelib/time')
-rw-r--r-- | src/corelib/time/qdatetime.cpp | 54 | ||||
-rw-r--r-- | src/corelib/time/qdatetime.h | 34 |
2 files changed, 76 insertions, 12 deletions
diff --git a/src/corelib/time/qdatetime.cpp b/src/corelib/time/qdatetime.cpp index cdb88a72d5..1f401948cc 100644 --- a/src/corelib/time/qdatetime.cpp +++ b/src/corelib/time/qdatetime.cpp @@ -1844,6 +1844,33 @@ QDate QDate::fromString(const QString &string, QStringView format, int baseYear, \overload \since 6.7 */ + +/*! + \fn QDate QDate::fromString(QStringView string, QStringView format, int baseYear) + \overload + \since 6.7 + + Uses a default-constructed QCalendar. +*/ + +/*! + \overload + \since 6.7 + + Uses a default-constructed QCalendar. +*/ +QDate QDate::fromString(const QString &string, QStringView format, int baseYear) +{ + return fromString(string, format, baseYear, QCalendar()); +} + +/*! + \fn QDate QDate::fromString(const QString &string, const QString &format, int baseYear) + \overload + \since 6.7 + + Uses a default-constructed QCalendar. +*/ #endif // datestring /*! @@ -5848,6 +5875,33 @@ QDateTime QDateTime::fromString(const QString &string, QStringView format, int b \overload \since 6.7 */ + +/*! + \fn QDateTime QDateTime::fromString(QStringView string, QStringView format, int baseYear) + \overload + \since 6.7 + + Uses a default-constructed QCalendar. +*/ + +/*! + \overload + \since 6.7 + + Uses a default-constructed QCalendar. +*/ +QDateTime QDateTime::fromString(const QString &string, QStringView format, int baseYear) +{ + return fromString(string, format, baseYear, QCalendar()); +} + +/*! + \fn QDateTime QDateTime::fromString(const QString &string, const QString &format, int baseYear) + \overload + \since 6.7 + + Uses a default-constructed QCalendar. +*/ #endif // datestring /***************************************************************************** diff --git a/src/corelib/time/qdatetime.h b/src/corelib/time/qdatetime.h index 518705fca7..cec7771a8d 100644 --- a/src/corelib/time/qdatetime.h +++ b/src/corelib/time/qdatetime.h @@ -144,15 +144,20 @@ public: // Overriding base year is likely more common than overriding calendar (and // likely to get more so, as the legacy base drops ever further behind us). static QDate fromString(QStringView string, QStringView format, - int baseYear = QLocale::DefaultTwoDigitBaseYear, - QCalendar cal = QCalendar()) + int baseYear = QLocale::DefaultTwoDigitBaseYear) + { return fromString(string.toString(), format, baseYear); } + static QDate fromString(QStringView string, QStringView format, + int baseYear, QCalendar cal) { return fromString(string.toString(), format, baseYear, cal); } static QDate fromString(const QString &string, QStringView format, - int baseYear = QLocale::DefaultTwoDigitBaseYear, - QCalendar cal = QCalendar()); + int baseYear = QLocale::DefaultTwoDigitBaseYear); + static QDate fromString(const QString &string, QStringView format, + int baseYear, QCalendar cal); + static QDate fromString(const QString &string, const QString &format, + int baseYear = QLocale::DefaultTwoDigitBaseYear) + { return fromString(string, qToStringViewIgnoringNull(format), baseYear); } static QDate fromString(const QString &string, const QString &format, - int baseYear = QLocale::DefaultTwoDigitBaseYear, - QCalendar cal = QCalendar()) + int baseYear, QCalendar cal) { return fromString(string, qToStringViewIgnoringNull(format), baseYear, cal); } #endif static bool isValid(int y, int m, int d); @@ -451,15 +456,20 @@ public: // Overriding base year is likely more common than overriding calendar (and // likely to get more so, as the legacy base drops ever further behind us). static QDateTime fromString(QStringView string, QStringView format, - int baseYear = QLocale::DefaultTwoDigitBaseYear, - QCalendar cal = QCalendar()) + int baseYear = QLocale::DefaultTwoDigitBaseYear) + { return fromString(string.toString(), format, baseYear); } + static QDateTime fromString(QStringView string, QStringView format, + int baseYear, QCalendar cal) { return fromString(string.toString(), format, baseYear, cal); } static QDateTime fromString(const QString &string, QStringView format, - int baseYear = QLocale::DefaultTwoDigitBaseYear, - QCalendar cal = QCalendar()); + int baseYear = QLocale::DefaultTwoDigitBaseYear); + static QDateTime fromString(const QString &string, QStringView format, + int baseYear, QCalendar cal); + static QDateTime fromString(const QString &string, const QString &format, + int baseYear = QLocale::DefaultTwoDigitBaseYear) + { return fromString(string, qToStringViewIgnoringNull(format), baseYear); } static QDateTime fromString(const QString &string, const QString &format, - int baseYear = QLocale::DefaultTwoDigitBaseYear, - QCalendar cal = QCalendar()) + int baseYear, QCalendar cal) { return fromString(string, qToStringViewIgnoringNull(format), baseYear, cal); } #endif |