17 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. 18 * 19 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA 20 * or visit www.oracle.com if you need additional information or have any 21 * questions. 22 */ 23 24 25 package org.graalvm.compiler.options; 26 27 import java.util.Arrays; 28 import java.util.Collections; 29 import java.util.List; 30 31 /** 32 * Describes the attributes of a static field {@linkplain Option option} and provides access to its 33 * {@linkplain OptionKey value}. 34 */ 35 public final class OptionDescriptor { 36 37 protected final String name; 38 protected final OptionType optionType; 39 protected final Class<?> optionValueType; 40 protected final String help; 41 protected final List<String> extraHelp; 42 protected final OptionKey<?> optionKey; 43 protected final Class<?> declaringClass; 44 protected final String fieldName; 45 46 private static final String[] NO_EXTRA_HELP = {}; 47 48 public static OptionDescriptor create(String name, OptionType optionType, Class<?> optionValueType, String help, Class<?> declaringClass, String fieldName, OptionKey<?> option) { 49 return create(name, optionType, optionValueType, help, NO_EXTRA_HELP, declaringClass, fieldName, option); 50 } 51 52 public static OptionDescriptor create(String name, OptionType optionType, Class<?> optionValueType, String help, String[] extraHelp, Class<?> declaringClass, String fieldName, 53 OptionKey<?> option) { 54 assert option != null : declaringClass + "." + fieldName; 55 OptionDescriptor result = option.getDescriptor(); 56 if (result == null) { 57 List<String> extraHelpList = extraHelp == null || extraHelp.length == 0 ? Collections.emptyList() : Collections.unmodifiableList(Arrays.asList(extraHelp)); 58 result = new OptionDescriptor(name, optionType, optionValueType, help, extraHelpList, declaringClass, fieldName, option); 59 option.setDescriptor(result); 60 } 61 assert result.name.equals(name) && result.optionValueType == optionValueType && result.declaringClass == declaringClass && result.fieldName.equals(fieldName) && result.optionKey == option; 62 return result; 63 } 64 | 17 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. 18 * 19 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA 20 * or visit www.oracle.com if you need additional information or have any 21 * questions. 22 */ 23 24 25 package org.graalvm.compiler.options; 26 27 import java.util.Arrays; 28 import java.util.Collections; 29 import java.util.List; 30 31 /** 32 * Describes the attributes of a static field {@linkplain Option option} and provides access to its 33 * {@linkplain OptionKey value}. 34 */ 35 public final class OptionDescriptor { 36 37 private final String name; 38 private final OptionType optionType; 39 private final Class<?> optionValueType; 40 private final String help; 41 private final List<String> extraHelp; 42 private final OptionKey<?> optionKey; 43 private final Class<?> declaringClass; 44 private final String fieldName; 45 46 private static final String[] NO_EXTRA_HELP = {}; 47 48 public static OptionDescriptor create(String name, OptionType optionType, Class<?> optionValueType, String help, Class<?> declaringClass, String fieldName, OptionKey<?> option) { 49 return create(name, optionType, optionValueType, help, NO_EXTRA_HELP, declaringClass, fieldName, option); 50 } 51 52 public static OptionDescriptor create(String name, OptionType optionType, Class<?> optionValueType, String help, String[] extraHelp, Class<?> declaringClass, String fieldName, 53 OptionKey<?> option) { 54 assert option != null : declaringClass + "." + fieldName; 55 OptionDescriptor result = option.getDescriptor(); 56 if (result == null) { 57 List<String> extraHelpList = extraHelp == null || extraHelp.length == 0 ? Collections.emptyList() : Collections.unmodifiableList(Arrays.asList(extraHelp)); 58 result = new OptionDescriptor(name, optionType, optionValueType, help, extraHelpList, declaringClass, fieldName, option); 59 option.setDescriptor(result); 60 } 61 assert result.name.equals(name) && result.optionValueType == optionValueType && result.declaringClass == declaringClass && result.fieldName.equals(fieldName) && result.optionKey == option; 62 return result; 63 } 64 |