#pragma once #include #include #include class StyleRule : public RefCounted { public: static NonnullRefPtr create(Vector&& selectors, Vector>&& declarations) { return adopt(*new StyleRule(move(selectors), move(declarations))); } ~StyleRule(); const Vector& selectors() const { return m_selectors; } const Vector>& declarations() const { return m_declarations; } template void for_each_declaration(C callback) const { for (auto& declaration : m_declarations) callback(*declaration); } private: StyleRule(Vector&&, Vector>&&); Vector m_selectors; Vector> m_declarations; };