/* * Copyright (c) 2021, Tim Flynn * * SPDX-License-Identifier: BSD-2-Clause */ #pragma once #include #include #include namespace JS { class RegExpStringIterator final : public Object { JS_OBJECT(RegExpStringIterator, Object); GC_DECLARE_ALLOCATOR(RegExpStringIterator); public: static GC::Ref create(Realm&, Object& regexp_object, Utf16String string, bool global, bool unicode); virtual ~RegExpStringIterator() override = default; Object& regexp_object() { return m_regexp_object; } Utf16String string() const { return m_string; } bool global() const { return m_global; } bool unicode() const { return m_unicode; } bool done() const { return m_done; } void set_done() { m_done = true; } private: explicit RegExpStringIterator(Object& prototype, Object& regexp_object, Utf16String string, bool global, bool unicode); virtual void visit_edges(Cell::Visitor&) override; GC::Ref m_regexp_object; Utf16String m_string; bool m_global { false }; bool m_unicode { false }; bool m_done { false }; }; }