src/jdk.internal.vm.compiler/share/classes/org.graalvm.options/src/org/graalvm/options/OptionDescriptors.java
Index Unified diffs Context diffs Sdiffs Patch New Old Previous File Next File
*** old/src/jdk.internal.vm.compiler/share/classes/org.graalvm.options/src/org/graalvm/options/OptionDescriptors.java	Mon Jun 26 15:43:54 2017
--- new/src/jdk.internal.vm.compiler/share/classes/org.graalvm.options/src/org/graalvm/options/OptionDescriptors.java	Mon Jun 26 15:43:54 2017

*** 25,34 **** --- 25,37 ---- package org.graalvm.options; import java.util.Arrays; import java.util.Collections; import java.util.Iterator; + import java.util.LinkedHashMap; + import java.util.List; + import java.util.Map; import java.util.NoSuchElementException; /** * An interface to a set of {@link OptionDescriptor}s. *
*** 74,83 **** --- 77,121 ---- return descriptors[0]; } else { return new UnionOptionDescriptors(descriptors); } } + + /** + * Create an {@link OptionDescriptors} instance from a list. The option descriptors + * implementation is backed by a {@link LinkedHashMap} that preserves ordering. + * + * @since 1.0 + */ + static OptionDescriptors create(List<OptionDescriptor> descriptors) { + if (descriptors == null || descriptors.isEmpty()) { + return EMPTY; + } + return new OptionDescriptorsMap(descriptors); + } + } + + class OptionDescriptorsMap implements OptionDescriptors { + + final Map<String, OptionDescriptor> descriptors = new LinkedHashMap<>(); + + OptionDescriptorsMap(List<OptionDescriptor> descriptorList) { + for (OptionDescriptor descriptor : descriptorList) { + descriptors.put(descriptor.getName(), descriptor); + } + } + + @Override + public OptionDescriptor get(String optionName) { + return descriptors.get(optionName); + } + + @Override + public Iterator<OptionDescriptor> iterator() { + return descriptors.values().iterator(); + } + } final class UnionOptionDescriptors implements OptionDescriptors { final OptionDescriptors[] descriptorsList;

src/jdk.internal.vm.compiler/share/classes/org.graalvm.options/src/org/graalvm/options/OptionDescriptors.java
Index Unified diffs Context diffs Sdiffs Patch New Old Previous File Next File