{% from 'macros.tmpl' import license %}
{{license()}}

#ifndef StyleBuilderFunctions_h
#define StyleBuilderFunctions_h

#include "core/css/resolver/StyleBuilderConverter.h"

namespace blink {

class CSSValue;
class StyleResolverState;

class StyleBuilderFunctions {
public:

    {% for property_id, property in properties.items()
           if property.should_declare_functions %}
    static void applyInitial{{property_id}}(StyleResolverState&);
    static void applyInherit{{property_id}}(StyleResolverState&);
    static void applyValue{{property_id}}(StyleResolverState&, CSSValue*);

    {% endfor %}
};

} // namespace blink

#endif
