35 import org.graalvm.compiler.options.EnumOptionKey.ValueHelp;
36 import org.graalvm.util.EconomicMap;
37 import org.graalvm.util.Equivalence;
38 import org.graalvm.util.UnmodifiableEconomicMap;
39 import org.graalvm.util.UnmodifiableMapCursor;
40
41 /**
42 * A context for obtaining values for {@link OptionKey}s.
43 */
44 public class OptionValues {
45
46 private final UnmodifiableEconomicMap<OptionKey<?>, Object> values;
47
48 protected boolean containsKey(OptionKey<?> key) {
49 return values.containsKey(key);
50 }
51
52 public OptionValues(OptionValues initialValues, UnmodifiableEconomicMap<OptionKey<?>, Object> extraPairs) {
53 EconomicMap<OptionKey<?>, Object> map = newOptionMap();
54 if (initialValues != null) {
55 map.putAll(initialValues.values);
56 }
57 initMap(map, extraPairs);
58 this.values = map;
59 }
60
61 public OptionValues(OptionValues initialValues, OptionKey<?> key1, Object value1, Object... extraPairs) {
62 this(initialValues, asMap(key1, value1, extraPairs));
63 }
64
65 /**
66 * Creates a new map suitable for using {@link OptionKey}s as keys.
67 */
68 public static EconomicMap<OptionKey<?>, Object> newOptionMap() {
69 return EconomicMap.create(Equivalence.IDENTITY);
70 }
71
72 /**
73 * Gets an immutable view of the key/value pairs in this object. Values read from this view
74 * should be {@linkplain #decodeNull(Object) decoded} before being used.
75 */
|
35 import org.graalvm.compiler.options.EnumOptionKey.ValueHelp;
36 import org.graalvm.util.EconomicMap;
37 import org.graalvm.util.Equivalence;
38 import org.graalvm.util.UnmodifiableEconomicMap;
39 import org.graalvm.util.UnmodifiableMapCursor;
40
41 /**
42 * A context for obtaining values for {@link OptionKey}s.
43 */
44 public class OptionValues {
45
46 private final UnmodifiableEconomicMap<OptionKey<?>, Object> values;
47
48 protected boolean containsKey(OptionKey<?> key) {
49 return values.containsKey(key);
50 }
51
52 public OptionValues(OptionValues initialValues, UnmodifiableEconomicMap<OptionKey<?>, Object> extraPairs) {
53 EconomicMap<OptionKey<?>, Object> map = newOptionMap();
54 if (initialValues != null) {
55 map.putAll(initialValues.getMap());
56 }
57 initMap(map, extraPairs);
58 this.values = map;
59 }
60
61 public OptionValues(OptionValues initialValues, OptionKey<?> key1, Object value1, Object... extraPairs) {
62 this(initialValues, asMap(key1, value1, extraPairs));
63 }
64
65 /**
66 * Creates a new map suitable for using {@link OptionKey}s as keys.
67 */
68 public static EconomicMap<OptionKey<?>, Object> newOptionMap() {
69 return EconomicMap.create(Equivalence.IDENTITY);
70 }
71
72 /**
73 * Gets an immutable view of the key/value pairs in this object. Values read from this view
74 * should be {@linkplain #decodeNull(Object) decoded} before being used.
75 */
|