diff options
author | Tom Tromey <tromey@redhat.com> | 2007-03-06 18:52:33 +0000 |
---|---|---|
committer | Tom Tromey <tromey@redhat.com> | 2007-03-06 18:52:33 +0000 |
commit | 1fe38cedfea27296cb0e4c5285a454fac256cf57 (patch) | |
tree | faf2f44f3ca97075d5a9369bfba0c4f359e3d227 /tools | |
parent | 3b6d0c6c0124df49618bf16225ea8f984f831c78 (diff) | |
download | classpath-1fe38cedfea27296cb0e4c5285a454fac256cf57.tar.gz |
* tools/gnu/classpath/tools/javah/Main.java (getName): New
method.
(getParser): Now protected. Use getName. Add '-v' alias for
--verbose.
(postParse): New method.
(run): Now protected. Use postParse.
* tools/gnu/classpath/tools/javah/GcjhMain.java: New file.
Diffstat (limited to 'tools')
-rw-r--r-- | tools/gnu/classpath/tools/javah/GcjhMain.java | 152 | ||||
-rw-r--r-- | tools/gnu/classpath/tools/javah/Main.java | 21 |
2 files changed, 168 insertions, 5 deletions
diff --git a/tools/gnu/classpath/tools/javah/GcjhMain.java b/tools/gnu/classpath/tools/javah/GcjhMain.java new file mode 100644 index 000000000..7faed1691 --- /dev/null +++ b/tools/gnu/classpath/tools/javah/GcjhMain.java @@ -0,0 +1,152 @@ +/* GcjhMain.java - gcjh main program + Copyright (C) 2007 Free Software Foundation, Inc. + + This file is part of GNU Classpath. + + GNU Classpath is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2, or (at your option) + any later version. + + GNU Classpath is distributed in the hope that it will be useful, but + WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + General Public License for more details. + + You should have received a copy of the GNU General Public License + along with GNU Classpath; see the file COPYING. If not, write to the + Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA + 02110-1301 USA. + + Linking this library statically or dynamically with other modules is + making a combined work based on this library. Thus, the terms and + conditions of the GNU General Public License cover the whole + combination. + + As a special exception, the copyright holders of this library give you + permission to link this library with independent modules to produce an + executable, regardless of the license terms of these independent + modules, and to copy and distribute the resulting executable under + terms of your choice, provided that you also meet, for each linked + independent module, the terms and conditions of the license of that + module. An independent module is a module which is not derived from + or based on this library. If you modify this library, you may extend + this exception to your version of the library, but you are not + obligated to do so. If you do not wish to do so, delete this + exception statement from your version. */ + + +package gnu.classpath.tools.javah; + +import gnu.classpath.tools.getopt.Option; +import gnu.classpath.tools.getopt.OptionException; +import gnu.classpath.tools.getopt.OptionGroup; +import gnu.classpath.tools.getopt.Parser; + +import java.io.IOException; +import java.util.ArrayList; + +public class GcjhMain extends Main +{ + ArrayList commands = new ArrayList(); + + public GcjhMain() + { + cni = true; + } + + protected String getName() + { + return "gcjh"; + } + + protected Parser getParser() + { + Parser result = super.getParser(); + + result.setHeader("usage: gcjh [OPTION]... CLASS..."); + + OptionGroup text = new OptionGroup("CNI text options"); + text.add(new Option("add", "Insert TEXT into class body", "TEXT") + { + public void parsed(String arg) throws OptionException + { + commands.add(new Text(Text.ADD, arg)); + } + }); + text.add(new Option("append", "Append TEXT after class declaration", + "TEXT") + { + public void parsed(String arg) throws OptionException + { + commands.add(new Text(Text.APPEND, arg)); + } + }); + text.add(new Option("friend", "Insert TEXT as a 'friend' declaration", + "TEXT") + { + public void parsed(String arg) throws OptionException + { + commands.add(new Text(Text.FRIEND, arg)); + } + }); + text.add(new Option("prepend", "Insert TEXT before start of class", "TEXT") + { + public void parsed(String arg) throws OptionException + { + commands.add(new Text(Text.PREPEND, arg)); + } + }); + result.add(text); + + OptionGroup compat = new OptionGroup("Compatibility options (unused)"); + // gcjh itself had compatibility options -old and -trace. I + // didn't add them here since they should really be unused by now. + compat.add(new Option("td", "Unused compatibility option", "DIRECTORY") + { + public void parsed(String arg) throws OptionException + { + } + }); + // I don't believe anyone ever used these options. + compat.add(new Option("M", "Unused compatibility option") + { + public void parsed(String arg) throws OptionException + { + } + }); + compat.add(new Option("MM", "Unused compatibility option") + { + public void parsed(String arg) throws OptionException + { + } + }); + compat.add(new Option("MD", "Unused compatibility option") + { + public void parsed(String arg) throws OptionException + { + } + }); + compat.add(new Option("MMD", "Unused compatibility option") + { + public void parsed(String arg) throws OptionException + { + } + }); + + result.add(compat); + + return result; + } + + protected void postParse(String[] names) + { + for (int i = 0; i < names.length; ++i) + textMap.put(names[i].replace('.', '/'), commands); + } + + public static void main(String[] args) throws IOException + { + new GcjhMain().run(args); + } +} diff --git a/tools/gnu/classpath/tools/javah/Main.java b/tools/gnu/classpath/tools/javah/Main.java index 2cddbaae7..729af476a 100644 --- a/tools/gnu/classpath/tools/javah/Main.java +++ b/tools/gnu/classpath/tools/javah/Main.java @@ -1,5 +1,5 @@ /* Main.java - javah main program - Copyright (C) 2006 Free Software Foundation, Inc. + Copyright (C) 2006, 2007 Free Software Foundation, Inc. This file is part of GNU Classpath. @@ -179,9 +179,14 @@ public class Main results.addAll(Arrays.asList(files)); } - private Parser getParser() + protected String getName() { - ClasspathToolParser result = new ClasspathToolParser("javah", true); + return "javah"; + } + + protected Parser getParser() + { + ClasspathToolParser result = new ClasspathToolParser(getName(), true); result.setHeader("usage: javah [OPTIONS] CLASS..."); result.add(classpath); result.add(new Option('d', "Set output directory", "DIR") @@ -249,7 +254,7 @@ public class Main cni = true; } }); - result.add(new Option("verbose", "Set verbose mode") + result.add(new Option('v', "verbose", "Set verbose mode") { public void parsed(String arg0) throws OptionException { @@ -317,10 +322,16 @@ public class Main } } - private void run(String[] args) throws IOException + protected void postParse(String[] names) + { + // Nothing here. + } + + protected void run(String[] args) throws IOException { Parser p = getParser(); String[] classNames = p.parse(args); + postParse(classNames); loader = classpath.getLoader(); boolean isDirectory = outFileName == null; |