From 40a355a42d4a9444dc753c04c6608dade2f06a23 Mon Sep 17 00:00:00 2001 From: Daniel Baumann Date: Fri, 19 Apr 2024 03:13:27 +0200 Subject: Adding upstream version 125.0.1. Signed-off-by: Daniel Baumann --- js/public/RegExpFlags.h | 43 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 43 insertions(+) (limited to 'js/public/RegExpFlags.h') diff --git a/js/public/RegExpFlags.h b/js/public/RegExpFlags.h index 36a2e76c29..e4663786fc 100644 --- a/js/public/RegExpFlags.h +++ b/js/public/RegExpFlags.h @@ -12,6 +12,7 @@ #include "mozilla/Assertions.h" // MOZ_ASSERT #include "mozilla/Attributes.h" // MOZ_IMPLICIT +#include // ostream #include // uint8_t namespace JS { @@ -129,6 +130,15 @@ class RegExpFlags { explicit operator bool() const { return flags_ != 0; } Flag value() const { return flags_; } + constexpr operator Flag() const { return flags_; } + + void set(Flag flags, bool value) { + if (value) { + flags_ |= flags; + } else { + flags_ &= ~flags; + } + } }; inline RegExpFlags& operator&=(RegExpFlags& flags, RegExpFlags::Flag flag) { @@ -158,6 +168,39 @@ inline RegExpFlags operator|(const RegExpFlags& lhs, const RegExpFlags& rhs) { return result; } +inline bool MaybeParseRegExpFlag(char c, RegExpFlags::Flag* flag) { + switch (c) { + case 'd': + *flag = RegExpFlag::HasIndices; + return true; + case 'g': + *flag = RegExpFlag::Global; + return true; + case 'i': + *flag = RegExpFlag::IgnoreCase; + return true; + case 'm': + *flag = RegExpFlag::Multiline; + return true; + case 's': + *flag = RegExpFlag::DotAll; + return true; + case 'u': + *flag = RegExpFlag::Unicode; + return true; + case 'v': + *flag = RegExpFlag::UnicodeSets; + return true; + case 'y': + *flag = RegExpFlag::Sticky; + return true; + default: + return false; + } +} + +std::ostream& operator<<(std::ostream& os, RegExpFlags flags); + } // namespace JS #endif // js_RegExpFlags_h -- cgit v1.2.3