/* * Copyright (c) 2021, Luke Wilde * * SPDX-License-Identifier: BSD-2-Clause */ #pragma once #include #include #include namespace Web::DOM { // FIXME: Just like HTMLCollection, LiveNodeList currently does no caching. class LiveNodeList : public NodeList { public: static NonnullRefPtr create(Node& root, Function filter) { return adopt_ref(*new LiveNodeList(root, move(filter))); } virtual u32 length() const override; virtual Node const* item(u32 index) const override; virtual bool is_supported_property_index(u32) const override; private: LiveNodeList(Node& root, Function filter); NonnullRefPtrVector collection() const; NonnullRefPtr m_root; Function m_filter; }; }