StyleRule.h 937 B

12345678910111213141516171819202122232425262728293031
  1. #pragma once
  2. #include <AK/NonnullRefPtrVector.h>
  3. #include <LibHTML/CSS/Selector.h>
  4. #include <LibHTML/CSS/StyleDeclaration.h>
  5. class StyleRule : public RefCounted<StyleRule> {
  6. public:
  7. static NonnullRefPtr<StyleRule> create(Vector<Selector>&& selectors, NonnullRefPtrVector<StyleDeclaration>&& declarations)
  8. {
  9. return adopt(*new StyleRule(move(selectors), move(declarations)));
  10. }
  11. ~StyleRule();
  12. const Vector<Selector>& selectors() const { return m_selectors; }
  13. const NonnullRefPtrVector<StyleDeclaration>& declarations() const { return m_declarations; }
  14. template<typename C>
  15. void for_each_declaration(C callback) const
  16. {
  17. for (auto& declaration : m_declarations)
  18. callback(declaration);
  19. }
  20. private:
  21. StyleRule(Vector<Selector>&&, NonnullRefPtrVector<StyleDeclaration>&&);
  22. Vector<Selector> m_selectors;
  23. NonnullRefPtrVector<StyleDeclaration> m_declarations;
  24. };