From 8671d79ba48398559480e9d755296815523dfb49 Mon Sep 17 00:00:00 2001 From: Sam Atkins Date: Sat, 3 Jul 2021 14:54:19 +0100 Subject: [PATCH] LibWeb: Add direct StyleComponentValueRule constructors Rather than passing a ComponentType, and then manually modifying the data fields, we now create them initialized. The constructor that takes a Token is intentionally left implicit, so that we can automatically convert when using the TokenStream later. --- .../Libraries/LibWeb/CSS/Parser/Parser.cpp | 23 +++++-------------- .../CSS/Parser/StyleComponentValueRule.h | 4 +++- .../LibWeb/CSS/Parser/StyleRules.cpp | 15 ++++++++++-- 3 files changed, 22 insertions(+), 20 deletions(-) diff --git a/Userland/Libraries/LibWeb/CSS/Parser/Parser.cpp b/Userland/Libraries/LibWeb/CSS/Parser/Parser.cpp index c28ec8c668..3e87c5eb5d 100644 --- a/Userland/Libraries/LibWeb/CSS/Parser/Parser.cpp +++ b/Userland/Libraries/LibWeb/CSS/Parser/Parser.cpp @@ -559,21 +559,13 @@ StyleComponentValueRule Parser::consume_a_component_value() { auto token = next_token(); - if (token.is_open_curly() || token.is_open_square() || token.is_open_paren()) { - auto component = StyleComponentValueRule(StyleComponentValueRule::ComponentType::Block); - component.m_block = consume_a_simple_block(); - return component; - } + if (token.is_open_curly() || token.is_open_square() || token.is_open_paren()) + return StyleComponentValueRule(consume_a_simple_block()); - if (token.is_function()) { - auto component = StyleComponentValueRule(StyleComponentValueRule::ComponentType::Function); - component.m_function = consume_a_function(); - return component; - } + if (token.is_function()) + return StyleComponentValueRule(consume_a_function()); - auto component = StyleComponentValueRule(StyleComponentValueRule::ComponentType::Token); - component.m_token = token; - return component; + return StyleComponentValueRule(token); } NonnullRefPtr Parser::consume_a_simple_block() @@ -722,10 +714,7 @@ Vector Parser::consume_a_list_of_declarations() if (token.is_ident()) { Vector temp; - - auto component = StyleComponentValueRule(StyleComponentValueRule::ComponentType::Token); - component.m_token = token; - temp.append(component); + temp.append(StyleComponentValueRule(token)); for (;;) { auto peek = peek_token(); diff --git a/Userland/Libraries/LibWeb/CSS/Parser/StyleComponentValueRule.h b/Userland/Libraries/LibWeb/CSS/Parser/StyleComponentValueRule.h index 1510bbcdb3..cef3b06c9a 100644 --- a/Userland/Libraries/LibWeb/CSS/Parser/StyleComponentValueRule.h +++ b/Userland/Libraries/LibWeb/CSS/Parser/StyleComponentValueRule.h @@ -26,7 +26,9 @@ public: Block }; - explicit StyleComponentValueRule(ComponentType); + StyleComponentValueRule(Token); + explicit StyleComponentValueRule(NonnullRefPtr); + explicit StyleComponentValueRule(NonnullRefPtr); ~StyleComponentValueRule(); bool is_block() const { return m_type == ComponentType::Block; } diff --git a/Userland/Libraries/LibWeb/CSS/Parser/StyleRules.cpp b/Userland/Libraries/LibWeb/CSS/Parser/StyleRules.cpp index 18c1a8328d..2acd86a104 100644 --- a/Userland/Libraries/LibWeb/CSS/Parser/StyleRules.cpp +++ b/Userland/Libraries/LibWeb/CSS/Parser/StyleRules.cpp @@ -35,8 +35,19 @@ StyleRule::~StyleRule() { } StyleBlockRule::StyleBlockRule() { } StyleBlockRule::~StyleBlockRule() { } -StyleComponentValueRule::StyleComponentValueRule(ComponentType type) - : m_type(type) +StyleComponentValueRule::StyleComponentValueRule(Token token) + : m_type(StyleComponentValueRule::ComponentType::Token) + , m_token(token) +{ +} +StyleComponentValueRule::StyleComponentValueRule(NonnullRefPtr function) + : m_type(StyleComponentValueRule::ComponentType::Function) + , m_function(function) +{ +} +StyleComponentValueRule::StyleComponentValueRule(NonnullRefPtr block) + : m_type(StyleComponentValueRule::ComponentType::Block) + , m_block(block) { } StyleComponentValueRule::~StyleComponentValueRule() { }