jjg@1411: /* jjg@1411: * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved. jjg@1411: * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. jjg@1411: * jjg@1411: * This code is free software; you can redistribute it and/or modify it jjg@1411: * under the terms of the GNU General Public License version 2 only, as jjg@1411: * published by the Free Software Foundation. Oracle designates this jjg@1411: * particular file as subject to the "Classpath" exception as provided jjg@1411: * by Oracle in the LICENSE file that accompanied this code. jjg@1411: * jjg@1411: * This code is distributed in the hope that it will be useful, but WITHOUT jjg@1411: * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or jjg@1411: * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License jjg@1411: * version 2 for more details (a copy is included in the LICENSE file that jjg@1411: * accompanied this code). jjg@1411: * jjg@1411: * You should have received a copy of the GNU General Public License version jjg@1411: * 2 along with this work; if not, write to the Free Software Foundation, jjg@1411: * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. jjg@1411: * jjg@1411: * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA jjg@1411: * or visit www.oracle.com if you need additional information or have any jjg@1411: * questions. jjg@1411: */ jjg@1411: jjg@1411: package com.sun.tools.javadoc; jjg@1411: jjg@1411: import com.sun.tools.javac.code.Flags; jjg@1411: import com.sun.tools.javac.util.ListBuffer; jjg@1411: import com.sun.tools.javac.util.Options; jjg@1411: import java.util.StringTokenizer; jjg@1411: jjg@1411: jjg@1411: /** jjg@1411: * javadoc tool options. jjg@1411: * jjg@1411: *
This is NOT part of any supported API.
jjg@1411: * If you write code that depends on this, you do so at your own risk.
jjg@1411: * This code and its internal interfaces are subject to change or
jjg@1411: * deletion without notice.
jjg@1411: */
jjg@1411: public enum ToolOption {
jjg@1411: // ----- options for underlying compiler -----
jjg@1411:
jjg@1411: BOOTCLASSPATH("-bootclasspath", true) {
jjg@1411: @Override
jjg@1411: public void process(Helper helper, String arg) {
jjg@1411: helper.setCompilerOpt(opt, arg);
jjg@1411: }
jjg@1411: },
jjg@1411:
jjg@1411: CLASSPATH("-classpath", true) {
jjg@1411: @Override
jjg@1411: public void process(Helper helper, String arg) {
jjg@1411: helper.setCompilerOpt(opt, arg);
jjg@1411: }
jjg@1411: },
jjg@1411:
jjg@1411: EXTDIRS("-extdirs", true) {
jjg@1411: @Override
jjg@1411: public void process(Helper helper, String arg) {
jjg@1411: helper.setCompilerOpt(opt, arg);
jjg@1411: }
jjg@1411: },
jjg@1411:
jjg@1411: SOURCEPATH("-sourcepath", true) {
jjg@1411: @Override
jjg@1411: public void process(Helper helper, String arg) {
jjg@1411: helper.setCompilerOpt(opt, arg);
jjg@1411: }
jjg@1411: },
jjg@1411:
jjg@1411: SYSCLASSPATH("-sysclasspath", true) {
jjg@1411: @Override
jjg@1411: public void process(Helper helper, String arg) {
jjg@1411: helper.setCompilerOpt("-bootclasspath", arg);
jjg@1411: }
jjg@1411: },
jjg@1411:
jjg@1411: ENCODING("-encoding", true) {
jjg@1411: @Override
jjg@1411: public void process(Helper helper, String arg) {
jjg@1411: helper.encoding = arg;
jjg@1411: helper.setCompilerOpt(opt, arg);
jjg@1411: }
jjg@1411: },
jjg@1411:
jjg@1411: SOURCE("-source", true) {
jjg@1411: @Override
jjg@1411: public void process(Helper helper, String arg) {
jjg@1411: helper.setCompilerOpt(opt, arg);
jjg@1411: }
jjg@1411: },
jjg@1411:
jjg@1411: XMAXERRS("-Xmaxerrs", true) {
jjg@1411: @Override
jjg@1411: public void process(Helper helper, String arg) {
jjg@1411: helper.setCompilerOpt(opt, arg);
jjg@1411: }
jjg@1411: },
jjg@1411:
jjg@1411: XMAXWARNS("-Xmaxwarns", true) {
jjg@1411: @Override
jjg@1411: public void process(Helper helper, String arg) {
jjg@1411: helper.setCompilerOpt(opt, arg);
jjg@1411: }
jjg@1411: },
jjg@1411:
jjg@1411: // ----- doclet options -----
jjg@1411:
jjg@1411: DOCLET("-doclet", true), // handled in setDocletInvoker
jjg@1411:
jjg@1411: DOCLETPATH("-docletpath", true), // handled in setDocletInvoker
jjg@1411:
jjg@1411: // ----- selection options -----
jjg@1411:
jjg@1411: SUBPACKAGES("-subpackages", true) {
jjg@1411: @Override
jjg@1411: public void process(Helper helper, String arg) {
jjg@1411: helper.addToList(helper.subPackages, arg);
jjg@1411: }
jjg@1411: },
jjg@1411:
jjg@1411: EXCLUDE("-exclude", true) {
jjg@1411: @Override
jjg@1411: public void process(Helper helper, String arg) {
jjg@1411: helper.addToList(helper.excludedPackages, arg);
jjg@1411: }
jjg@1411: },
jjg@1411:
jjg@1411: // ----- filtering options -----
jjg@1411:
jjg@1411: PACKAGE("-package") {
jjg@1411: @Override
jjg@1411: public void process(Helper helper) {
jjg@1411: helper.setFilter(
jjg@1411: Flags.PUBLIC | Flags.PROTECTED | ModifierFilter.PACKAGE);
jjg@1411: }
jjg@1411: },
jjg@1411:
jjg@1411: PRIVATE("-private") {
jjg@1411: @Override
jjg@1411: public void process(Helper helper) {
jjg@1411: helper.setFilter(ModifierFilter.ALL_ACCESS);
jjg@1411: }
jjg@1411: },
jjg@1411:
jjg@1411: PROTECTED("-protected") {
jjg@1411: @Override
jjg@1411: public void process(Helper helper) {
jjg@1411: helper.setFilter(Flags.PUBLIC | Flags.PROTECTED);
jjg@1411: }
jjg@1411: },
jjg@1411:
jjg@1411: PUBLIC("-public") {
jjg@1411: @Override
jjg@1411: public void process(Helper helper) {
jjg@1411: helper.setFilter(Flags.PUBLIC);
jjg@1411: }
jjg@1411: },
jjg@1411:
jjg@1411: // ----- output control options -----
jjg@1411:
jjg@1411: PROMPT("-prompt") {
jjg@1411: @Override
jjg@1411: public void process(Helper helper) {
jjg@1411: helper.compOpts.put("-prompt", "-prompt");
jjg@1411: helper.promptOnError = true;
jjg@1411: }
jjg@1411: },
jjg@1411:
jjg@1411: QUIET("-quiet") {
jjg@1411: @Override
jjg@1411: public void process(Helper helper) {
jjg@1411: helper.quiet = true;
jjg@1411: }
jjg@1411: },
jjg@1411:
jjg@1411: VERBOSE("-verbose") {
jjg@1411: @Override
jjg@1411: public void process(Helper helper) {
jjg@1411: helper.compOpts.put("-verbose", "");
jjg@1411: }
jjg@1411: },
jjg@1411:
jjg@1411: XWERROR("-Xwerror") {
jjg@1411: @Override
jjg@1411: public void process(Helper helper) {
jjg@1411: helper.rejectWarnings = true;
jjg@1411:
jjg@1411: }
jjg@1411: },
jjg@1411:
jjg@1411: // ----- other options -----
jjg@1411:
jjg@1411: BREAKITERATOR("-breakiterator") {
jjg@1411: @Override
jjg@1411: public void process(Helper helper) {
jjg@1411: helper.breakiterator = true;
jjg@1411: }
jjg@1411: },
jjg@1411:
jjg@1411: LOCALE("-locale", true) {
jjg@1411: @Override
jjg@1411: public void process(Helper helper, String arg) {
jjg@1411: helper.docLocale = arg;
jjg@1411: }
jjg@1411: },
jjg@1411:
jjg@1411: OVERVIEW("-overview", true),
jjg@1411:
jjg@1411: XCLASSES("-Xclasses") {
jjg@1411: @Override
jjg@1411: public void process(Helper helper) {
jjg@1411: helper.docClasses = true;
jjg@1411:
jjg@1411: }
jjg@1411: },
jjg@1411:
jjg@1411: // ----- help options -----
jjg@1411:
jjg@1411: HELP("-help") {
jjg@1411: @Override
jjg@1411: public void process(Helper helper) {
jjg@1411: helper.usage();
jjg@1411: }
jjg@1411: },
jjg@1411:
jjg@1411: X("-X") {
jjg@1411: @Override
jjg@1411: public void process(Helper helper) {
jjg@1411: helper.Xusage();
jjg@1411: }
jjg@1411: };
jjg@1411:
jjg@1411: public final String opt;
jjg@1411: public final boolean hasArg;
jjg@1411:
jjg@1411: ToolOption(String opt) {
jjg@1411: this(opt, false);
jjg@1411: }
jjg@1411:
jjg@1411: ToolOption(String opt, boolean hasArg) {
jjg@1411: this.opt = opt;
jjg@1411: this.hasArg = hasArg;
jjg@1411: }
jjg@1411:
jjg@1411: void process(Helper helper, String arg) { }
jjg@1411:
jjg@1411: void process(Helper helper) { }
jjg@1411:
jjg@1411: static ToolOption get(String name) {
jjg@1411: for (ToolOption o: values()) {
jjg@1411: if (name.equals(o.opt))
jjg@1411: return o;
jjg@1411: }
jjg@1411: return null;
jjg@1411: }
jjg@1411:
jjg@1411: static abstract class Helper {
jjg@1411: /** List of decoded options. */
jjg@1411: final ListBuffer