// This file is automatically generated from CSSProperties.json by the process-css-properties.py script. Do not edit it.

#pragma once

#include "CSSPropertyNames.h"
#include "CSSValueKeywords.h"

namespace WebCore {

class CSSParserTokenRange;
class CSSValue;

namespace CSS {

struct PropertyParserResult;
struct PropertyParserState;

} // namespace CSS

struct CSSPropertyParsing {
    // Parse and return a single longhand style property.
    static RefPtr<CSSValue> parseStylePropertyLonghand(CSSParserTokenRange&, CSSPropertyID, CSS::PropertyParserState&);
    // Parse a shorthand style property, adding longhands to the provided result collection. Returns true on success, false on failure.
    static bool parseStylePropertyShorthand(CSSParserTokenRange&, CSSPropertyID, CSS::PropertyParserState&, CSS::PropertyParserResult&);
    // Fast path bare-keyword support.
    static bool isKeywordValidForStyleProperty(CSSPropertyID, CSSValueID, CSS::PropertyParserState&);
    static bool isKeywordFastPathEligibleStyleProperty(CSSPropertyID);

    // Parse and return a single @first-at-rule descriptor.
    static RefPtr<CSSValue> parseFirstAtRuleDescriptor(CSSParserTokenRange&, CSSPropertyID, CSS::PropertyParserState&);
    // Fast path bare-keyword support.
    static bool isKeywordValidForFirstAtRuleDescriptor(CSSPropertyID, CSSValueID, CSS::PropertyParserState&);
    static bool isKeywordFastPathEligibleFirstAtRuleDescriptor(CSSPropertyID);

    // Parse and return a single @second-at-rule descriptor.
    static RefPtr<CSSValue> parseSecondAtRuleDescriptor(CSSParserTokenRange&, CSSPropertyID, CSS::PropertyParserState&);
    // Fast path bare-keyword support.
    static bool isKeywordValidForSecondAtRuleDescriptor(CSSPropertyID, CSSValueID, CSS::PropertyParserState&);
    static bool isKeywordFastPathEligibleSecondAtRuleDescriptor(CSSPropertyID);

    // Direct consumers.

    // Exported shared consumers.
    static RefPtr<CSSValue> consumeSharedRuleExported(CSSParserTokenRange&, CSS::PropertyParserState&);
};

} // namespace WebCore

