/* * Copyright (c) 2020, Andreas Kling * * SPDX-License-Identifier: BSD-2-Clause */ #pragma once #include #include #include #include #include namespace JS { class MarkedValueList : public Vector { AK_MAKE_NONCOPYABLE(MarkedValueList); public: explicit MarkedValueList(Heap&); MarkedValueList(MarkedValueList&&); ~MarkedValueList(); MarkedValueList& operator=(MarkedValueList&&) = delete; Vector& values() { return *this; } MarkedValueList copy() const { MarkedValueList copy { m_heap }; copy.extend(*this); return copy; } private: Heap& m_heap; IntrusiveListNode m_list_node; public: using List = IntrusiveList<&MarkedValueList::m_list_node>; }; }