22#include <yarr/YarrInterpreter.h>
23#include <yarr/YarrJIT.h>
25#include <private/qv4compileddata_p.h>
26#include <private/qv4managed_p.h>
28#include <QtCore/qstring.h>
29#include <QtCore/qvector.h>
35struct ExecutionEngine;
41 void init(ExecutionEngine *engine,
const QString& pattern, uint flags);
51 return jitCode && !jitCode->failureReason().has_value() && jitCode->has16BitCode();
57 bool ignoreCase()
const {
return flags & CompiledData::RegExp::RegExp_IgnoreCase; }
58 bool multiLine()
const {
return flags & CompiledData::RegExp::RegExp_Multiline; }
59 bool global()
const {
return flags & CompiledData::RegExp::RegExp_Global; }
60 bool unicode()
const {
return flags & CompiledData::RegExp::RegExp_Unicode; }
61 bool sticky()
const {
return flags & CompiledData::RegExp::RegExp_Sticky; }
83 V4_MANAGED(
RegExp, Managed)
107 uint match(
const QString& string,
int start, uint *matchOffsets);
111 static QString getSubstitution(
const QString &matched,
const QString &str,
int position,
const Value *captures,
int nCaptures,
const QString &replacement);
124 {
return pattern == other.pattern && flags == other.flags;; }
138{
return qHashMulti(seed, key.pattern, key.flags); }
Q_STATIC_ASSERT(std::is_trivial_v< ArrayData >)
size_t qHash(const RegExpCacheKey &key, size_t seed=0) noexcept
DEFINE_MANAGED_VTABLE(RegExp)
static JSC::RegExpFlags jscFlags(quint8 flags)
bool hasValidJITCode() const
void init(ExecutionEngine *engine, const QString &pattern, uint flags)
JSC::Yarr::BytecodePattern * byteCode
RegExpCacheKey(const QString &pattern, uint flags)
bool operator!=(const RegExpCacheKey &other) const
bool operator==(const RegExpCacheKey &other) const
RegExpCacheKey(const RegExp::Data *re)
static QString getSubstitution(const QString &matched, const QString &str, int position, const Value *captures, int nCaptures, const QString &replacement)
uint match(const QString &string, int start, uint *matchOffsets)