mirror of
				https://github.com/RGBCube/serenity
				synced 2025-10-31 15:52:43 +00:00 
			
		
		
		
	 8d6db36cbb
			
		
	
	
		8d6db36cbb
		
	
	
	
	
		
			
			This introduces 3 classes: NodeList, StaticNodeList and LiveNodeList. NodeList is the base of the static and live versions. Static is a snapshot whereas live acts on the underlying data and thus inhibits the same issues we have currently with HTMLCollection. They were split into separate classes to not have them weirdly mis-mashed together. The create functions for static and live both return a NNRP to the base class. This is to prevent having to do awkward casting at creation and/or return, as the bindings expect to see the base NodeList only.
		
			
				
	
	
		
			35 lines
		
	
	
	
		
			797 B
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			35 lines
		
	
	
	
		
			797 B
		
	
	
	
		
			C++
		
	
	
	
	
	
| /*
 | |
|  * Copyright (c) 2021, Luke Wilde <lukew@serenityos.org>
 | |
|  *
 | |
|  * SPDX-License-Identifier: BSD-2-Clause
 | |
|  */
 | |
| 
 | |
| #pragma once
 | |
| 
 | |
| #include <AK/NonnullRefPtrVector.h>
 | |
| #include <LibWeb/DOM/Node.h>
 | |
| #include <LibWeb/DOM/NodeList.h>
 | |
| 
 | |
| namespace Web::DOM {
 | |
| 
 | |
| class StaticNodeList : public NodeList {
 | |
| public:
 | |
|     static NonnullRefPtr<NodeList> create(NonnullRefPtrVector<Node>&& static_nodes)
 | |
|     {
 | |
|         return adopt_ref(*new StaticNodeList(move(static_nodes)));
 | |
|     }
 | |
| 
 | |
|     virtual ~StaticNodeList() override = default;
 | |
| 
 | |
|     virtual u32 length() const override;
 | |
|     virtual Node const* item(u32 index) const override;
 | |
| 
 | |
|     virtual bool is_supported_property_index(u32) const override;
 | |
| 
 | |
| private:
 | |
|     StaticNodeList(NonnullRefPtrVector<Node>&& static_nodes);
 | |
| 
 | |
|     NonnullRefPtrVector<Node> m_static_nodes;
 | |
| };
 | |
| 
 | |
| }
 |