Qt
Internal/Contributor docs for the Qt SDK. Note: These are NOT official API docs; those are found at https://doc.qt.io/
Loading...
Searching...
No Matches
qstringmatcher.h
Go to the documentation of this file.
1// Copyright (C) 2020 The Qt Company Ltd.
2// Copyright (C) 2019 Mail.ru Group.
3// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
4
5#ifndef QSTRINGMATCHER_H
6#define QSTRINGMATCHER_H
7
8#include <QtCore/qstring.h>
9#include <QtCore/qstringview.h>
10
12
13
14class QStringMatcherPrivate;
15
16class Q_CORE_EXPORT QStringMatcher
17{
18 void updateSkipTable();
19public:
20 QStringMatcher() = default;
21 explicit QStringMatcher(const QString &pattern,
22 Qt::CaseSensitivity cs = Qt::CaseSensitive);
23 QStringMatcher(const QChar *uc, qsizetype len,
24 Qt::CaseSensitivity cs = Qt::CaseSensitive)
25 : QStringMatcher(QStringView(uc, len), cs)
26 {}
27 QStringMatcher(QStringView pattern,
28 Qt::CaseSensitivity cs = Qt::CaseSensitive);
29 QStringMatcher(const QStringMatcher &other);
30 ~QStringMatcher();
31
32 QStringMatcher &operator=(const QStringMatcher &other);
33
34 void setPattern(const QString &pattern);
35 void setCaseSensitivity(Qt::CaseSensitivity cs);
36
37 qsizetype indexIn(const QString &str, qsizetype from = 0) const
38 { return indexIn(QStringView(str), from); }
39 qsizetype indexIn(const QChar *str, qsizetype length, qsizetype from = 0) const
40 { return indexIn(QStringView(str, length), from); }
41 qsizetype indexIn(QStringView str, qsizetype from = 0) const;
42 QString pattern() const;
43 QStringView patternView() const noexcept
44 { return q_sv; }
45
46 inline Qt::CaseSensitivity caseSensitivity() const { return q_cs; }
47
48private:
49 QStringMatcherPrivate *d_ptr = nullptr;
50 Qt::CaseSensitivity q_cs = Qt::CaseSensitive;
51 QString q_pattern;
52 QStringView q_sv;
53 uchar q_skiptable[256] = {};
54};
55
56QT_END_NAMESPACE
57
58#endif // QSTRINGMATCHER_H
QString convertToQString(QAnyStringView string)
Definition qstring.cpp:5633
Definition qlist.h:80
constexpr QSpanBase(It first, qsizetype count)
Definition qspan.h:191
static constexpr qsizetype m_size
Definition qspan.h:180
constexpr QSpanBase(It first, End last)
Definition qspan.h:198
Definition qspan.h:316
constexpr bool empty() const noexcept
Definition qspan.h:368
constexpr pointer data() const noexcept
Definition qspan.h:375
static constexpr std::size_t extent
Definition qspan.h:346
constexpr reverse_iterator rbegin() const noexcept
Definition qspan.h:382
constexpr reference front() const
Definition qspan.h:373
constexpr QSpan< T > sliced(size_type pos, size_type n) const
Definition qspan.h:435
constexpr QSpan< T > sliced(size_type pos) const
Definition qspan.h:434
constexpr size_type size() const noexcept
Definition qspan.h:366
constexpr iterator end() const noexcept
Definition qspan.h:379
constexpr const_iterator cbegin() const noexcept
Definition qspan.h:380
constexpr QSpan< T > subspan(size_type pos, size_type n) const
Definition qspan.h:429
constexpr const_iterator cend() const noexcept
Definition qspan.h:381
constexpr bool isEmpty() const noexcept
Definition qspan.h:432
constexpr reverse_iterator rend() const noexcept
Definition qspan.h:383
constexpr QSpan< T, Count > last() const noexcept(subspan_always_succeeds_v< Count >)
Definition qspan.h:399
constexpr QSpan< T > last(size_type n) const
Definition qspan.h:427
constexpr const_reverse_iterator crend() const noexcept
Definition qspan.h:385
friend QSpan< const std::byte, E==q20::dynamic_extent ? q20::dynamic_extent :E *sizeof(T)> as_bytes(QSpan s) noexcept
Definition qspan.h:463
constexpr size_type size_bytes() const noexcept
Definition qspan.h:367
constexpr const_reverse_iterator crbegin() const noexcept
Definition qspan.h:384
constexpr reference operator[](size_type idx) const
Definition qspan.h:371
constexpr QSpan< T > first(size_type n) const
Definition qspan.h:426
constexpr reference back() const
Definition qspan.h:374
constexpr QSpan< T > subspan(size_type pos) const
Definition qspan.h:428
constexpr auto subspan() const noexcept(subspan_always_succeeds_v< Offset+Count >)
Definition qspan.h:422
constexpr QSpan< T, Count > first() const noexcept(subspan_always_succeeds_v< Count >)
Definition qspan.h:389
constexpr QSpan< T > chopped(size_type n) const
Definition qspan.h:436
friend QSpan< std::byte, E==q20::dynamic_extent ? q20::dynamic_extent :E *sizeof(T)> as_writable_bytes(QSpan s) noexcept
Definition qspan.h:477
constexpr iterator begin() const noexcept
Definition qspan.h:378
constexpr auto subspan() const noexcept(subspan_always_succeeds_v< Offset >)
Definition qspan.h:409
char32_t next(char32_t invalidAs=QChar::ReplacementCharacter)
bool hasNext() const
\inmodule QtCore
QList< uint > convertToUcs4(QStringView string)
Definition qstring.cpp:5889
QByteArray convertToUtf8(QStringView string)
Definition qstring.cpp:5834
QByteArray convertToLocal8Bit(QStringView string)
Definition qstring.cpp:5791
QByteArray convertToLatin1(QStringView string)
Definition qstring.cpp:5650
AdlTester::size_result< Range > adl_size(Range &&r)
Definition qspan.h:102
std::conditional_t< std::is_const_v< From >, const To &, To & > const_propagated(To &in)
Definition qspan.h:49
AdlTester::data_result< Range > adl_data(Range &&r)
Definition qspan.h:100
AdlTester::begin_result< Range > adl_begin(Range &&r)
Definition qspan.h:98
constexpr bool is_qualification_conversion_v
Definition qspan.h:82
Combined button and popup list for selecting options.
static QString convertCase(T &str, QUnicodeTables::Case which)
Definition qstring.cpp:7242
static constexpr NormalizationCorrection uc_normalization_corrections[]
Q_CORE_EXPORT Q_DECL_PURE_FUNCTION bool startsWith(QStringView haystack, QStringView needle, Qt::CaseSensitivity cs=Qt::CaseSensitive) noexcept
Definition qstring.cpp:9760
Q_CORE_EXPORT Q_DECL_PURE_FUNCTION bool endsWith(QStringView haystack, QStringView needle, Qt::CaseSensitivity cs=Qt::CaseSensitive) noexcept
Definition qstring.cpp:9800
Q_CORE_EXPORT Q_DECL_PURE_FUNCTION bool isLower(QStringView s) noexcept
Definition qstring.cpp:5570
const QString & asString(const QString &s)
Definition qstring.h:1661
Q_CORE_EXPORT Q_DECL_PURE_FUNCTION bool isValidUtf16(QStringView s) noexcept
Definition qstring.cpp:905
Q_CORE_EXPORT Q_DECL_PURE_FUNCTION bool equalStrings(QStringView lhs, QStringView rhs) noexcept
Definition qstring.cpp:1386
qsizetype findString(QStringView str, qsizetype from, QChar needle, Qt::CaseSensitivity cs=Qt::CaseSensitive) noexcept
Q_CORE_EXPORT Q_DECL_PURE_FUNCTION bool isRightToLeft(QStringView string) noexcept
Q_CORE_EXPORT Q_DECL_PURE_FUNCTION int compareStrings(QStringView lhs, QStringView rhs, Qt::CaseSensitivity cs=Qt::CaseSensitive) noexcept
Q_CORE_EXPORT Q_DECL_PURE_FUNCTION bool isAscii(QLatin1StringView s) noexcept
Definition qstring.cpp:850
constexpr bool isLatin1(QLatin1StringView s) noexcept
Definition qstring.h:78
Q_CORE_EXPORT Q_DECL_PURE_FUNCTION const char16_t * qustrcasechr(QStringView str, char16_t ch) noexcept
Definition qstring.cpp:775
Q_CORE_EXPORT Q_DECL_PURE_FUNCTION bool isUpper(QStringView s) noexcept
Definition qstring.cpp:5575
Q_CORE_EXPORT Q_DECL_PURE_FUNCTION const char16_t * qustrchr(QStringView str, char16_t ch) noexcept
Definition qstring.cpp:687
constexpr auto dynamic_extent
Definition qspan.h:26
void qt_to_latin1_unchecked(uchar *dst, const char16_t *uc, qsizetype len)
Definition qstring.cpp:1188
static char16_t foldCase(char16_t ch) noexcept
Definition qchar.cpp:1696
#define __has_feature(x)
uint QT_FASTCALL fetch1Pixel< QPixelLayout::BPP1LSB >(const uchar *src, int index)
bool comparesEqual(const QFileInfo &lhs, const QFileInfo &rhs)
#define MAKE_ADL_TEST(what)
Definition qspan.h:85
QSpan(const std::array< T, N > &) -> QSpan< const T, N >
#define QT_ONLY_IF_DYNAMIC_SPAN(DECL)
Definition qspan.h:442
QSpan(T(&)[N]) -> QSpan< T, N >
QSpan(std::array< T, N > &) -> QSpan< T, N >
static bool isAscii_helper(const char16_t *&ptr, const char16_t *end)
Definition qstring.cpp:858
static Int toIntegral(QStringView string, bool *ok, int base)
Definition qstring.cpp:7725
void qt_to_latin1(uchar *dst, const char16_t *src, qsizetype length)
Definition qstring.cpp:1183
Qt::strong_ordering compareThreeWay(const QByteArray &lhs, const QChar &rhs) noexcept
Definition qstring.cpp:6807
static void append_utf8(QString &qs, const char *cs, qsizetype len)
Definition qstring.cpp:7359
#define ATTRIBUTE_NO_SANITIZE
Definition qstring.cpp:366
bool qt_is_ascii(const char *&ptr, const char *end) noexcept
Definition qstring.cpp:786
static void replace_in_place(QString &str, QSpan< size_t > indices, qsizetype blen, QStringView after)
Definition qstring.cpp:3707
static bool checkCase(QStringView s, QUnicodeTables::Case c) noexcept
Definition qstring.cpp:5559
static void replace_helper(QString &str, QSpan< size_t > indices, qsizetype blen, QStringView after)
Definition qstring.cpp:3751
Q_CORE_EXPORT void qt_from_latin1(char16_t *dst, const char *str, size_t size) noexcept
Definition qstring.cpp:920
static int ucstrcmp(const char16_t *a, size_t alen, const Char2 *b, size_t blen)
Definition qstring.cpp:1359
bool comparesEqual(const QByteArray &lhs, char16_t rhs) noexcept
Definition qstring.cpp:6813
Q_DECLARE_TYPEINFO(Part, Q_PRIMITIVE_TYPE)
static void removeStringImpl(QString &s, const T &needle, Qt::CaseSensitivity cs)
Definition qstring.cpp:3487
static bool needsReallocate(const QString &str, qsizetype newSize)
Definition qstring.cpp:2623
static int qArgDigitValue(QChar ch) noexcept
Definition qstring.cpp:1626
bool comparesEqual(const QByteArray &lhs, const QChar &rhs) noexcept
Definition qstring.cpp:6802
#define REHASH(a)
Definition qstring.cpp:65
static void replace_with_copy(QString &str, QSpan< size_t > indices, qsizetype blen, QStringView after)
Definition qstring.cpp:3684
bool comparesEqual(const QByteArrayView &lhs, char16_t rhs) noexcept
Definition qstring.cpp:6791
static int ucstrncmp(const char16_t *a, const char16_t *b, size_t l)
Definition qstring.cpp:1277
static Q_NEVER_INLINE int ucstricmp(qsizetype alen, const char16_t *a, qsizetype blen, const char *b)
Definition qstring.cpp:1221
static QByteArray qt_convert_to_latin1(QStringView string)
Definition qstring.cpp:5656
static bool ucstreq(const char16_t *a, size_t alen, const Char2 *b)
Definition qstring.cpp:1352
static QList< uint > qt_convert_to_ucs4(QStringView string)
Definition qstring.cpp:5861
qsizetype qFindStringBoyerMoore(QStringView haystack, qsizetype from, QStringView needle, Qt::CaseSensitivity cs)
static QByteArray qt_convert_to_local_8bit(QStringView string)
Definition qstring.cpp:5768
static LengthMod parse_length_modifier(const char *&c) noexcept
Definition qstring.cpp:7415
static ArgEscapeData findArgEscapes(QStringView s)
Definition qstring.cpp:8607
static QByteArray qt_convert_to_utf8(QStringView str)
Definition qstring.cpp:5814
static void qt_to_latin1_internal(uchar *dst, const char16_t *src, qsizetype length)
Definition qstring.cpp:1004
LengthMod
Definition qstring.cpp:7404
@ lm_z
Definition qstring.cpp:7404
@ lm_none
Definition qstring.cpp:7404
@ lm_t
Definition qstring.cpp:7404
@ lm_l
Definition qstring.cpp:7404
@ lm_ll
Definition qstring.cpp:7404
@ lm_hh
Definition qstring.cpp:7404
@ lm_L
Definition qstring.cpp:7404
@ lm_h
Definition qstring.cpp:7404
@ lm_j
Definition qstring.cpp:7404
static void insert_helper(QString &str, qsizetype i, const T &toInsert)
Definition qstring.cpp:2962
static int latin1nicmp(const char *lhsChar, qsizetype lSize, const char *rhsChar, qsizetype rSize)
Definition qstring.cpp:1368
Qt::strong_ordering compareThreeWay(const QByteArrayView &lhs, const QChar &rhs) noexcept
Definition qstring.cpp:6785
static char16_t to_unicode(const char c)
Definition qstring.cpp:9002
Qt::strong_ordering compareThreeWay(const QByteArray &lhs, char16_t rhs) noexcept
Definition qstring.cpp:6818
static QString replaceArgEscapes(QStringView s, const ArgEscapeData &d, qsizetype field_width, QStringView arg, QStringView larg, QChar fillChar)
Definition qstring.cpp:8683
static QVarLengthArray< char16_t > qt_from_latin1_to_qvla(QLatin1StringView str)
Definition qstring.cpp:995
static Q_NEVER_INLINE int ucstricmp8(const char *utf8, const char *utf8end, const QChar *utf16, const QChar *utf16end)
Definition qstring.cpp:1239
void qt_string_normalize(QString *data, QString::NormalizationForm mode, QChar::UnicodeVersion version, qsizetype from)
Definition qstring.cpp:8497
static uint parse_flag_characters(const char *&c) noexcept
Definition qstring.cpp:7367
static Q_NEVER_INLINE int ucstricmp(qsizetype alen, const char16_t *a, qsizetype blen, const char16_t *b)
Definition qstring.cpp:1194
static char16_t to_unicode(const QChar c)
Definition qstring.cpp:9001
QDataStream & operator>>(QDataStream &in, QString &str)
Definition qstring.cpp:9534
static int getEscape(const Char *uc, qsizetype *pos, qsizetype len)
Definition qstring.cpp:9005
static int ucstrncmp(const char16_t *a, const char *b, size_t l)
Definition qstring.cpp:1330
static bool can_consume(const char *&c, char ch) noexcept
Definition qstring.cpp:7406
static int parse_field_width(const char *&c, qsizetype size)
Definition qstring.cpp:7387
Qt::strong_ordering compareThreeWay(const QByteArrayView &lhs, char16_t rhs) noexcept
Definition qstring.cpp:6796
#define qUtf16Printable(string)
Definition qstring.h:1678
qsizetype occurrences
Definition qstring.cpp:8601
qsizetype escape_len
Definition qstring.cpp:8604
qsizetype locale_occurrences
Definition qstring.cpp:8602
\inmodule QtCore \reentrant
Definition qchar.h:17
constexpr char16_t unicode() const noexcept
Converts a Latin-1 character to an 16-bit-encoded Unicode representation of the character.
Definition qchar.h:21
constexpr QLatin1Char(char c) noexcept
Constructs a Latin-1 character for c.
Definition qchar.h:19
@ BlankBeforePositive
Definition qlocale_p.h:264
@ AddTrailingZeroes
Definition qlocale_p.h:261
static int difference(char lhs, char rhs)