4#ifndef QBYTEARRAYMATCHER_H
5#define QBYTEARRAYMATCHER_H
7#include <QtCore/qbytearray.h>
9#include <QtCore/q20algorithm.h>
16class QByteArrayMatcherPrivate;
34#if QT_CORE_REMOVED_SINCE(6, 3)
45 if (q_pattern.isNull())
46 return QByteArray(
reinterpret_cast<const char*
>(
p.p),
p.l);
51 QByteArrayMatcherPrivate *
d;
54 uchar q_skiptable[256];
72 : m_skiptable(generate(
pattern,
n)) {}
76#if QT_CORE_REMOVED_SINCE(6, 3) && QT_POINTER_SIZE != 4
77 Q_CORE_EXPORT
int indexOfIn(
const char *needle,
uint nlen,
const char *haystack,
int hlen,
int from)
const noexcept;
84 static constexpr Skiptable generate(
const char *
pattern,
size_t n)
noexcept
86 const auto uchar_max = (std::numeric_limits<uchar>::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];
113 {
return this->
indexOfIn(m_pattern, N - 1, haystack.
data(), haystack.
size(), from); }
115 {
return this->
indexOfIn(m_pattern, N - 1, haystack, hlen, from); }
117 {
return this->
indexOfIn(m_pattern, N - 1, haystack.
data(), haystack.
size(), from); }
QByteArrayMatcher(QByteArrayView pattern)
Q_WEAK_OVERLOAD qsizetype indexIn(const QByteArray &ba, qsizetype from=0) const
QByteArray pattern() const
Returns the byte array pattern that this byte array matcher will search for.
constexpr qsizetype size() const noexcept
constexpr const_pointer data() const noexcept
char * data()
\macro QT_NO_CAST_FROM_BYTEARRAY
qsizetype size() const noexcept
Returns the number of bytes in this byte array.
Non-template base class of QStaticByteArrayMatcher.
constexpr QStaticByteArrayMatcherBase(const char *pattern, size_t n) noexcept
Q_CORE_EXPORT qsizetype indexOfIn(const char *needle, size_t nlen, const char *haystack, qsizetype hlen, qsizetype from) const noexcept
~QStaticByteArrayMatcherBase()=default
The QStaticByteArrayMatcher class is a compile-time version of QByteArrayMatcher.
qsizetype indexIn(const char *haystack, qsizetype hlen, qsizetype from=0) const noexcept
Searches the char string haystack, which has length hlen, from byte position from (default 0,...
qsizetype indexIn(QByteArrayView haystack, qsizetype from=0) const noexcept
constexpr QStaticByteArrayMatcher(const char(&patternToMatch)[N]) noexcept
QByteArray pattern() const
Returns the byte array pattern that this byte array matcher will search for.
Q_WEAK_OVERLOAD qsizetype indexIn(const QByteArray &haystack, qsizetype from=0) const noexcept
Searches the char string haystack, from byte position from (default 0, i.e.
Combined button and popup list for selecting options.
constexpr void fill(ForwardIterator first, ForwardIterator last, const Value &value)
constexpr QStaticByteArrayMatcher< N > qMakeStaticByteArrayMatcher(const char(&pattern)[N]) noexcept
GLenum GLuint GLintptr GLsizeiptr size
[1]
GLenum GLuint GLenum GLsizei length
GLint GLsizei GLsizei GLenum GLenum GLsizei void * data
GLenum GLenum GLsizei void * table