mirror of
				https://github.com/RGBCube/serenity
				synced 2025-10-30 23:52:43 +00:00 
			
		
		
		
	 9303e9e76f
			
		
	
	
		9303e9e76f
		
	
	
	
	
		
			
			Which pretty much needs to be done together due to the amount of places where they are compared together. This also involves porting over StackOfOpenElements over to FlyString from DeprecatedFly string to prevent a gazillion calls to `.to_deprecated_fly_string` calls in HTMLParser.
		
			
				
	
	
		
			51 lines
		
	
	
	
		
			1.2 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			51 lines
		
	
	
	
		
			1.2 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
| /*
 | |
|  * Copyright (c) 2020-2022, Andreas Kling <kling@serenityos.org>
 | |
|  *
 | |
|  * SPDX-License-Identifier: BSD-2-Clause
 | |
|  */
 | |
| 
 | |
| #pragma once
 | |
| 
 | |
| #include <LibWeb/DOM/Element.h>
 | |
| #include <LibWeb/Forward.h>
 | |
| 
 | |
| namespace Web::HTML {
 | |
| 
 | |
| class ListOfActiveFormattingElements {
 | |
| public:
 | |
|     ListOfActiveFormattingElements() = default;
 | |
|     ~ListOfActiveFormattingElements();
 | |
| 
 | |
|     struct Entry {
 | |
|         bool is_marker() const { return !element; }
 | |
| 
 | |
|         JS::GCPtr<DOM::Element> element;
 | |
|     };
 | |
| 
 | |
|     bool is_empty() const { return m_entries.is_empty(); }
 | |
|     bool contains(const DOM::Element&) const;
 | |
| 
 | |
|     void add(DOM::Element& element);
 | |
|     void add_marker();
 | |
|     void insert_at(size_t index, DOM::Element& element);
 | |
| 
 | |
|     void replace(DOM::Element& to_remove, DOM::Element& to_add);
 | |
| 
 | |
|     void remove(DOM::Element&);
 | |
| 
 | |
|     Vector<Entry> const& entries() const { return m_entries; }
 | |
|     Vector<Entry>& entries() { return m_entries; }
 | |
| 
 | |
|     DOM::Element* last_element_with_tag_name_before_marker(FlyString const& tag_name);
 | |
| 
 | |
|     void clear_up_to_the_last_marker();
 | |
| 
 | |
|     Optional<size_t> find_index(DOM::Element const&) const;
 | |
| 
 | |
|     void visit_edges(JS::Cell::Visitor&);
 | |
| 
 | |
| private:
 | |
|     Vector<Entry> m_entries;
 | |
| };
 | |
| 
 | |
| }
 |