home *** CD-ROM | disk | FTP | other *** search
- package sun.tools.javadoc;
-
- import java.io.BufferedWriter;
- import java.io.File;
- import java.io.FileOutputStream;
- import java.io.IOException;
- import java.io.OutputStreamWriter;
- import java.io.PrintWriter;
- import java.lang.reflect.Modifier;
- import java.util.Enumeration;
- import java.util.Hashtable;
- import java.util.StringTokenizer;
- import java.util.Vector;
- import sun.tools.java.ClassDeclaration;
- import sun.tools.java.ClassDefinition;
- import sun.tools.java.ClassNotFound;
- import sun.tools.java.Constants;
- import sun.tools.java.Environment;
- import sun.tools.java.FieldDefinition;
- import sun.tools.java.Identifier;
- import sun.tools.java.Type;
- import sun.tools.javac.BatchEnvironment;
- import sun.tools.javac.SourceClass;
-
- abstract class DocumentationGenerator implements Constants {
- BatchEnvironment env;
- Hashtable classesToDocument;
- static String encoding;
- private static final Identifier idIOException = Identifier.lookup("java.io.IOException");
- static ClassDeclaration exDecl;
- static ClassDeclaration errorDecl;
-
- public void init(Vector var1, String var2) {
- encoding = var2;
- this.env = Main.env;
- this.classesToDocument = new Hashtable(var1.size() * 2 + 1);
- Enumeration var3 = var1.elements();
-
- while(var3.hasMoreElements()) {
- ClassDeclaration var4 = (ClassDeclaration)var3.nextElement();
- this.classesToDocument.put(var4, var4);
- }
-
- }
-
- public ClassDeclaration getClassDeclaration(ClassDefinition var1, Identifier var2) {
- Object var3;
- if (var1 instanceof SourceClass) {
- SourceClass var4 = (SourceClass)var1;
- var3 = var4.getImports().newEnvironment(this.env);
- } else {
- var3 = this.env;
- }
-
- Identifier var5 = var1.resolveName((Environment)var3, var2);
- return this.env.getClassDeclaration(var5);
- }
-
- public ClassDefinition getClassDefinition(ClassDeclaration var1) throws ClassNotFound {
- if (var1.getName().isInner()) {
- throw new ClassNotFound(var1.getName());
- } else {
- ClassDefinition var2 = var1.getClassDefinition(this.env);
- var2.resolveTypeStructure(this.env);
- return var2;
- }
- }
-
- public String getReferenceName(Identifier var1) {
- var1 = Identifier.lookup(var1.getQualifier(), var1.getFlatName());
- return var1.toString();
- }
-
- public static String getReferenceName(FieldDefinition var0) {
- if (var0.isConstructor()) {
- Identifier var1 = var0.getClassDeclaration().getName();
- var1 = var1.getFlatName();
- return var1.getName().toString();
- } else {
- return var0.getName().toString();
- }
- }
-
- boolean shouldDocument(ClassDeclaration var1) {
- return this.classesToDocument.containsKey(var1);
- }
-
- boolean shouldDocument(ClassDefinition var1) {
- return this.shouldDocument(var1.getClassDeclaration());
- }
-
- static boolean shouldDocument(FieldDefinition var0) {
- return var0.isSynthetic() ? false : Main.showAccess.checkField(var0);
- }
-
- static Vector allVariables(ClassDefinition var0) {
- Vector var1 = new Vector();
-
- for(FieldDefinition var2 = var0.getFirstField(); var2 != null; var2 = var2.getNextField()) {
- if (var2.isVariable() && shouldDocument(var2)) {
- var1.addElement(var2);
- }
- }
-
- return var1;
- }
-
- static Vector allConstructors(ClassDefinition var0) {
- Vector var1 = new Vector();
-
- for(FieldDefinition var2 = var0.getFirstField(); var2 != null; var2 = var2.getNextField()) {
- if (var2.isConstructor() && shouldDocument(var2)) {
- var1.addElement(var2);
- }
- }
-
- return var1;
- }
-
- static Vector allMethods(ClassDefinition var0) {
- Vector var1 = new Vector();
-
- for(FieldDefinition var2 = var0.getFirstField(); var2 != null; var2 = var2.getNextField()) {
- if (var2.isMethod() && !var2.isConstructor() && shouldDocument(var2)) {
- var1.addElement(var2);
- }
- }
-
- return var1;
- }
-
- static Vector localFieldsOf(ClassDefinition var0, Vector var1) {
- Vector var2 = new Vector();
- Enumeration var3 = var1.elements();
-
- while(var3.hasMoreElements()) {
- FieldDefinition var4 = (FieldDefinition)var3.nextElement();
- if (var4.getClassDefinition().equals(var0) && var4.getClassDeclaration() == var4.getDefiningClassDeclaration()) {
- var2.addElement(var4);
- }
- }
-
- return var2;
- }
-
- Vector superclassesOf(ClassDeclaration var1) {
- if (var1 == null) {
- return new Vector();
- } else {
- try {
- ClassDeclaration var2 = this.getClassDefinition(var1).getSuperClass();
- Vector var3 = this.superclassesOf(var2);
- var3.addElement(var1);
- return var3;
- } catch (ClassNotFound var4) {
- System.out.println(Main.getText("doc.Warning_superclass_info", var1.getName().toString()));
- return new Vector();
- }
- }
- }
-
- static Vector mergeDoc(String var0) {
- Vector var1 = new Vector();
- StringTokenizer var2 = new StringTokenizer(var0, "\n");
-
- while(var2.hasMoreTokens()) {
- String var3 = var2.nextToken();
- String var4 = var3.trim();
- if (var4.length() != 0) {
- if (var4.charAt(0) == '@') {
- var1.addElement(var4);
- } else if (var1.size() == 0) {
- var1.addElement("@comment " + var3);
- } else {
- int var5 = var1.size() - 1;
- var1.setElementAt(var1.elementAt(var5) + "\n" + var3, var5);
- }
- }
- }
-
- return var1;
- }
-
- abstract String commentString(String var1);
-
- abstract String returnString(String var1);
-
- abstract String versionString(String var1);
-
- abstract String authorString(String var1);
-
- String deprecatedString(String var1) {
- return var1;
- }
-
- String getComment(Vector var1) {
- Enumeration var2 = var1.elements();
-
- while(var2.hasMoreElements()) {
- String var3 = (String)var2.nextElement();
- if (var3.startsWith("@comment")) {
- return this.commentString(var3.substring(8).trim());
- }
- }
-
- return null;
- }
-
- String getReturn(Vector var1) {
- String var2 = null;
- Enumeration var3 = var1.elements();
-
- while(var3.hasMoreElements()) {
- String var4 = (String)var3.nextElement();
- if (var4.startsWith("@return")) {
- var4 = var4.substring(7).trim();
- if (var4.length() == 0) {
- System.out.println(Main.getText("doc.Warning_Empty_statement", "@return"));
- } else if (var2 == null) {
- var2 = this.returnString(var4);
- } else {
- System.out.println(Main.getText("doc.Warning_Multiple_statements", "@return"));
- }
- }
- }
-
- return var2;
- }
-
- String getVersion(Vector var1) {
- if (!Main.showVersion) {
- return null;
- } else {
- String var2 = null;
- Enumeration var3 = var1.elements();
-
- while(var3.hasMoreElements()) {
- String var4 = (String)var3.nextElement();
- if (var4.startsWith("@version")) {
- var4 = var4.substring(8).trim();
- if (var4.length() == 0) {
- System.out.println(Main.getText("doc.Warning_Empty_statement", "@version"));
- } else if (var2 == null) {
- var2 = this.versionString(var4);
- } else {
- System.out.println(Main.getText("doc.Warning_Multiple_statements", "@version"));
- }
- }
- }
-
- return var2;
- }
- }
-
- String getDeprecated(Vector var1) {
- if (!Main.showDeprecated) {
- return null;
- } else {
- String var2 = null;
- Enumeration var3 = var1.elements();
-
- while(var3.hasMoreElements()) {
- String var4 = (String)var3.nextElement();
- if (var4.startsWith("@deprecated")) {
- var4 = var4.substring(11).trim();
- if (var2 == null) {
- var2 = this.deprecatedString(var4);
- } else {
- System.out.println(Main.getText("doc.Warning_Multiple_statements", "@deprecated"));
- }
- }
- }
-
- return var2;
- }
- }
-
- Vector getSees(Vector var1, ClassDeclaration var2) {
- Vector var3 = null;
- Enumeration var4 = var1.elements();
-
- while(var4.hasMoreElements()) {
- String var5 = (String)var4.nextElement();
- if (var5.startsWith("@see")) {
- var5 = var5.substring(4).trim();
- if (var5.length() == 0) {
- System.out.println(Main.getText("doc.Warning_Empty_statement", "@see"));
- } else {
- if (var3 == null) {
- var3 = new Vector();
- }
-
- this.parseSeeString(var5, var2, var3);
- }
- }
- }
-
- return var3;
- }
-
- String getAuthors(Vector var1) {
- if (!Main.showAuthors) {
- return null;
- } else {
- String var2 = null;
- Enumeration var3 = var1.elements();
-
- while(var3.hasMoreElements()) {
- String var4 = (String)var3.nextElement();
- if (var4.startsWith("@author")) {
- var4 = var4.substring(7).trim();
- if (var4.length() == 0) {
- System.out.println(Main.getText("doc.Warning_Empty_statement", "@author"));
- } else if (var2 == null) {
- var2 = this.authorString(var4);
- } else {
- var2 = var2 + ", " + this.authorString(var4);
- }
- }
- }
-
- return var2;
- }
- }
-
- static Vector getParameters(Vector var0) {
- Vector var1 = null;
- Enumeration var2 = var0.elements();
-
- while(var2.hasMoreElements()) {
- String var3 = (String)var2.nextElement();
- if (var3.startsWith("@param")) {
- int var4 = 0;
-
- for(var3 = var3.substring(6).trim(); var4 < var3.length() && var3.charAt(var4) != ' ' && var3.charAt(var4) != '\t'; ++var4) {
- }
-
- if (var4 < var3.length()) {
- if (var1 == null) {
- var1 = new Vector();
- }
-
- var1.addElement(var3.substring(0, var4));
- var1.addElement(var3.substring(var4).trim());
- } else {
- System.out.println(Main.getText("doc.Warning_Empty_statement", "@param"));
- }
- }
- }
-
- return var1;
- }
-
- Vector getThrows(Vector var1, FieldDefinition var2) {
- Vector var3 = new Vector();
- Enumeration var4 = var1.elements();
-
- while(var4.hasMoreElements()) {
- String var5 = (String)var4.nextElement();
- if (var5.startsWith("@exception")) {
- int var6 = 0;
-
- for(var5 = var5.substring(10).trim(); var6 < var5.length() && var5.charAt(var6) != ' ' && var5.charAt(var6) != '\t' && var5.charAt(var6) != '\n'; ++var6) {
- }
-
- if (var6 >= var5.length()) {
- System.out.println(Main.getText("doc.Warning_Empty_statement", "@exception"));
- } else {
- Identifier var7 = Identifier.lookup(var5.substring(0, var6));
- ClassDeclaration var8 = this.getClassDeclaration(var2.getClassDefinition(), var7);
- var3.addElement(var8);
- var3.addElement(var5.substring(var6).trim());
- }
- }
- }
-
- ClassDeclaration var17 = this.env.getClassDeclaration(Constants.idJavaLangError);
- ClassDeclaration var18 = this.env.getClassDeclaration(Constants.idJavaLangRuntimeException);
- ClassDeclaration var19 = this.env.getClassDeclaration(idIOException);
- ClassDeclaration[] var20 = var2.getExceptions(this.env);
-
- label91:
- for(int var9 = 0; var9 < var20.length; ++var9) {
- ClassDeclaration var10 = var20[var9];
-
- try {
- ClassDefinition var11 = this.getClassDefinition(var10);
- if (!var11.subClassOf(this.env, var17) && !var11.subClassOf(this.env, var18) && !var11.subClassOf(this.env, var19)) {
- for(int var12 = 0; var12 < var3.size(); var12 += 2) {
- if (var11.subClassOf(this.env, (ClassDeclaration)var3.elementAt(var12))) {
- continue label91;
- }
- }
-
- System.out.println(Main.getText("doc.Method_there_is_no_exception", var2.toString(), var11.toString(), "@exception"));
- }
- } catch (ClassNotFound var15) {
- System.out.println(Main.getText("doc.Could_not_find", var15.name.toString()));
- }
- }
-
- label72:
- for(int var21 = 0; var21 < var3.size(); var21 += 2) {
- ClassDeclaration var22 = (ClassDeclaration)var3.elementAt(var21);
-
- try {
- ClassDefinition var23 = this.getClassDefinition(var22);
- if (!var23.subClassOf(this.env, var17) && !var23.subClassOf(this.env, var18) && !var23.subClassOf(this.env, var19)) {
- for(int var13 = 0; var13 < var20.length; ++var13) {
- if (var23.subClassOf(this.env, var20[var13])) {
- continue label72;
- }
- }
-
- System.out.println(Main.getText("doc.Method_Throw_does_not_declare", var2.toString(), var22.toString()));
- }
- } catch (ClassNotFound var14) {
- System.out.println(Main.getText("doc.Could_not_find", var14.name.toString()));
- }
- }
-
- if (var3.size() == 0) {
- return null;
- } else {
- return var3;
- }
- }
-
- FieldDefinition getOverride(FieldDefinition var1) {
- FieldDefinition var2 = null;
-
- try {
- if (!var1.isStatic() && !var1.isConstructor() && var1.getClassDefinition().getSuperClass() != null) {
- var2 = this.getClassDefinition(var1.getClassDefinition().getSuperClass()).findMethod(this.env, var1.getName(), var1.getType());
- }
- } catch (ClassNotFound var3) {
- var2 = null;
- }
-
- return var2;
- }
-
- boolean isException(ClassDeclaration var1) {
- if (exDecl == null) {
- Identifier var2 = Identifier.lookup("java.lang.Exception");
- exDecl = this.env.getClassDeclaration(var2);
- }
-
- try {
- return this.getClassDefinition(var1).subClassOf(this.env, exDecl);
- } catch (ClassNotFound var3) {
- System.out.println(Main.getText("doc.Warning_Could_not_find_class_info", exDecl.getName().toString()));
- return false;
- }
- }
-
- boolean isError(ClassDeclaration var1) {
- if (errorDecl == null) {
- Identifier var2 = Identifier.lookup("java.lang.Error");
- errorDecl = this.env.getClassDeclaration(var2);
- }
-
- try {
- return this.getClassDefinition(var1).subClassOf(this.env, errorDecl);
- } catch (ClassNotFound var3) {
- System.out.println(Main.getText("doc.Warning_Could_not_find_class_info", errorDecl.getName().toString()));
- return false;
- }
- }
-
- static PrintWriter openFile(String var0) {
- if (Main.destDir != null) {
- var0 = Main.destDir.getPath() + File.separator + var0;
- }
-
- OutputStreamWriter var2;
- try {
- FileOutputStream var6 = new FileOutputStream(var0);
- if (encoding == null) {
- var2 = new OutputStreamWriter(var6);
- } else {
- var2 = new OutputStreamWriter(var6, encoding);
- }
- } catch (IOException var5) {
- try {
- String var3 = (new File(var0)).getParent();
- if (var3 == null) {
- throw new IOException();
- }
-
- (new File(var3)).mkdirs();
- FileOutputStream var1 = new FileOutputStream(var0);
- if (encoding == null) {
- var2 = new OutputStreamWriter(var1);
- } else {
- var2 = new OutputStreamWriter(var1, encoding);
- }
- } catch (IOException var4) {
- throw new Error(Main.getText("doc.Can_not_open_output_file"));
- }
- }
-
- return new PrintWriter(new BufferedWriter(var2));
- }
-
- String firstSentence(ClassDefinition var1) {
- return this.firstSentence(var1.getDocumentation());
- }
-
- String firstSentence(FieldDefinition var1) {
- return this.firstSentence(this.getDocumentation(var1));
- }
-
- private String firstSentence(String var1) {
- if (var1 == null) {
- return "";
- } else {
- int var2 = var1.length();
- boolean var3 = false;
-
- for(int var4 = 0; var4 < var2; ++var4) {
- switch (var1.charAt(var4)) {
- case '\t':
- case '\n':
- case ' ':
- if (var3) {
- return var1.substring(0, var4);
- }
- break;
- case '.':
- var3 = true;
- break;
- case '@':
- return var1.substring(0, var4);
- default:
- var3 = false;
- }
- }
-
- return var1;
- }
- }
-
- String getDocumentation(FieldDefinition var1) {
- String var2 = var1.getDocumentation();
- if (var2 == null && !var1.isVariable() && !var1.isConstructor()) {
- while(var1 != null && var2 == null) {
- ClassDeclaration var3 = var1.getClassDefinition().getSuperClass();
- if (var3 == null) {
- break;
- }
-
- try {
- var1 = this.getClassDefinition(var3).findMethod(this.env, var1.getName(), var1.getType());
- } catch (ClassNotFound var4) {
- System.out.println(Main.getText("doc.Warning_Could_not_find_class_info", var3.getName().toString()));
- var1 = null;
- }
-
- if (var1 != null) {
- var2 = var1.getDocumentation();
- }
- }
-
- return var2 != null ? this.firstSentence(var2) : null;
- } else {
- return var2;
- }
- }
-
- String typeString(Type var1) {
- switch (var1.getTypeCode()) {
- case 0:
- return "boolean";
- case 1:
- return "byte";
- case 2:
- return "char";
- case 3:
- return "short";
- case 4:
- return "int";
- case 5:
- return "long";
- case 6:
- return "float";
- case 7:
- return "double";
- case 8:
- default:
- return "error";
- case 9:
- return this.typeString(var1.getElementType());
- case 10:
- return this.classString(this.env.getClassDeclaration(var1));
- case 11:
- return "void";
- }
- }
-
- String typeArrayString(Type var1) {
- String var2;
- for(var2 = ""; var1.getTypeCode() == 9; var1 = var1.getElementType()) {
- var2 = var2 + "[]";
- }
-
- return var2;
- }
-
- static String modString(FieldDefinition var0) {
- return modString(var0, true);
- }
-
- static String modString(FieldDefinition var0, boolean var1) {
- int var2 = var0.getModifiers();
- if (!var1) {
- var2 &= -33;
- }
-
- String var3 = Modifier.toString(var2);
- return var3.length() > 0 ? " " + var3 : "";
- }
-
- private static int compare(ClassDeclaration var0, ClassDeclaration var1) {
- Identifier var2 = var0.getName();
- Identifier var3 = var1.getName();
- int var4 = var2.getName().toString().compareTo(var3.getName().toString());
- return var4 == 0 ? var2.getQualifier().toString().compareTo(var3.getQualifier().toString()) : var4;
- }
-
- static void sort(ClassDeclaration[] var0) {
- boolean var1;
- do {
- var1 = true;
-
- for(int var2 = var0.length - 1; var2 > 0; --var2) {
- if (compare(var0[var2 - 1], var0[var2]) > 0) {
- ClassDeclaration var3 = var0[var2];
- var0[var2] = var0[var2 - 1];
- var0[var2 - 1] = var3;
- var1 = false;
- }
- }
- } while(!var1);
-
- }
-
- void genPackagesDocumentation(Vector var1) {
- Vector var2 = new Vector();
- Vector var3 = new Vector();
- Enumeration var4 = var1.elements();
-
- while(var4.hasMoreElements()) {
- String var5 = (String)var4.nextElement();
- (var5.startsWith("java.") ? var2 : var3).addElement(var5);
- }
-
- String[] var7 = null;
- String[] var6 = null;
- if (var2.size() > 0) {
- var7 = new String[var2.size()];
- var2.copyInto(var7);
- sort(var7);
- }
-
- if (var3.size() > 0) {
- var6 = new String[var3.size()];
- var3.copyInto(var6);
- sort(var6);
- }
-
- this.genPackagesDocumentation(var7, var6);
- }
-
- abstract void genPackagesDocumentation(String[] var1, String[] var2);
-
- private Vector collectClasses() {
- Vector var1 = new Vector();
- Enumeration var2 = this.env.getClasses();
-
- while(var2.hasMoreElements()) {
- var1.addElement(var2.nextElement());
- }
-
- return var1;
- }
-
- void genPackageDocumentation(Identifier var1) {
- boolean var2;
- do {
- var2 = false;
- Enumeration var3 = this.collectClasses().elements();
-
- while(var3.hasMoreElements()) {
- ClassDeclaration var4 = (ClassDeclaration)var3.nextElement();
- if (!var4.isDefined()) {
- try {
- this.getClassDefinition(var4);
- var2 = true;
- } catch (ClassNotFound var17) {
- }
- }
- }
- } while(var2);
-
- Vector var18 = this.collectClasses();
- int var20 = 0;
- int var21 = 0;
- int var5 = 0;
- int var6 = 0;
- Enumeration var7 = var18.elements();
-
- while(var7.hasMoreElements()) {
- ClassDeclaration var8 = (ClassDeclaration)var7.nextElement();
-
- try {
- ClassDefinition var9 = this.getClassDefinition(var8);
- if (this.shouldDocument(var8) && var8.getName().getQualifier().equals(var1)) {
- if (var9.isInterface()) {
- ++var20;
- } else if (this.isException(var8)) {
- ++var5;
- } else if (this.isError(var8)) {
- ++var6;
- } else {
- ++var21;
- }
- }
- } catch (ClassNotFound var16) {
- }
- }
-
- ClassDeclaration[] var22 = new ClassDeclaration[var20];
- ClassDeclaration[] var23 = new ClassDeclaration[var21];
- ClassDeclaration[] var10 = new ClassDeclaration[var5];
- ClassDeclaration[] var11 = new ClassDeclaration[var6];
- Enumeration var12 = var18.elements();
-
- while(var12.hasMoreElements()) {
- ClassDeclaration var13 = (ClassDeclaration)var12.nextElement();
-
- try {
- ClassDefinition var14 = this.getClassDefinition(var13);
- if (this.shouldDocument(var13) && var13.getName().getQualifier().equals(var1)) {
- if (var14.isInterface()) {
- --var20;
- var22[var20] = var13;
- } else if (this.isException(var13)) {
- --var5;
- var10[var5] = var13;
- } else if (this.isError(var13)) {
- --var6;
- var11[var6] = var13;
- } else {
- --var21;
- var23[var21] = var13;
- }
- }
- } catch (ClassNotFound var15) {
- }
- }
-
- Object var19 = null;
- this.genPackageDocumentation(var1, var22, var23, var10, var11);
- }
-
- abstract void genPackageDocumentation(Identifier var1, ClassDeclaration[] var2, ClassDeclaration[] var3, ClassDeclaration[] var4, ClassDeclaration[] var5);
-
- abstract void genClassDocumentation(ClassDeclaration var1, ClassDeclaration var2, ClassDeclaration var3);
-
- abstract String classString(ClassDeclaration var1);
-
- static void sort(FieldDefinition[] var0) {
- xsort(var0);
- }
-
- static void sort(String[] var0) {
- boolean var1;
- do {
- var1 = true;
-
- for(int var2 = var0.length - 1; var2 > 0; --var2) {
- if (var0[var2 - 1].compareTo(var0[var2]) > 0) {
- String var3 = var0[var2];
- var0[var2] = var0[var2 - 1];
- var0[var2 - 1] = var3;
- var1 = false;
- }
- }
- } while(!var1);
-
- }
-
- static String sortKey(FieldDefinition var0) {
- ClassDefinition var1 = var0.getClassDefinition();
- String var2 = (var1.getName().getName() + "." + var1.getName().getQualifier()).toLowerCase();
- if (var0.isVariable()) {
- return var0.getName().toString().toLowerCase() + " " + var2;
- } else {
- String var3 = getReferenceName(var0);
- Type var4 = var0.getType();
- return var4.typeString(var3, true, false).toLowerCase() + var2;
- }
- }
-
- static void xsort(FieldDefinition[] var0, String[] var1) {
- xsort(var0, var1, 0, var0.length - 1);
- }
-
- static void xsort(FieldDefinition[] var0) {
- String[] var1 = new String[var0.length];
- int var2 = var0.length;
-
- while(true) {
- --var2;
- if (var2 < 0) {
- xsort(var0, var1, 0, var0.length - 1);
- return;
- }
-
- var1[var2] = sortKey(var0[var2]);
- }
- }
-
- private static void xsort(FieldDefinition[] var0, String[] var1, int var2, int var3) {
- if (var2 < var3) {
- String var4 = var1[var2];
- int var5 = var2;
- int var6 = var3;
-
- while(var5 < var6) {
- while(var5 <= var3 && var1[var5].compareTo(var4) <= 0) {
- ++var5;
- }
-
- while(var6 >= var2 && var1[var6].compareTo(var4) > 0) {
- --var6;
- }
-
- if (var5 < var6) {
- FieldDefinition var7 = var0[var5];
- String var8 = var1[var5];
- var0[var5] = var0[var6];
- var0[var6] = var7;
- var1[var5] = var1[var6];
- var1[var6] = var8;
- }
- }
-
- FieldDefinition var10 = var0[var2];
- String var9 = var1[var2];
- var0[var2] = var0[var6];
- var0[var6] = var10;
- var1[var2] = var1[var6];
- var1[var6] = var9;
- xsort(var0, var1, var2, var6 - 1);
- xsort(var0, var1, var6 + 1, var3);
- }
- }
-
- Hashtable createClassTree() {
- Hashtable var1 = new Hashtable();
- Enumeration var2 = this.env.getClasses();
-
- while(var2.hasMoreElements()) {
- ClassDeclaration var3 = (ClassDeclaration)var2.nextElement();
- if (this.shouldDocument(var3)) {
- this.genClassTree(var3, var1);
- }
- }
-
- Enumeration var7 = var1.keys();
-
- while(var7.hasMoreElements()) {
- ClassDeclaration var4 = (ClassDeclaration)var7.nextElement();
- Vector var5 = (Vector)var1.get(var4);
- if (var5.size() > 0) {
- ClassDeclaration[] var6 = new ClassDeclaration[var5.size()];
- var5.copyInto(var6);
- sort(var6);
- var1.put(var4, var6);
- } else {
- var1.remove(var4);
- }
- }
-
- return var1;
- }
-
- private Vector genClassTree(ClassDeclaration var1, Hashtable var2) {
- Vector var3 = (Vector)var2.get(var1);
- if (var3 != null) {
- return var3;
- } else {
- var3 = new Vector();
- var2.put(var1, var3);
-
- try {
- ClassDeclaration var4 = this.getClassDefinition(var1).getSuperClass();
- if (var4 != null) {
- Vector var5 = this.genClassTree(var4, var2);
- var5.addElement(var1);
- }
- } catch (ClassNotFound var6) {
- }
-
- return var3;
- }
- }
-
- abstract void genFieldIndex();
-
- void genClassTree() {
- this.genClassTree(this.createClassTree(), this.env.getClassDeclaration(Type.tObject.getClassName()));
- }
-
- abstract void genClassTree(Hashtable var1, ClassDeclaration var2);
-
- void parseSeeString(String var1, ClassDeclaration var2, Vector var3) {
- var1 = var1.trim();
- int var7 = 0;
-
- for(int var8 = 0; var8 < var1.length(); ++var8) {
- char var9 = var1.charAt(var8);
- switch (var9) {
- case '\t':
- case ' ':
- case ',':
- if (var7 <= 0) {
- System.out.println(Main.getText("doc.see_warning_extraneous_text", var1));
- var1 = var1.substring(0, var8);
- }
- break;
- case '(':
- ++var7;
- break;
- case ')':
- --var7;
- }
- }
-
- int var17 = var1.indexOf(35);
- String var5;
- String var6;
- if (var17 >= 0) {
- var6 = var1.substring(var17 + 1);
- var5 = var1.substring(0, var17);
- } else if (var1.indexOf(40) >= 0) {
- System.out.println(Main.getText("doc.see_warning_missing_sharp", var1));
- var6 = var1;
- var5 = "";
- } else {
- var6 = null;
- var5 = var1;
- }
-
- ClassDeclaration var4;
- if (var5.length() > 0) {
- Identifier var10 = Identifier.lookup(var5);
-
- try {
- ClassDefinition var11 = this.getClassDefinition(var2);
- var4 = this.getClassDeclaration(var11, var10);
- if (var4.getName().isInner() && var6 == null) {
- int var12 = var5.lastIndexOf(46);
- if (var12 >= 0) {
- String var13 = new String(var5);
- var6 = var5.substring(var12 + 1);
- var5 = var5.substring(0, var12);
- System.out.print(Main.getText("doc.see_warning_Treating_reference", var13, var5, var6));
- var10 = Identifier.lookup(var5);
- var4 = this.getClassDeclaration(var11, var10);
- }
- }
- } catch (ClassNotFound var15) {
- var4 = this.env.getClassDeclaration(Identifier.lookup(var5));
- }
- } else {
- var4 = var2;
- }
-
- if (var6 == null) {
- var3.addElement(var4);
- var3.addElement((Object)null);
- var3.addElement((Object)null);
- } else {
- var17 = var6.indexOf(40);
- String var20 = var17 >= 0 ? var6.substring(0, var17) : var6;
- Identifier var21 = Identifier.lookup(var20);
-
- try {
- if (!var20.equals(var5)) {
- FieldDefinition var22 = this.findVisibleField(var4, this.env, var21, var17 > 0);
- if (var22 == null) {
- System.out.println(Main.getText("doc.see_warning_Can_not_find_field", var20, var4.toString()));
- } else if (var22.getClassDeclaration() != var4) {
- System.out.println(Main.getText("doc.see_warning_Found_in_parent", var20, var22.getClassDeclaration().toString(), var4.toString()));
- var4 = var22.getClassDeclaration();
- }
- }
- } catch (ClassNotFound var14) {
- System.out.println(Main.getText("doc.see_warning_Can_not_find", var4.toString()));
- }
-
- var3.addElement(var4);
- var3.addElement(var20);
- var3.addElement(var6);
- }
- }
-
- FieldDefinition findVisibleField(ClassDeclaration var1, Environment var2, Identifier var3, boolean var4) throws ClassNotFound {
- ClassDefinition var5 = this.getClassDefinition(var1);
-
- for(FieldDefinition var6 = var5.getFirstMatch(var3); var6 != null; var6 = var6.getNextMatch()) {
- if (shouldDocument(var6) && (!var4 || var6.isMethod())) {
- return var6;
- }
- }
-
- ClassDeclaration var7 = var5.getSuperClass();
- if (var7 == null) {
- return null;
- } else {
- return this.findVisibleField(var7, var2, var3, var4);
- }
- }
- }
-