diff options
author | Sona Kurazyan <sona.kurazyan@qt.io> | 2022-03-10 19:28:21 +0100 |
---|---|---|
committer | Sona Kurazyan <sona.kurazyan@qt.io> | 2022-03-19 18:51:00 +0100 |
commit | 94addad4dd1c89df9c6820d34b9a90424456c492 (patch) | |
tree | 24ee4f0355997d549d24e1833b2b1053e09d576d /src/corelib/text/qstring.h | |
parent | c839efb07a6aa3b487dac5f86f905f35ef2c3a08 (diff) |
Add QLatin1StringView as an alias for QLatin1String
And switch to using QLatin1StringView for bootstrap builds and Qt 7.
[ChangeLog][QtCore] Added QLatin1StringView as an alias for
QLatin1String.
Task-number: QTBUG-98434
Change-Id: Iefb860b63eb05ef4755b2e26de265e6e6e4420b3
Reviewed-by: Marc Mutz <marc.mutz@qt.io>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
Diffstat (limited to 'src/corelib/text/qstring.h')
-rw-r--r-- | src/corelib/text/qstring.h | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/src/corelib/text/qstring.h b/src/corelib/text/qstring.h index 2b85d9eac9..64ed40eb2a 100644 --- a/src/corelib/text/qstring.h +++ b/src/corelib/text/qstring.h @@ -71,6 +71,12 @@ Q_FORWARD_DECLARE_CF_TYPE(CFString); Q_FORWARD_DECLARE_OBJC_CLASS(NSString); #endif +#if 0 +// Workaround for generating forward headers +#pragma qt_class(QLatin1String) +#pragma qt_class(QLatin1StringView) +#endif + QT_BEGIN_NAMESPACE class QRegularExpression; @@ -81,9 +87,25 @@ namespace QtPrivate { template <bool...B> class BoolList; } +#if QT_VERSION >= QT_VERSION_CHECK(7, 0, 0) || defined(QT_BOOTSTRAPPED) +# define Q_L1S_VIEW_IS_PRIMARY +class QLatin1StringView +#else class QLatin1String +#endif { public: +#ifdef Q_L1S_VIEW_IS_PRIMARY + constexpr inline QLatin1StringView() noexcept : m_size(0), m_data(nullptr) {} + constexpr QLatin1StringView(std::nullptr_t) noexcept : QLatin1StringView() {} + constexpr inline explicit QLatin1StringView(const char *s) noexcept + : m_size(s ? qsizetype(QtPrivate::lengthHelperPointer(s)) : 0), m_data(s) {} + constexpr explicit QLatin1StringView(const char *f, const char *l) + : QLatin1StringView(f, qsizetype(l - f)) {} + constexpr inline explicit QLatin1StringView(const char *s, qsizetype sz) noexcept : m_size(sz), m_data(s) {} + explicit QLatin1StringView(const QByteArray &s) noexcept : m_size(s.size()), m_data(s.constData()) {} + constexpr explicit QLatin1StringView(QByteArrayView s) noexcept : m_size(s.size()), m_data(s.data()) {} +#else constexpr inline QLatin1String() noexcept : m_size(0), m_data(nullptr) {} Q_WEAK_OVERLOAD constexpr QLatin1String(std::nullptr_t) noexcept : QLatin1String() {} @@ -94,6 +116,7 @@ public: constexpr inline explicit QLatin1String(const char *s, qsizetype sz) noexcept : m_size(sz), m_data(s) {} explicit QLatin1String(const QByteArray &s) noexcept : m_size(s.size()), m_data(s.constData()) {} constexpr explicit QLatin1String(QByteArrayView s) noexcept : m_size(s.size()), m_data(s.data()) {} +#endif // !Q_L1S_VIEW_IS_PRIMARY inline QString toString() const; @@ -370,7 +393,11 @@ private: qsizetype m_size; const char *m_data; }; +#ifdef Q_L1S_VIEW_IS_PRIMARY +Q_DECLARE_TYPEINFO(QLatin1StringView, Q_RELOCATABLE_TYPE); +#else Q_DECLARE_TYPEINFO(QLatin1String, Q_RELOCATABLE_TYPE); +#endif // Qt 4.x compatibility @@ -1655,4 +1682,8 @@ QT_END_NAMESPACE #include <QtCore/qstringbuilder.h> #endif +#ifdef Q_L1S_VIEW_IS_PRIMARY +# undef Q_L1S_VIEW_IS_PRIMARY +#endif + #endif // QSTRING_H |