From abe3b4c9b947de5e55085b37840e0d1d6f3aae42 Mon Sep 17 00:00:00 2001 From: Marc Mutz Date: Mon, 7 Mar 2022 09:28:37 +0100 Subject: Extract Header qstringfwd.h MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ... from qstringalgorithms.h and qutf8stringview.h, in order to centralize the declaration of the string classes, much like qcontainerfwd.h does for Qt containers. [ChangeLog][QtCore] Added header qstringfwd.h containing forward-declarations of all Qt string classes. Task-number: QTBUG-98434 Change-Id: I4cf1ede9fe6c286230f4c7e7abe379da28ce5d15 Reviewed-by: MÃ¥rten Nordheim Reviewed-by: Qt CI Bot Reviewed-by: Anton Kudryavtsev Reviewed-by: Thiago Macieira --- src/corelib/CMakeLists.txt | 1 + src/corelib/text/qstringalgorithms.h | 26 +---------- src/corelib/text/qstringfwd.h | 86 ++++++++++++++++++++++++++++++++++++ src/corelib/text/qutf8stringview.h | 9 ---- 4 files changed, 88 insertions(+), 34 deletions(-) create mode 100644 src/corelib/text/qstringfwd.h (limited to 'src') diff --git a/src/corelib/CMakeLists.txt b/src/corelib/CMakeLists.txt index 34980c4c45..f44af721e5 100644 --- a/src/corelib/CMakeLists.txt +++ b/src/corelib/CMakeLists.txt @@ -186,6 +186,7 @@ qt_internal_add_module(Core text/qstringbuilder.cpp text/qstringbuilder.h text/qstringconverter_base.h text/qstringconverter.cpp text/qstringconverter.h text/qstringconverter_p.h + text/qstringfwd.h text/qstringiterator_p.h text/qstringlist.cpp text/qstringlist.h text/qstringliteral.h diff --git a/src/corelib/text/qstringalgorithms.h b/src/corelib/text/qstringalgorithms.h index 490e4376db..40882a73ee 100644 --- a/src/corelib/text/qstringalgorithms.h +++ b/src/corelib/text/qstringalgorithms.h @@ -41,6 +41,7 @@ #define QSTRINGALGORITHMS_H #include +#include #include #if 0 #pragma qt_class(QStringAlgorithms) @@ -48,31 +49,6 @@ QT_BEGIN_NAMESPACE -#if QT_VERSION >= QT_VERSION_CHECK(7, 0, 0) -# define QT_BEGIN_HAS_CHAR8_T_NAMESPACE inline namespace q_has_char8_t { -# define QT_BEGIN_NO_CHAR8_T_NAMESPACE namespace q_no_char8_t { -#else -# define QT_BEGIN_HAS_CHAR8_T_NAMESPACE namespace q_has_char8_t { -# define QT_BEGIN_NO_CHAR8_T_NAMESPACE inline namespace q_no_char8_t { -#endif -#define QT_END_HAS_CHAR8_T_NAMESPACE } -#define QT_END_NO_CHAR8_T_NAMESPACE } - -// declare namespaces: -QT_BEGIN_HAS_CHAR8_T_NAMESPACE -QT_END_HAS_CHAR8_T_NAMESPACE -QT_BEGIN_NO_CHAR8_T_NAMESPACE -QT_END_NO_CHAR8_T_NAMESPACE - -class QByteArray; -class QLatin1String; -class QStringView; -template class QBasicUtf8StringView; -class QAnyStringView; -class QChar; -class QRegularExpression; -class QRegularExpressionMatch; - namespace QtPrivate { [[nodiscard]] Q_CORE_EXPORT Q_DECL_PURE_FUNCTION qsizetype qustrlen(const char16_t *str) noexcept; diff --git a/src/corelib/text/qstringfwd.h b/src/corelib/text/qstringfwd.h new file mode 100644 index 0000000000..761e430955 --- /dev/null +++ b/src/corelib/text/qstringfwd.h @@ -0,0 +1,86 @@ +/**************************************************************************** +** +** Copyright (C) 2022 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** This file is part of the QtCore module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#include + +#ifndef QSTRINGFWD_H +#define QSTRINGFWD_H + +QT_BEGIN_NAMESPACE + +#if QT_VERSION >= QT_VERSION_CHECK(7, 0, 0) +# define QT_BEGIN_HAS_CHAR8_T_NAMESPACE inline namespace q_has_char8_t { +# define QT_BEGIN_NO_CHAR8_T_NAMESPACE namespace q_no_char8_t { +#else +# define QT_BEGIN_HAS_CHAR8_T_NAMESPACE namespace q_has_char8_t { +# define QT_BEGIN_NO_CHAR8_T_NAMESPACE inline namespace q_no_char8_t { +#endif +#define QT_END_HAS_CHAR8_T_NAMESPACE } +#define QT_END_NO_CHAR8_T_NAMESPACE } + +// declare namespaces: +QT_BEGIN_HAS_CHAR8_T_NAMESPACE +QT_END_HAS_CHAR8_T_NAMESPACE +QT_BEGIN_NO_CHAR8_T_NAMESPACE +QT_END_NO_CHAR8_T_NAMESPACE + +class QByteArray; +class QByteArrayView; +class QLatin1String; +class QStringView; +template class QBasicUtf8StringView; +class QAnyStringView; +class QChar; +class QRegularExpression; +class QRegularExpressionMatch; + +#ifndef Q_CLANG_QDOC +// ### Qt 7: remove the non-char8_t version of QUtf8StringView +QT_BEGIN_NO_CHAR8_T_NAMESPACE +using QUtf8StringView = QBasicUtf8StringView; +QT_END_NO_CHAR8_T_NAMESPACE + +QT_BEGIN_HAS_CHAR8_T_NAMESPACE +using QUtf8StringView = QBasicUtf8StringView; +QT_END_HAS_CHAR8_T_NAMESPACE +#endif // Q_CLANG_QDOC + +QT_END_NAMESPACE + +#endif // QSTRINGFWD_H diff --git a/src/corelib/text/qutf8stringview.h b/src/corelib/text/qutf8stringview.h index 2d21a0e5bb..bec6f96953 100644 --- a/src/corelib/text/qutf8stringview.h +++ b/src/corelib/text/qutf8stringview.h @@ -361,15 +361,6 @@ private: #else template Q_DECLARE_TYPEINFO_BODY(QBasicUtf8StringView, Q_PRIMITIVE_TYPE); - -// ### Qt 7: remove the non-char8_t version of QUtf8StringView -QT_BEGIN_NO_CHAR8_T_NAMESPACE -using QUtf8StringView = QBasicUtf8StringView; -QT_END_NO_CHAR8_T_NAMESPACE - -QT_BEGIN_HAS_CHAR8_T_NAMESPACE -using QUtf8StringView = QBasicUtf8StringView; -QT_END_HAS_CHAR8_T_NAMESPACE #endif // Q_CLANG_QDOC template , bool> = true> -- cgit v1.2.3