// CheckStyle: stop header check
// CheckStyle: stop line length check
// GENERATED CONTENT - DO NOT EDIT
// Source: SecurityServicesFeature.java
package com.oracle.svm.hosted;

import java.util.*;
import org.graalvm.compiler.options.*;
import org.graalvm.compiler.options.OptionType;
import org.graalvm.compiler.options.OptionStability;

public class SecurityServicesFeature_OptionDescriptors implements OptionDescriptors {
    @Override
    public OptionDescriptor get(String value) {
        switch (value) {
        // CheckStyle: stop line length check
        case "AdditionalSecurityProviders": {
            return OptionDescriptor.create(
                /*name*/ "AdditionalSecurityProviders",
                /*optionType*/ OptionType.Debug,
                /*optionValueType*/ com.oracle.svm.core.option.LocatableMultiOptionValue.Strings.class,
                /*help*/ "Comma-separated list of additional security provider fully qualified class names to mark as used.Note that this option is only necessary if you use custom engine classes not available in JCA that are not JCA compliant.",
                /*declaringClass*/ SecurityServicesFeature.Options.class,
                /*fieldName*/ "AdditionalSecurityProviders",
                /*option*/ SecurityServicesFeature.Options.AdditionalSecurityProviders,
                /*stability*/ OptionStability.EXPERIMENTAL,
                /*deprecated*/ false,
                /*deprecationMessage*/ "");
        }
        case "AdditionalSecurityServiceTypes": {
            return OptionDescriptor.create(
                /*name*/ "AdditionalSecurityServiceTypes",
                /*optionType*/ OptionType.Debug,
                /*optionValueType*/ com.oracle.svm.core.option.LocatableMultiOptionValue.Strings.class,
                /*help*/ "Comma-separated list of additional security service types (fully qualified class names) for automatic registration. Note that these must be JCA compliant.",
                /*declaringClass*/ SecurityServicesFeature.Options.class,
                /*fieldName*/ "AdditionalSecurityServiceTypes",
                /*option*/ SecurityServicesFeature.Options.AdditionalSecurityServiceTypes,
                /*stability*/ OptionStability.EXPERIMENTAL,
                /*deprecated*/ false,
                /*deprecationMessage*/ "");
        }
        case "EnableSecurityServicesFeature": {
            return OptionDescriptor.create(
                /*name*/ "EnableSecurityServicesFeature",
                /*optionType*/ OptionType.Debug,
                /*optionValueType*/ Boolean.class,
                /*help*/ "Enable automatic registration of security services.",
                /*declaringClass*/ SecurityServicesFeature.Options.class,
                /*fieldName*/ "EnableSecurityServicesFeature",
                /*option*/ SecurityServicesFeature.Options.EnableSecurityServicesFeature,
                /*stability*/ OptionStability.EXPERIMENTAL,
                /*deprecated*/ false,
                /*deprecationMessage*/ "");
        }
        case "TraceSecurityServices": {
            return OptionDescriptor.create(
                /*name*/ "TraceSecurityServices",
                /*optionType*/ OptionType.Debug,
                /*optionValueType*/ Boolean.class,
                /*help*/ "Enable tracing of security services automatic registration.",
                /*declaringClass*/ SecurityServicesFeature.Options.class,
                /*fieldName*/ "TraceSecurityServices",
                /*option*/ SecurityServicesFeature.Options.TraceSecurityServices,
                /*stability*/ OptionStability.EXPERIMENTAL,
                /*deprecated*/ false,
                /*deprecationMessage*/ "");
        }
        // CheckStyle: resume line length check
        }
        return null;
    }

    @Override
    public Iterator<OptionDescriptor> iterator() {
        return new Iterator<>() {
            int i = 0;
            @Override
            public boolean hasNext() {
                return i < 4;
            }
            @Override
            public OptionDescriptor next() {
                switch (i++) {
                    case 0: return get("AdditionalSecurityProviders");
                    case 1: return get("AdditionalSecurityServiceTypes");
                    case 2: return get("EnableSecurityServicesFeature");
                    case 3: return get("TraceSecurityServices");
                }
                throw new NoSuchElementException();
            }
        };
    }
}
