5#ifndef QBYTEARRAYMATCHER_H
6#define QBYTEARRAYMATCHER_H
8#include <QtCore/qbytearray.h>
10#include <QtCore/q20algorithm.h>
17class QByteArrayMatcherPrivate;
23 explicit QByteArrayMatcher(
const QByteArray &pattern);
24 explicit QByteArrayMatcher(QByteArrayView pattern)
25 : QByteArrayMatcher(pattern.data(), pattern.size())
27 explicit QByteArrayMatcher(
const char *pattern, qsizetype length = -1);
28 QByteArrayMatcher(
const QByteArrayMatcher &other);
31 QByteArrayMatcher &operator=(
const QByteArrayMatcher &other);
33 void setPattern(
const QByteArray &pattern);
35#if QT_CORE_REMOVED_SINCE(6
, 3
)
36 qsizetype indexIn(
const QByteArray &ba, qsizetype from = 0)
const;
39 qsizetype indexIn(
const QByteArray &ba, qsizetype from = 0)
const
40 {
return indexIn(QByteArrayView{ba}, from); }
42 qsizetype indexIn(
const char *str, qsizetype len, qsizetype from = 0)
const;
43 qsizetype indexIn(QByteArrayView data, qsizetype from = 0)
const;
44 inline QByteArray pattern()
const
46 if (q_pattern.isNull())
47 return QByteArray(
reinterpret_cast<
const char*>(p.p), p.l);
52 QByteArrayMatcherPrivate *d;
55 uchar q_skiptable[256];
77#if QT_CORE_REMOVED_SINCE(6
, 3
) && QT_POINTER_SIZE != 4
85 static constexpr Skiptable generate(
const char *pattern, size_t n)
noexcept
87 const auto uchar_max = (std::numeric_limits<uchar>::max)();
88 uchar max = n > uchar_max ? uchar_max : uchar(n);
90 q20::fill(
std::begin(table.data),
std::end(table.data), max);
93 table.data[uchar(*pattern++)] = max;
103 static_assert(N > 2,
"QStaticByteArrayMatcher makes no sense for finding a single-char pattern");
108 for (size_t i = 0; i < N; ++i)
109 m_pattern[i] = patternToMatch[i];
bool unload(UnloadFlag flag=UnloadSys)
QtPluginInstanceFunction loadPlugin()
void setLoadHints(QLibrary::LoadHints lh)
QFunctionPointer resolve(const char *)
QObject * pluginInstance()
static void releaseLibrary(QLibraryPrivate *lib)
static QLibraryPrivate * findOrCreate(const QString &fileName, const QString &version, QLibrary::LoadHints loadHints)
\inmodule QtCore \reentrant
Non-template base class of QStaticByteArrayMatcher.
constexpr QStaticByteArrayMatcherBase(const char *pattern, size_t n) noexcept
~QStaticByteArrayMatcherBase()=default
The QStaticByteArrayMatcher class is a compile-time version of QByteArrayMatcher.
constexpr QStaticByteArrayMatcher(const char(&patternToMatch)[N]) noexcept
constexpr void fill(ForwardIterator first, ForwardIterator last, const Value &value)
constexpr OutputIterator transform(InputIterator first, InputIterator last, OutputIterator dest, UnaryFunction op)
constexpr bool is_sorted(ForwardIterator first, ForwardIterator last, BinaryPredicate p={})
constexpr OutputIterator copy_if(InputIterator first, InputIterator last, OutputIterator dest, UnaryPredicate pred)
constexpr OutputIterator copy(InputIterator first, InputIterator last, OutputIterator dest)
constexpr ForwardIterator is_sorted_until(ForwardIterator first, ForwardIterator last, BinaryPredicate p={})
constexpr OutputIterator fill_n(OutputIterator first, Size n, const Value &value)
constexpr OutputIterator copy_n(InputIterator first, Size n, OutputIterator dest)
constexpr QStaticByteArrayMatcher< N > qMakeStaticByteArrayMatcher(const char(&pattern)[N]) noexcept
Q_TRACE_POINT(qtcore, QLibraryPrivate_load_exit, bool success)
static void installCoverageTool(QLibraryPrivate *libPrivate)
static constexpr bool PluginMustMatchQtDebug
bool qt_debug_component()
Q_TRACE_POINT(qtcore, QLibraryPrivate_load_entry, const QString &fileName)
static bool qt_get_metadata(QLibraryPrivate *priv, QString *errMsg)
static Q_CONSTINIT bool qt_library_data_once
static QLibraryScanResult findPatternUnloaded(const QString &library, QLibraryPrivate *lib)
static constexpr bool QtBuildIsDebug
static void qlibraryCleanup()
QT_REQUIRE_CONFIG(library)