4#ifndef QBYTEARRAYMATCHER_H
5#define QBYTEARRAYMATCHER_H
7#include <QtCore/qbytearray.h>
9#include <QtCore/q20algorithm.h>
16class QByteArrayMatcherPrivate;
22 explicit QByteArrayMatcher(
const QByteArray &pattern);
23 explicit QByteArrayMatcher(QByteArrayView pattern)
24 : QByteArrayMatcher(pattern.data(), pattern.size())
26 explicit QByteArrayMatcher(
const char *pattern, qsizetype length = -1);
27 QByteArrayMatcher(
const QByteArrayMatcher &other);
30 QByteArrayMatcher &operator=(
const QByteArrayMatcher &other);
32 void setPattern(
const QByteArray &pattern);
34#if QT_CORE_REMOVED_SINCE(6
, 3
)
35 qsizetype indexIn(
const QByteArray &ba, qsizetype from = 0)
const;
38 qsizetype indexIn(
const QByteArray &ba, qsizetype from = 0)
const
39 {
return indexIn(QByteArrayView{ba}, from); }
41 qsizetype indexIn(
const char *str, qsizetype len, qsizetype from = 0)
const;
42 qsizetype indexIn(QByteArrayView data, qsizetype from = 0)
const;
43 inline QByteArray pattern()
const
45 if (q_pattern.isNull())
46 return QByteArray(
reinterpret_cast<
const char*>(p.p), p.l);
51 QByteArrayMatcherPrivate *d;
54 uchar q_skiptable[256];
76#if QT_CORE_REMOVED_SINCE(6
, 3
) && QT_POINTER_SIZE != 4
84 static constexpr Skiptable generate(
const char *pattern, size_t n)
noexcept
86 const auto uchar_max = (std::numeric_limits<uchar>::max)();
87 uchar max = n > uchar_max ? uchar_max : uchar(n);
89 q20::fill(
std::begin(table.data),
std::end(table.data), max);
92 table.data[uchar(*pattern++)] = max;
102 static_assert(N > 2,
"QStaticByteArrayMatcher makes no sense for finding a single-char pattern");
107 for (size_t i = 0; i < N; ++i)
108 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)