src/share/classes/com/sun/tools/javac/util/Options.java

Tue, 28 Dec 2010 15:54:52 -0800

author
ohair
date
Tue, 28 Dec 2010 15:54:52 -0800
changeset 798
4868a36f6fd8
parent 700
7b413ac1a720
child 923
6970d9fb8e02
permissions
-rw-r--r--

6962318: Update copyright year
Reviewed-by: xdono

duke@1 1 /*
ohair@798 2 * Copyright (c) 2001, 2010, Oracle and/or its affiliates. All rights reserved.
duke@1 3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
duke@1 4 *
duke@1 5 * This code is free software; you can redistribute it and/or modify it
duke@1 6 * under the terms of the GNU General Public License version 2 only, as
ohair@554 7 * published by the Free Software Foundation. Oracle designates this
duke@1 8 * particular file as subject to the "Classpath" exception as provided
ohair@554 9 * by Oracle in the LICENSE file that accompanied this code.
duke@1 10 *
duke@1 11 * This code is distributed in the hope that it will be useful, but WITHOUT
duke@1 12 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
duke@1 13 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
duke@1 14 * version 2 for more details (a copy is included in the LICENSE file that
duke@1 15 * accompanied this code).
duke@1 16 *
duke@1 17 * You should have received a copy of the GNU General Public License version
duke@1 18 * 2 along with this work; if not, write to the Free Software Foundation,
duke@1 19 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
duke@1 20 *
ohair@554 21 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
ohair@554 22 * or visit www.oracle.com if you need additional information or have any
ohair@554 23 * questions.
duke@1 24 */
duke@1 25
duke@1 26 package com.sun.tools.javac.util;
duke@1 27
jjg@700 28 import java.util.*;
duke@1 29 import com.sun.tools.javac.main.OptionName;
jjg@700 30 import static com.sun.tools.javac.main.OptionName.*;
duke@1 31
duke@1 32 /** A table of all command-line options.
duke@1 33 * If an option has an argument, the option name is mapped to the argument.
duke@1 34 * If a set option has no argument, it is mapped to itself.
duke@1 35 *
jjg@581 36 * <p><b>This is NOT part of any supported API.
jjg@581 37 * If you write code that depends on this, you do so at your own risk.
duke@1 38 * This code and its internal interfaces are subject to change or
duke@1 39 * deletion without notice.</b>
duke@1 40 */
duke@1 41 public class Options {
duke@1 42 private static final long serialVersionUID = 0;
duke@1 43
duke@1 44 /** The context key for the options. */
duke@1 45 public static final Context.Key<Options> optionsKey =
duke@1 46 new Context.Key<Options>();
duke@1 47
duke@1 48 private LinkedHashMap<String,String> values;
duke@1 49
duke@1 50 /** Get the Options instance for this context. */
duke@1 51 public static Options instance(Context context) {
duke@1 52 Options instance = context.get(optionsKey);
duke@1 53 if (instance == null)
duke@1 54 instance = new Options(context);
duke@1 55 return instance;
duke@1 56 }
duke@1 57
duke@1 58 protected Options(Context context) {
duke@1 59 // DEBUGGING -- Use LinkedHashMap for reproducability
duke@1 60 values = new LinkedHashMap<String,String>();
duke@1 61 context.put(optionsKey, this);
duke@1 62 }
duke@1 63
jjg@700 64 /**
jjg@700 65 * Get the value for an undocumented option.
jjg@700 66 */
duke@1 67 public String get(String name) {
duke@1 68 return values.get(name);
duke@1 69 }
duke@1 70
jjg@700 71 /**
jjg@700 72 * Get the value for an option.
jjg@700 73 */
duke@1 74 public String get(OptionName name) {
duke@1 75 return values.get(name.optionName);
duke@1 76 }
duke@1 77
jjg@700 78 /**
jjg@700 79 * Check if the value for an undocumented option has been set.
jjg@700 80 */
jjg@700 81 public boolean isSet(String name) {
jjg@700 82 return (values.get(name) != null);
jjg@700 83 }
jjg@700 84
jjg@700 85 /**
jjg@700 86 * Check if the value for an option has been set.
jjg@700 87 */
jjg@700 88 public boolean isSet(OptionName name) {
jjg@700 89 return (values.get(name.optionName) != null);
jjg@700 90 }
jjg@700 91
jjg@700 92 /**
jjg@700 93 * Check if the value for a choice option has been set to a specific value.
jjg@700 94 */
jjg@700 95 public boolean isSet(OptionName name, String value) {
jjg@700 96 return (values.get(name.optionName + value) != null);
jjg@700 97 }
jjg@700 98
jjg@700 99 /**
jjg@700 100 * Check if the value for an undocumented option has not been set.
jjg@700 101 */
jjg@700 102 public boolean isUnset(String name) {
jjg@700 103 return (values.get(name) == null);
jjg@700 104 }
jjg@700 105
jjg@700 106 /**
jjg@700 107 * Check if the value for an option has not been set.
jjg@700 108 */
jjg@700 109 public boolean isUnset(OptionName name) {
jjg@700 110 return (values.get(name.optionName) == null);
jjg@700 111 }
jjg@700 112
jjg@700 113 /**
jjg@700 114 * Check if the value for a choice option has not been set to a specific value.
jjg@700 115 */
jjg@700 116 public boolean isUnset(OptionName name, String value) {
jjg@700 117 return (values.get(name.optionName + value) == null);
jjg@700 118 }
jjg@700 119
duke@1 120 public void put(String name, String value) {
duke@1 121 values.put(name, value);
duke@1 122 }
duke@1 123
duke@1 124 public void put(OptionName name, String value) {
duke@1 125 values.put(name.optionName, value);
duke@1 126 }
duke@1 127
duke@1 128 public void putAll(Options options) {
duke@1 129 values.putAll(options.values);
duke@1 130 }
duke@1 131
duke@1 132 public void remove(String name) {
duke@1 133 values.remove(name);
duke@1 134 }
duke@1 135
duke@1 136 public Set<String> keySet() {
duke@1 137 return values.keySet();
duke@1 138 }
duke@1 139
duke@1 140 public int size() {
duke@1 141 return values.size();
duke@1 142 }
duke@1 143
duke@1 144 /** Check for a lint suboption. */
duke@1 145 public boolean lint(String s) {
duke@1 146 // return true if either the specific option is enabled, or
duke@1 147 // they are all enabled without the specific one being
duke@1 148 // disabled
duke@1 149 return
jjg@700 150 isSet(XLINT_CUSTOM, s) ||
jjg@700 151 (isSet(XLINT) || isSet(XLINT_CUSTOM, "all")) &&
jjg@700 152 isUnset(XLINT_CUSTOM, "-" + s);
duke@1 153 }
duke@1 154 }

mercurial