1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-07-27 06:37:44 +00:00

LibWeb: Add fast_is<T>() for various types stood out in a profile

This commit is contained in:
Andreas Kling 2023-03-10 21:16:18 +01:00
parent f6426cdcd4
commit 1cf5737e9e
8 changed files with 48 additions and 0 deletions

View file

@ -89,11 +89,14 @@ public:
virtual bool is_viewport() const { return false; }
virtual bool is_svg_box() const { return false; }
virtual bool is_svg_geometry_box() const { return false; }
virtual bool is_svg_svg_box() const { return false; }
virtual bool is_label() const { return false; }
virtual bool is_replaced_box() const { return false; }
virtual bool is_list_item_box() const { return false; }
virtual bool is_list_item_marker_box() const { return false; }
virtual bool is_table_wrapper() const { return false; }
virtual bool is_table() const { return false; }
virtual bool is_node_with_style_and_box_model_metrics() const { return false; }
template<typename T>
bool fast_is() const = delete;
@ -219,9 +222,14 @@ protected:
}
private:
virtual bool is_node_with_style_and_box_model_metrics() const final { return true; }
BoxModelMetrics m_box_model;
};
template<>
inline bool Node::fast_is<NodeWithStyleAndBoxModelMetrics>() const { return is_node_with_style_and_box_model_metrics(); }
inline Gfx::Font const& Node::font() const
{
if (m_has_style)