Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2026-03-28 08:27:59

0001 // Copyright (C) 2020 The Qt Company Ltd.
0002 // Copyright (C) 2019 Mail.ru Group.
0003 // SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
0004 // Qt-Security score:significant reason:trivial-impl-only
0005 
0006 #ifndef QSTRINGMATCHER_H
0007 #define QSTRINGMATCHER_H
0008 
0009 #include <QtCore/qstring.h>
0010 #include <QtCore/qstringview.h>
0011 
0012 QT_BEGIN_NAMESPACE
0013 
0014 
0015 class QStringMatcherPrivate;
0016 
0017 class Q_CORE_EXPORT QStringMatcher
0018 {
0019     void updateSkipTable();
0020 public:
0021     QStringMatcher() = default;
0022     explicit QStringMatcher(const QString &pattern,
0023                    Qt::CaseSensitivity cs = Qt::CaseSensitive);
0024     QStringMatcher(const QChar *uc, qsizetype len,
0025                    Qt::CaseSensitivity cs = Qt::CaseSensitive)
0026         : QStringMatcher(QStringView(uc, len), cs)
0027     {}
0028     QStringMatcher(QStringView pattern,
0029                    Qt::CaseSensitivity cs = Qt::CaseSensitive);
0030     QStringMatcher(const QStringMatcher &other);
0031     ~QStringMatcher();
0032 
0033     QStringMatcher &operator=(const QStringMatcher &other);
0034 
0035     void setPattern(const QString &pattern);
0036     void setCaseSensitivity(Qt::CaseSensitivity cs);
0037 
0038     qsizetype indexIn(const QString &str, qsizetype from = 0) const
0039     { return indexIn(QStringView(str), from); }
0040     qsizetype indexIn(const QChar *str, qsizetype length, qsizetype from = 0) const
0041     { return indexIn(QStringView(str, length), from); }
0042     qsizetype indexIn(QStringView str, qsizetype from = 0) const;
0043     QString pattern() const;
0044     QStringView patternView() const noexcept
0045     { return q_sv; }
0046 
0047     inline Qt::CaseSensitivity caseSensitivity() const { return q_cs; }
0048 
0049 private:
0050     QStringMatcherPrivate *d_ptr = nullptr;
0051     Qt::CaseSensitivity q_cs = Qt::CaseSensitive;
0052     QString q_pattern;
0053     QStringView q_sv;
0054     uchar q_skiptable[256] = {};
0055 };
0056 
0057 QT_END_NAMESPACE
0058 
0059 #endif // QSTRINGMATCHER_H