/* * Copyright (c) 2026, Callum Law * * SPDX-License-Identifier: BSD-2-Clause */ #pragma once #include namespace Web::CSS { class CounterStyleStyleValue : public StyleValueWithDefaultOperators { public: struct SymbolsFunction { SymbolsType type; Vector symbols; bool operator==(SymbolsFunction const& other) const = default; }; static ValueComparingNonnullRefPtr create(Variant value) { return adopt_ref(*new (nothrow) CounterStyleStyleValue(move(value))); } virtual ~CounterStyleStyleValue() override = default; virtual void serialize(StringBuilder&, SerializationMode) const override; RefPtr resolve_counter_style(HashMap> const& registered_counter_styles) const; bool properties_equal(CounterStyleStyleValue const& other) const { return m_value == other.m_value; } virtual bool is_computationally_independent() const override { return true; } private: explicit CounterStyleStyleValue(Variant value) : StyleValueWithDefaultOperators(Type::CounterStyle) , m_value(move(value)) { } Variant m_value; }; }