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