summaryrefslogtreecommitdiffstats
path: root/src/corelib/time
diff options
context:
space:
mode:
authorIvan Solovev <ivan.solovev@qt.io>2024-01-25 17:09:07 +0100
committerIvan Solovev <ivan.solovev@qt.io>2024-01-29 16:06:46 +0100
commit59db912e860ddd045ea779fa579f2915535d0cf7 (patch)
tree4935db3301222df3a03631eac9fbf4afeca4c824 /src/corelib/time
parentd4d3d6fdba1e847fb174cd6b19efb3b10e273118 (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.cpp54
-rw-r--r--src/corelib/time/qdatetime.h34
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