package org.apache.bcel.util; import java.io.Closeable; import java.io.FileNotFoundException; import java.io.PrintWriter; import java.io.UnsupportedEncodingException; import java.nio.charset.Charset; import org.apache.bcel.Const; import org.apache.bcel.classfile.Attribute; import org.apache.bcel.classfile.Code; import org.apache.bcel.classfile.CodeException; import org.apache.bcel.classfile.ConstantPool; import org.apache.bcel.classfile.ConstantValue; import org.apache.bcel.classfile.ExceptionTable; import org.apache.bcel.classfile.InnerClass; import org.apache.bcel.classfile.InnerClasses; import org.apache.bcel.classfile.LineNumber; import org.apache.bcel.classfile.LineNumberTable; import org.apache.bcel.classfile.LocalVariableTable; import org.apache.bcel.classfile.SourceFile; import org.apache.bcel.classfile.Utility; /* loaded from: org_apache_bcel_util.jar:org/apache/bcel/util/AttributeHTML.class */ final class AttributeHTML implements Closeable { private final String className; private final PrintWriter printWriter; private int attrCount; private final ConstantHTML constantHtml; private final ConstantPool constantPool; /* JADX INFO: Access modifiers changed from: package-private */ public AttributeHTML(String dir, String className, ConstantPool constantPool, ConstantHTML constantHtml, Charset charset) throws FileNotFoundException, UnsupportedEncodingException { this.className = className; this.constantPool = constantPool; this.constantHtml = constantHtml; this.printWriter = new PrintWriter(dir + className + "_attributes.html", charset.name()); this.printWriter.print(""); this.printWriter.println(""); } @Override // java.io.Closeable, java.lang.AutoCloseable public void close() { this.printWriter.println("
"); this.printWriter.close(); } private String codeLink(int link, int methodNumber) { return "" + link + ""; } /* JADX INFO: Access modifiers changed from: package-private */ public void writeAttribute(Attribute attribute, String anchor) { writeAttribute(attribute, anchor, 0); } /* JADX INFO: Access modifiers changed from: package-private */ public void writeAttribute(Attribute attribute, String anchor, int methodNumber) { String str; byte tag = attribute.getTag(); if (tag == -1) { return; } this.attrCount++; if (this.attrCount % 2 == 0) { this.printWriter.print(""); } else { this.printWriter.print(""); } this.printWriter.println("

" + this.attrCount + " " + Const.getAttributeName(tag) + "

"); switch (tag) { case 0: int index = ((SourceFile) attribute).getSourceFileIndex(); this.printWriter.print("\n"); break; case 1: int index2 = ((ConstantValue) attribute).getConstantValueIndex(); this.printWriter.print("\n"); break; case 2: Code c = (Code) attribute; this.printWriter.print("\n"); CodeException[] ce = c.getExceptionTable(); int len = ce.length; if (len > 0) { this.printWriter.print("

Exceptions handled

"); break; } break; case 3: int[] indices = ((ExceptionTable) attribute).getExceptionIndexTable(); this.printWriter.print("\n"); break; case 4: LineNumber[] lineNumbers = ((LineNumberTable) attribute).getLineNumberTable(); this.printWriter.print("

"); for (int i = 0; i < lineNumbers.length; i++) { this.printWriter.print("(" + lineNumbers[i].getStartPC() + ", " + lineNumbers[i].getLineNumber() + ")"); if (i < lineNumbers.length - 1) { this.printWriter.print(", "); } } break; case 5: this.printWriter.print("

\n"); break; case 6: this.printWriter.print("\n"); break; default: this.printWriter.print("

" + attribute); break; } this.printWriter.println(""); this.printWriter.flush(); } }