1 /*
2  * DQt - D bindings for the Qt Toolkit
3  *
4  * GNU Lesser General Public License Usage
5  * This file may be used under the terms of the GNU Lesser
6  * General Public License version 3 as published by the Free Software
7  * Foundation and appearing in the file LICENSE.LGPL3 included in the
8  * packaging of this file. Please review the following information to
9  * ensure the GNU Lesser General Public License version 3 requirements
10  * will be met: https://www.gnu.org/licenses/lgpl-3.0.html.
11  */
12 module qt.core.stringalgorithms;
13 extern(C++):
14 
15 import qt.config;
16 import qt.core.anystringview;
17 import qt.core.bytearray;
18 import qt.core.global;
19 import qt.core.list;
20 import qt.core.namespace;
21 import qt.core.qchar;
22 import qt.core.regularexpression;
23 import qt.core.string;
24 import qt.core.stringview;
25 import qt.core.utf8stringview;
26 import qt.helpers;
27 
28 /+ #if 0
29 #pragma qt_class(QStringAlgorithms)
30 #endif
31 
32 
33 #if QT_VERSION >= QT_VERSION_CHECK(7, 0, 0)
34 # define QT_BEGIN_HAS_CHAR8_T_NAMESPACE inline namespace q_has_char8_t {
35 # define QT_BEGIN_NO_CHAR8_T_NAMESPACE namespace q_no_char8_t {
36 #else
37 # define QT_BEGIN_HAS_CHAR8_T_NAMESPACE namespace q_has_char8_t {
38 # define QT_BEGIN_NO_CHAR8_T_NAMESPACE inline namespace q_no_char8_t {
39 #endif
40 #define QT_END_HAS_CHAR8_T_NAMESPACE }
41 #define QT_END_NO_CHAR8_T_NAMESPACE }
42 
43 
44 // declare namespaces:
45 QT_BEGIN_HAS_CHAR8_T_NAMESPACE
46 QT_END_HAS_CHAR8_T_NAMESPACE
47 QT_BEGIN_NO_CHAR8_T_NAMESPACE
48 QT_END_NO_CHAR8_T_NAMESPACE +/
49 
50 extern(C++, "QtPrivate") {
51 
52 /+ [[nodiscard]] +/ /+ Q_CORE_EXPORT +/ /+ Q_DECL_PURE_FUNCTION +/ qsizetype qustrlen(const(wchar)* str)/+ noexcept+/;
53 /+ [[nodiscard]] +/ /+ Q_CORE_EXPORT +/ /+ Q_DECL_PURE_FUNCTION +/ const(wchar)* qustrchr(QStringView str, wchar ch)/+ noexcept+/;
54 
55 /+ [[nodiscard]] +/ /+ Q_CORE_EXPORT +/ /+ Q_DECL_PURE_FUNCTION +/ int compareStrings(QStringView   lhs, QStringView   rhs, /+ Qt:: +/qt.core.namespace.CaseSensitivity cs = /+ Qt:: +/qt.core.namespace.CaseSensitivity.CaseSensitive)/+ noexcept+/;
56 /+ [[nodiscard]] +/ /+ Q_CORE_EXPORT +/ /+ Q_DECL_PURE_FUNCTION +/ int compareStrings(QStringView   lhs, QLatin1String rhs, /+ Qt:: +/qt.core.namespace.CaseSensitivity cs = /+ Qt:: +/qt.core.namespace.CaseSensitivity.CaseSensitive)/+ noexcept+/;
57 /+ [[nodiscard]] +/ /+ Q_CORE_EXPORT +/ /+ Q_DECL_PURE_FUNCTION +/ int compareStrings(QStringView   lhs, QBasicUtf8StringView!(false) rhs, /+ Qt:: +/qt.core.namespace.CaseSensitivity cs = /+ Qt:: +/qt.core.namespace.CaseSensitivity.CaseSensitive)/+ noexcept+/;
58 /+ [[nodiscard]] +/ /+ Q_CORE_EXPORT +/ /+ Q_DECL_PURE_FUNCTION +/ int compareStrings(QLatin1String lhs, QStringView   rhs, /+ Qt:: +/qt.core.namespace.CaseSensitivity cs = /+ Qt:: +/qt.core.namespace.CaseSensitivity.CaseSensitive)/+ noexcept+/;
59 /+ [[nodiscard]] +/ /+ Q_CORE_EXPORT +/ /+ Q_DECL_PURE_FUNCTION +/ int compareStrings(QLatin1String lhs, QLatin1String rhs, /+ Qt:: +/qt.core.namespace.CaseSensitivity cs = /+ Qt:: +/qt.core.namespace.CaseSensitivity.CaseSensitive)/+ noexcept+/;
60 /+ [[nodiscard]] +/ /+ Q_CORE_EXPORT +/ /+ Q_DECL_PURE_FUNCTION +/ int compareStrings(QLatin1String lhs, QBasicUtf8StringView!(false) rhs, /+ Qt:: +/qt.core.namespace.CaseSensitivity cs = /+ Qt:: +/qt.core.namespace.CaseSensitivity.CaseSensitive)/+ noexcept+/;
61 /+ [[nodiscard]] +/ /+ Q_CORE_EXPORT +/ /+ Q_DECL_PURE_FUNCTION +/ int compareStrings(QBasicUtf8StringView!(false) lhs, QStringView   rhs, /+ Qt:: +/qt.core.namespace.CaseSensitivity cs = /+ Qt:: +/qt.core.namespace.CaseSensitivity.CaseSensitive)/+ noexcept+/;
62 /+ [[nodiscard]] +/ /+ Q_CORE_EXPORT +/ /+ Q_DECL_PURE_FUNCTION +/ int compareStrings(QBasicUtf8StringView!(false) lhs, QLatin1String rhs, /+ Qt:: +/qt.core.namespace.CaseSensitivity cs = /+ Qt:: +/qt.core.namespace.CaseSensitivity.CaseSensitive)/+ noexcept+/;
63 /+ [[nodiscard]] +/ /+ Q_CORE_EXPORT +/ /+ Q_DECL_PURE_FUNCTION +/ int compareStrings(/+ QBasicUtf8StringView<false> lhs, QBasicUtf8StringView<false> rhs +/ /+ Qt:: +/qt.core.namespace.CaseSensitivity cs = /+ Qt:: +/qt.core.namespace.CaseSensitivity.CaseSensitive)/+ noexcept+/;
64 
65 /+ [[nodiscard]] +/ /+ Q_CORE_EXPORT +/ /+ Q_DECL_PURE_FUNCTION +/ bool equalStrings(QStringView   lhs, QStringView   rhs)/+ noexcept+/;
66 /+ [[nodiscard]] +/ /+ Q_CORE_EXPORT +/ /+ Q_DECL_PURE_FUNCTION +/ bool equalStrings(QStringView   lhs, QLatin1String rhs)/+ noexcept+/;
67 /+ [[nodiscard]] +/ /+ Q_CORE_EXPORT +/ /+ Q_DECL_PURE_FUNCTION +/ bool equalStrings(QStringView   lhs, QBasicUtf8StringView!(false) rhs)/+ noexcept+/;
68 /+ [[nodiscard]] +/ /+ Q_CORE_EXPORT +/ /+ Q_DECL_PURE_FUNCTION +/ bool equalStrings(QLatin1String lhs, QStringView   rhs)/+ noexcept+/;
69 /+ [[nodiscard]] +/ /+ Q_CORE_EXPORT +/ /+ Q_DECL_PURE_FUNCTION +/ bool equalStrings(QLatin1String lhs, QLatin1String rhs)/+ noexcept+/;
70 /+ [[nodiscard]] +/ /+ Q_CORE_EXPORT +/ /+ Q_DECL_PURE_FUNCTION +/ bool equalStrings(QLatin1String lhs, QBasicUtf8StringView!(false) rhs)/+ noexcept+/;
71 /+ [[nodiscard]] +/ /+ Q_CORE_EXPORT +/ /+ Q_DECL_PURE_FUNCTION +/ bool equalStrings(QBasicUtf8StringView!(false) lhs, QStringView   rhs)/+ noexcept+/;
72 /+ [[nodiscard]] +/ /+ Q_CORE_EXPORT +/ /+ Q_DECL_PURE_FUNCTION +/ bool equalStrings(QBasicUtf8StringView!(false) lhs, QLatin1String rhs)/+ noexcept+/;
73 /+ [[nodiscard]] +/ /+ Q_CORE_EXPORT +/ /+ Q_DECL_PURE_FUNCTION +/ bool equalStrings(/+ QBasicUtf8StringView<false> lhs, QBasicUtf8StringView<false> rhs +/)/+ noexcept+/;
74 
75 /+ [[nodiscard]] +/ /+ Q_CORE_EXPORT +/ /+ Q_DECL_PURE_FUNCTION +/ bool startsWith(QStringView   haystack, QStringView   needle, /+ Qt:: +/qt.core.namespace.CaseSensitivity cs = /+ Qt:: +/qt.core.namespace.CaseSensitivity.CaseSensitive)/+ noexcept+/;
76 /+ [[nodiscard]] +/ /+ Q_CORE_EXPORT +/ /+ Q_DECL_PURE_FUNCTION +/ bool startsWith(QStringView   haystack, QLatin1String needle, /+ Qt:: +/qt.core.namespace.CaseSensitivity cs = /+ Qt:: +/qt.core.namespace.CaseSensitivity.CaseSensitive)/+ noexcept+/;
77 /+ [[nodiscard]] +/ /+ Q_CORE_EXPORT +/ /+ Q_DECL_PURE_FUNCTION +/ bool startsWith(QLatin1String haystack, QStringView   needle, /+ Qt:: +/qt.core.namespace.CaseSensitivity cs = /+ Qt:: +/qt.core.namespace.CaseSensitivity.CaseSensitive)/+ noexcept+/;
78 /+ [[nodiscard]] +/ /+ Q_CORE_EXPORT +/ /+ Q_DECL_PURE_FUNCTION +/ bool startsWith(QLatin1String haystack, QLatin1String needle, /+ Qt:: +/qt.core.namespace.CaseSensitivity cs = /+ Qt:: +/qt.core.namespace.CaseSensitivity.CaseSensitive)/+ noexcept+/;
79 
80 /+ [[nodiscard]] +/ /+ Q_CORE_EXPORT +/ /+ Q_DECL_PURE_FUNCTION +/ bool endsWith(QStringView   haystack, QStringView   needle, /+ Qt:: +/qt.core.namespace.CaseSensitivity cs = /+ Qt:: +/qt.core.namespace.CaseSensitivity.CaseSensitive)/+ noexcept+/;
81 /+ [[nodiscard]] +/ /+ Q_CORE_EXPORT +/ /+ Q_DECL_PURE_FUNCTION +/ bool endsWith(QStringView   haystack, QLatin1String needle, /+ Qt:: +/qt.core.namespace.CaseSensitivity cs = /+ Qt:: +/qt.core.namespace.CaseSensitivity.CaseSensitive)/+ noexcept+/;
82 /+ [[nodiscard]] +/ /+ Q_CORE_EXPORT +/ /+ Q_DECL_PURE_FUNCTION +/ bool endsWith(QLatin1String haystack, QStringView   needle, /+ Qt:: +/qt.core.namespace.CaseSensitivity cs = /+ Qt:: +/qt.core.namespace.CaseSensitivity.CaseSensitive)/+ noexcept+/;
83 /+ [[nodiscard]] +/ /+ Q_CORE_EXPORT +/ /+ Q_DECL_PURE_FUNCTION +/ bool endsWith(QLatin1String haystack, QLatin1String needle, /+ Qt:: +/qt.core.namespace.CaseSensitivity cs = /+ Qt:: +/qt.core.namespace.CaseSensitivity.CaseSensitive)/+ noexcept+/;
84 
85 /+ [[nodiscard]] +/ /+ Q_CORE_EXPORT +/ /+ Q_DECL_PURE_FUNCTION +/ qsizetype findString(QStringView haystack, qsizetype from, QStringView needle, /+ Qt:: +/qt.core.namespace.CaseSensitivity cs = /+ Qt:: +/qt.core.namespace.CaseSensitivity.CaseSensitive)/+ noexcept+/;
86 /+ [[nodiscard]] +/ /+ Q_CORE_EXPORT +/ /+ Q_DECL_PURE_FUNCTION +/ qsizetype findString(QStringView haystack, qsizetype from, QLatin1String needle, /+ Qt:: +/qt.core.namespace.CaseSensitivity cs = /+ Qt:: +/qt.core.namespace.CaseSensitivity.CaseSensitive)/+ noexcept+/;
87 /+ [[nodiscard]] +/ /+ Q_CORE_EXPORT +/ /+ Q_DECL_PURE_FUNCTION +/ qsizetype findString(QLatin1String haystack, qsizetype from, QStringView needle, /+ Qt:: +/qt.core.namespace.CaseSensitivity cs = /+ Qt:: +/qt.core.namespace.CaseSensitivity.CaseSensitive)/+ noexcept+/;
88 /+ [[nodiscard]] +/ /+ Q_CORE_EXPORT +/ /+ Q_DECL_PURE_FUNCTION +/ qsizetype findString(QLatin1String haystack, qsizetype from, QLatin1String needle, /+ Qt:: +/qt.core.namespace.CaseSensitivity cs = /+ Qt:: +/qt.core.namespace.CaseSensitivity.CaseSensitive)/+ noexcept+/;
89 
90 /+ [[nodiscard]] +/ /+ Q_CORE_EXPORT +/ /+ Q_DECL_PURE_FUNCTION +/ qsizetype lastIndexOf(QStringView haystack, qsizetype from, QStringView needle, /+ Qt:: +/qt.core.namespace.CaseSensitivity cs = /+ Qt:: +/qt.core.namespace.CaseSensitivity.CaseSensitive)/+ noexcept+/;
91 /+ [[nodiscard]] +/ /+ Q_CORE_EXPORT +/ /+ Q_DECL_PURE_FUNCTION +/ qsizetype lastIndexOf(QStringView haystack, qsizetype from, QLatin1String needle, /+ Qt:: +/qt.core.namespace.CaseSensitivity cs = /+ Qt:: +/qt.core.namespace.CaseSensitivity.CaseSensitive)/+ noexcept+/;
92 /+ [[nodiscard]] +/ /+ Q_CORE_EXPORT +/ /+ Q_DECL_PURE_FUNCTION +/ qsizetype lastIndexOf(QLatin1String haystack, qsizetype from, QStringView needle, /+ Qt:: +/qt.core.namespace.CaseSensitivity cs = /+ Qt:: +/qt.core.namespace.CaseSensitivity.CaseSensitive)/+ noexcept+/;
93 /+ [[nodiscard]] +/ /+ Q_CORE_EXPORT +/ /+ Q_DECL_PURE_FUNCTION +/ qsizetype lastIndexOf(QLatin1String haystack, qsizetype from, QLatin1String needle, /+ Qt:: +/qt.core.namespace.CaseSensitivity cs = /+ Qt:: +/qt.core.namespace.CaseSensitivity.CaseSensitive)/+ noexcept+/;
94 
95 /+ [[nodiscard]] +/ /+ Q_CORE_EXPORT +/ /+ Q_DECL_PURE_FUNCTION +/ QStringView   trimmed(QStringView   s)/+ noexcept+/;
96 /+ [[nodiscard]] +/ /+ Q_CORE_EXPORT +/ /+ Q_DECL_PURE_FUNCTION +/ QLatin1String trimmed(QLatin1String s)/+ noexcept+/;
97 
98 /+ [[nodiscard]] +/ /+ Q_CORE_EXPORT +/ /+ Q_DECL_PURE_FUNCTION +/ qsizetype count(QStringView haystack, QChar needle, /+ Qt:: +/qt.core.namespace.CaseSensitivity cs = /+ Qt:: +/qt.core.namespace.CaseSensitivity.CaseSensitive)/+ noexcept+/;
99 /+ [[nodiscard]] +/ /+ Q_CORE_EXPORT +/ /+ Q_DECL_PURE_FUNCTION +/ qsizetype count(QStringView haystack, QStringView needle, /+ Qt:: +/qt.core.namespace.CaseSensitivity cs = /+ Qt:: +/qt.core.namespace.CaseSensitivity.CaseSensitive)/+ noexcept+/;
100 
101 /+ #if QT_CONFIG(regularexpression) +/
102 /+ [[nodiscard]] +/ /+ Q_CORE_EXPORT +/ qsizetype indexOf(QStringView haystack,
103                                               ref const(QRegularExpression) re,
104                                               qsizetype from = 0,
105                                               QRegularExpressionMatch* rmatch = null);
106 /+ [[nodiscard]] +/ /+ Q_CORE_EXPORT +/ qsizetype lastIndexOf(QStringView haystack,
107                                                   ref const(QRegularExpression) re,
108                                                   qsizetype from = -1,
109                                                   QRegularExpressionMatch* rmatch = null);
110 /+ [[nodiscard]] +/ /+ Q_CORE_EXPORT +/ bool contains(QStringView haystack,
111                                           ref const(QRegularExpression) re,
112                                           QRegularExpressionMatch* rmatch = null);
113 /+ [[nodiscard]] +/ /+ Q_CORE_EXPORT +/ qsizetype count(QStringView haystack, ref const(QRegularExpression) re);
114 /+ #endif +/
115 
116 /+ [[nodiscard]] +/ /+ Q_CORE_EXPORT +/ QString convertToQString(QAnyStringView s);
117 
118 /+ [[nodiscard]] +/ /+ Q_CORE_EXPORT +/ QByteArray convertToLatin1(QStringView str);
119 /+ [[nodiscard]] +/ /+ Q_CORE_EXPORT +/ QByteArray convertToUtf8(QStringView str);
120 /+ [[nodiscard]] +/ /+ Q_CORE_EXPORT +/ QByteArray convertToLocal8Bit(QStringView str);
121 /+ [[nodiscard]] +/ /+ Q_CORE_EXPORT +/ QList!(uint) convertToUcs4(QStringView str); // ### Qt 7 char32_t
122 
123 /+ [[nodiscard]] +/ /+ Q_CORE_EXPORT +/ /+ Q_DECL_PURE_FUNCTION +/ bool isRightToLeft(QStringView string)/+ noexcept+/;
124 
125 /+ [[nodiscard]] +/ /+ Q_CORE_EXPORT +/ /+ Q_DECL_PURE_FUNCTION +/ bool isAscii(QLatin1String s)/+ noexcept+/;
126 /+ [[nodiscard]] +/ /+ Q_CORE_EXPORT +/ /+ Q_DECL_PURE_FUNCTION +/ bool isAscii(QStringView   s)/+ noexcept+/;
127 /+ [[nodiscard]] constexpr inline                   bool isLatin1(QLatin1String s) noexcept; +/
128 /+ [[nodiscard]] +/ /+ Q_CORE_EXPORT +/ /+ Q_DECL_PURE_FUNCTION +/ bool isLatin1(QStringView   s)/+ noexcept+/;
129 /+ [[nodiscard]] +/ /+ Q_CORE_EXPORT +/ /+ Q_DECL_PURE_FUNCTION +/ bool isValidUtf16(QStringView s)/+ noexcept+/;
130 
131 } // namespace QtPRivate
132