/* * Copyright (c) 2024, Sam Atkins * * SPDX-License-Identifier: BSD-2-Clause */ #pragma once #include #include namespace Web::CSS { struct CounterDefinition { FlyString name; bool is_reversed; ValueComparingRefPtr value; }; /** * Holds a list of CounterDefinitions. * Shared between counter-increment, counter-reset, and counter-set properties that have (almost) identical grammar. */ class CounterDefinitionsStyleValue : public StyleValueWithDefaultOperators { public: static ValueComparingNonnullRefPtr create(Vector counter_definitions) { return adopt_ref(*new (nothrow) CounterDefinitionsStyleValue(move(counter_definitions))); } virtual ~CounterDefinitionsStyleValue() override = default; auto const& counter_definitions() const { return m_counter_definitions; } virtual String to_string() const override; bool properties_equal(CounterDefinitionsStyleValue const& other) const; private: explicit CounterDefinitionsStyleValue(Vector counter_definitions) : StyleValueWithDefaultOperators(Type::CounterDefinitions) , m_counter_definitions(move(counter_definitions)) { } Vector m_counter_definitions; }; }