namespace UnityEditor.ShaderGraph
{
    [GenerationAPI]
    internal struct KeywordDescriptor
    {
        public string displayName;
        public string referenceName;
        public KeywordType type;
        public KeywordDefinition definition;
        public KeywordScope scope;
        public KeywordShaderStage stages;
        public int value;
        public KeywordEntry[] entries;

        public void AppendKeywordDeclarationStrings(ShaderStringBuilder builder)
        {
            if (definition != KeywordDefinition.Predefined)
            {
                if (type == KeywordType.Boolean)
                    KeywordUtil.GenerateBooleanKeywordPragmaStrings(referenceName, definition, scope, stages, str => builder.AppendLine(str));
                else
                    KeywordUtil.GenerateEnumKeywordPragmaStrings(referenceName, definition, scope, stages, entries, str => builder.AppendLine(str));
            }
        }
    }
}