org.objectweb.asm.util
Class Textifier

java.lang.Object
  extended by org.objectweb.asm.util.Printer
      extended by org.objectweb.asm.util.Textifier

public class Textifier
extends Printer

A Printer that prints a disassembled view of the classes it visits.

Author:
Eric Bruneton

Field Summary
static int CLASS_DECLARATION
          Constant used in appendDescriptor for class signatures, formatted in default Java notation (non-bytecode)
static int CLASS_SIGNATURE
          Constant used in appendDescriptor for class signatures, formatted in bytecode notation
static int FIELD_DESCRIPTOR
          Constant used in appendDescriptor for field descriptors, formatted in bytecode notation
static int FIELD_SIGNATURE
          Constant used in appendDescriptor for field signatures, formatted in bytecode notation
static int HANDLE_DESCRIPTOR
          Constant used in appendDescriptor for handle descriptors, formatted in bytecode notation
static int INTERNAL_NAME
          Constant used in appendDescriptor for internal type names in bytecode notation.
protected  Map<Label,String> labelNames
          The label names.
protected  String ltab
          Tab for labels.
static int METHOD_DESCRIPTOR
          Constant used in appendDescriptor for method descriptors, formatted in bytecode notation
static int METHOD_SIGNATURE
          Constant used in appendDescriptor for method signatures, formatted in bytecode notation
static int PARAMETERS_DECLARATION
          Constant used in appendDescriptor for method parameter signatures, formatted in default Java notation (non-bytecode)
protected  String tab
          Tab for class members.
protected  String tab2
          Tab for bytecode instructions.
protected  String tab3
          Tab for table and lookup switch instructions.
static int TYPE_DECLARATION
          Constant used in appendDescriptor for field or method return value signatures, formatted in default Java notation (non-bytecode)
 
Fields inherited from class org.objectweb.asm.util.Printer
api, buf, HANDLE_TAG, OPCODES, text, TYPES
 
Constructor Summary
  Textifier()
          Constructs a new Textifier.
protected Textifier(int api)
          Constructs a new Textifier.
 
Method Summary
protected  void appendDescriptor(int type, String desc)
          Appends an internal name, a type descriptor or a type signature to buf.
protected  void appendHandle(Handle h)
          Appends the information about the given handle to buf.
protected  void appendLabel(Label l)
          Appends the name of the given label to buf.
protected  Textifier createTextifier()
          Creates a new TraceVisitor instance.
static void main(String[] args)
          Prints a disassembled view of the given class to the standard output.
 void visit(int version, int access, String name, String signature, String superName, String[] interfaces)
          Class header.
 void visit(String name, Object value)
          Annotation value.
 Textifier visitAnnotation(String desc, boolean visible)
          Prints a disassembled view of the given annotation.
 Textifier visitAnnotation(String name, String desc)
          Nested annotation value.
 Textifier visitAnnotationDefault()
          Method default annotation.
 void visitAnnotationEnd()
          Annotation end.
 Textifier visitArray(String name)
          Annotation array value.
 void visitAttribute(Attribute attr)
          Prints a disassembled view of the given attribute.
 Textifier visitClassAnnotation(String desc, boolean visible)
          Class annotation.
 void visitClassAttribute(Attribute attr)
          Class attribute.
 void visitClassEnd()
          Class end.
 void visitCode()
          Method start.
 void visitEnum(String name, String desc, String value)
          Annotation enum value.
 Textifier visitField(int access, String name, String desc, String signature, Object value)
          Class field.
 Textifier visitFieldAnnotation(String desc, boolean visible)
          Field annotation.
 void visitFieldAttribute(Attribute attr)
          Field attribute.
 void visitFieldEnd()
          Field end.
 void visitFieldInsn(int opcode, String owner, String name, String desc)
          Method instruction.
 void visitFrame(int type, int nLocal, Object[] local, int nStack, Object[] stack)
          Method stack frame.
 void visitIincInsn(int var, int increment)
          Method instruction.
 void visitInnerClass(String name, String outerName, String innerName, int access)
          Class inner name.
 void visitInsn(int opcode)
          Method instruction.
 void visitIntInsn(int opcode, int operand)
          Method instruction.
 void visitInvokeDynamicInsn(String name, String desc, Handle bsm, Object... bsmArgs)
          Method instruction.
 void visitJumpInsn(int opcode, Label label)
          Method instruction.
 void visitLabel(Label label)
          Method label.
 void visitLdcInsn(Object cst)
          Method instruction.
 void visitLineNumber(int line, Label start)
          Method debug info.
 void visitLocalVariable(String name, String desc, String signature, Label start, Label end, int index)
          Method debug info.
 void visitLookupSwitchInsn(Label dflt, int[] keys, Label[] labels)
          Method instruction.
 void visitMaxs(int maxStack, int maxLocals)
          Method max stack and max locals.
 Textifier visitMethod(int access, String name, String desc, String signature, String[] exceptions)
          Class method.
 Textifier visitMethodAnnotation(String desc, boolean visible)
          Method annotation.
 void visitMethodAttribute(Attribute attr)
          Method attribute.
 void visitMethodEnd()
          Method end.
 void visitMethodInsn(int opcode, String owner, String name, String desc)
          Method instruction.
 void visitMultiANewArrayInsn(String desc, int dims)
          Method instruction.
 void visitOuterClass(String owner, String name, String desc)
          Class outer class.
 Textifier visitParameterAnnotation(int parameter, String desc, boolean visible)
          Method parameter annotation.
 void visitSource(String file, String debug)
          Class source.
 void visitTableSwitchInsn(int min, int max, Label dflt, Label... labels)
          Method instruction.
 void visitTryCatchBlock(Label start, Label end, Label handler, String type)
          Method exception handler.
 void visitTypeInsn(int opcode, String type)
          Method instruction.
 void visitVarInsn(int opcode, int var)
          Method instruction.
 
Methods inherited from class org.objectweb.asm.util.Printer
appendString, getText, print
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

INTERNAL_NAME

public static final int INTERNAL_NAME
Constant used in appendDescriptor for internal type names in bytecode notation.

See Also:
Constant Field Values

FIELD_DESCRIPTOR

public static final int FIELD_DESCRIPTOR
Constant used in appendDescriptor for field descriptors, formatted in bytecode notation

See Also:
Constant Field Values

FIELD_SIGNATURE

public static final int FIELD_SIGNATURE
Constant used in appendDescriptor for field signatures, formatted in bytecode notation

See Also:
Constant Field Values

METHOD_DESCRIPTOR

public static final int METHOD_DESCRIPTOR
Constant used in appendDescriptor for method descriptors, formatted in bytecode notation

See Also:
Constant Field Values

METHOD_SIGNATURE

public static final int METHOD_SIGNATURE
Constant used in appendDescriptor for method signatures, formatted in bytecode notation

See Also:
Constant Field Values

CLASS_SIGNATURE

public static final int CLASS_SIGNATURE
Constant used in appendDescriptor for class signatures, formatted in bytecode notation

See Also:
Constant Field Values

TYPE_DECLARATION

public static final int TYPE_DECLARATION
Constant used in appendDescriptor for field or method return value signatures, formatted in default Java notation (non-bytecode)

See Also:
Constant Field Values

CLASS_DECLARATION

public static final int CLASS_DECLARATION
Constant used in appendDescriptor for class signatures, formatted in default Java notation (non-bytecode)

See Also:
Constant Field Values

PARAMETERS_DECLARATION

public static final int PARAMETERS_DECLARATION
Constant used in appendDescriptor for method parameter signatures, formatted in default Java notation (non-bytecode)

See Also:
Constant Field Values

HANDLE_DESCRIPTOR

public static final int HANDLE_DESCRIPTOR
Constant used in appendDescriptor for handle descriptors, formatted in bytecode notation

See Also:
Constant Field Values

tab

protected String tab
Tab for class members.


tab2

protected String tab2
Tab for bytecode instructions.


tab3

protected String tab3
Tab for table and lookup switch instructions.


ltab

protected String ltab
Tab for labels.


labelNames

protected Map<Label,String> labelNames
The label names. This map associate String values to Label keys.

Constructor Detail

Textifier

public Textifier()
Constructs a new Textifier. Subclasses must not use this constructor. Instead, they must use the Textifier(int) version.


Textifier

protected Textifier(int api)
Constructs a new Textifier.

Parameters:
api - the ASM API version implemented by this visitor. Must be one of Opcodes.ASM4.
Method Detail

main

public static void main(String[] args)
                 throws Exception
Prints a disassembled view of the given class to the standard output.

Usage: Textifier [-debug] <binary class name or class file name >

Parameters:
args - the command line arguments.
Throws:
Exception - if the class cannot be found, or if an IO exception occurs.

visit

public void visit(int version,
                  int access,
                  String name,
                  String signature,
                  String superName,
                  String[] interfaces)
Description copied from class: Printer
Class header. See ClassVisitor.visit(int, int, java.lang.String, java.lang.String, java.lang.String, java.lang.String[]).

Specified by:
visit in class Printer

visitSource

public void visitSource(String file,
                        String debug)
Description copied from class: Printer
Class source. See ClassVisitor.visitSource(java.lang.String, java.lang.String).

Specified by:
visitSource in class Printer

visitOuterClass

public void visitOuterClass(String owner,
                            String name,
                            String desc)
Description copied from class: Printer
Class outer class. See ClassVisitor.visitOuterClass(java.lang.String, java.lang.String, java.lang.String).

Specified by:
visitOuterClass in class Printer

visitClassAnnotation

public Textifier visitClassAnnotation(String desc,
                                      boolean visible)
Description copied from class: Printer
Class annotation. See ClassVisitor.visitAnnotation(java.lang.String, boolean).

Specified by:
visitClassAnnotation in class Printer

visitClassAttribute

public void visitClassAttribute(Attribute attr)
Description copied from class: Printer
Class attribute. See ClassVisitor.visitAttribute(org.objectweb.asm.Attribute).

Specified by:
visitClassAttribute in class Printer

visitInnerClass

public void visitInnerClass(String name,
                            String outerName,
                            String innerName,
                            int access)
Description copied from class: Printer
Class inner name. See ClassVisitor.visitInnerClass(java.lang.String, java.lang.String, java.lang.String, int).

Specified by:
visitInnerClass in class Printer

visitField

public Textifier visitField(int access,
                            String name,
                            String desc,
                            String signature,
                            Object value)
Description copied from class: Printer
Class field. See ClassVisitor.visitField(int, java.lang.String, java.lang.String, java.lang.String, java.lang.Object).

Specified by:
visitField in class Printer

visitMethod

public Textifier visitMethod(int access,
                             String name,
                             String desc,
                             String signature,
                             String[] exceptions)
Description copied from class: Printer
Class method. See ClassVisitor.visitMethod(int, java.lang.String, java.lang.String, java.lang.String, java.lang.String[]).

Specified by:
visitMethod in class Printer

visitClassEnd

public void visitClassEnd()
Description copied from class: Printer
Class end. See ClassVisitor.visitEnd().

Specified by:
visitClassEnd in class Printer

visit

public void visit(String name,
                  Object value)
Description copied from class: Printer
Annotation value. See AnnotationVisitor.visit(java.lang.String, java.lang.Object).

Specified by:
visit in class Printer

visitEnum

public void visitEnum(String name,
                      String desc,
                      String value)
Description copied from class: Printer
Annotation enum value. See AnnotationVisitor.visitEnum(java.lang.String, java.lang.String, java.lang.String).

Specified by:
visitEnum in class Printer

visitAnnotation

public Textifier visitAnnotation(String name,
                                 String desc)
Description copied from class: Printer
Nested annotation value. See AnnotationVisitor.visitAnnotation(java.lang.String, java.lang.String).

Specified by:
visitAnnotation in class Printer

visitArray

public Textifier visitArray(String name)
Description copied from class: Printer
Annotation array value. See AnnotationVisitor.visitArray(java.lang.String).

Specified by:
visitArray in class Printer

visitAnnotationEnd

public void visitAnnotationEnd()
Description copied from class: Printer
Annotation end. See AnnotationVisitor.visitEnd().

Specified by:
visitAnnotationEnd in class Printer

visitFieldAnnotation

public Textifier visitFieldAnnotation(String desc,
                                      boolean visible)
Description copied from class: Printer
Field annotation. See FieldVisitor.visitAnnotation(java.lang.String, boolean).

Specified by:
visitFieldAnnotation in class Printer

visitFieldAttribute

public void visitFieldAttribute(Attribute attr)
Description copied from class: Printer
Field attribute. See FieldVisitor.visitAttribute(org.objectweb.asm.Attribute).

Specified by:
visitFieldAttribute in class Printer

visitFieldEnd

public void visitFieldEnd()
Description copied from class: Printer
Field end. See FieldVisitor.visitEnd().

Specified by:
visitFieldEnd in class Printer

visitAnnotationDefault

public Textifier visitAnnotationDefault()
Description copied from class: Printer
Method default annotation. See MethodVisitor.visitAnnotationDefault().

Specified by:
visitAnnotationDefault in class Printer

visitMethodAnnotation

public Textifier visitMethodAnnotation(String desc,
                                       boolean visible)
Description copied from class: Printer
Method annotation. See MethodVisitor.visitAnnotation(java.lang.String, boolean).

Specified by:
visitMethodAnnotation in class Printer

visitParameterAnnotation

public Textifier visitParameterAnnotation(int parameter,
                                          String desc,
                                          boolean visible)
Description copied from class: Printer
Method parameter annotation. See MethodVisitor.visitParameterAnnotation(int, java.lang.String, boolean).

Specified by:
visitParameterAnnotation in class Printer

visitMethodAttribute

public void visitMethodAttribute(Attribute attr)
Description copied from class: Printer
Method attribute. See MethodVisitor.visitAttribute(org.objectweb.asm.Attribute).

Specified by:
visitMethodAttribute in class Printer

visitCode

public void visitCode()
Description copied from class: Printer
Method start. See MethodVisitor.visitCode().

Specified by:
visitCode in class Printer

visitFrame

public void visitFrame(int type,
                       int nLocal,
                       Object[] local,
                       int nStack,
                       Object[] stack)
Description copied from class: Printer
Method stack frame. See MethodVisitor.visitFrame(int, int, java.lang.Object[], int, java.lang.Object[]).

Specified by:
visitFrame in class Printer

visitInsn

public void visitInsn(int opcode)
Description copied from class: Printer
Method instruction. See MethodVisitor.visitInsn(int) .

Specified by:
visitInsn in class Printer

visitIntInsn

public void visitIntInsn(int opcode,
                         int operand)
Description copied from class: Printer
Method instruction. See MethodVisitor.visitIntInsn(int, int).

Specified by:
visitIntInsn in class Printer

visitVarInsn

public void visitVarInsn(int opcode,
                         int var)
Description copied from class: Printer
Method instruction. See MethodVisitor.visitVarInsn(int, int).

Specified by:
visitVarInsn in class Printer

visitTypeInsn

public void visitTypeInsn(int opcode,
                          String type)
Description copied from class: Printer
Method instruction. See MethodVisitor.visitTypeInsn(int, java.lang.String).

Specified by:
visitTypeInsn in class Printer

visitFieldInsn

public void visitFieldInsn(int opcode,
                           String owner,
                           String name,
                           String desc)
Description copied from class: Printer
Method instruction. See MethodVisitor.visitFieldInsn(int, java.lang.String, java.lang.String, java.lang.String).

Specified by:
visitFieldInsn in class Printer

visitMethodInsn

public void visitMethodInsn(int opcode,
                            String owner,
                            String name,
                            String desc)
Description copied from class: Printer
Method instruction. See MethodVisitor.visitMethodInsn(int, java.lang.String, java.lang.String, java.lang.String).

Specified by:
visitMethodInsn in class Printer

visitInvokeDynamicInsn

public void visitInvokeDynamicInsn(String name,
                                   String desc,
                                   Handle bsm,
                                   Object... bsmArgs)
Description copied from class: Printer
Method instruction. See MethodVisitor.visitInvokeDynamicInsn(java.lang.String, java.lang.String, org.objectweb.asm.Handle, java.lang.Object...).

Specified by:
visitInvokeDynamicInsn in class Printer

visitJumpInsn

public void visitJumpInsn(int opcode,
                          Label label)
Description copied from class: Printer
Method instruction. See MethodVisitor.visitJumpInsn(int, org.objectweb.asm.Label).

Specified by:
visitJumpInsn in class Printer

visitLabel

public void visitLabel(Label label)
Description copied from class: Printer
Method label. See MethodVisitor.visitLabel(org.objectweb.asm.Label).

Specified by:
visitLabel in class Printer

visitLdcInsn

public void visitLdcInsn(Object cst)
Description copied from class: Printer
Method instruction. See MethodVisitor.visitLdcInsn(java.lang.Object).

Specified by:
visitLdcInsn in class Printer

visitIincInsn

public void visitIincInsn(int var,
                          int increment)
Description copied from class: Printer
Method instruction. See MethodVisitor.visitIincInsn(int, int).

Specified by:
visitIincInsn in class Printer

visitTableSwitchInsn

public void visitTableSwitchInsn(int min,
                                 int max,
                                 Label dflt,
                                 Label... labels)
Description copied from class: Printer
Method instruction. See MethodVisitor.visitTableSwitchInsn(int, int, org.objectweb.asm.Label, org.objectweb.asm.Label...).

Specified by:
visitTableSwitchInsn in class Printer

visitLookupSwitchInsn

public void visitLookupSwitchInsn(Label dflt,
                                  int[] keys,
                                  Label[] labels)
Description copied from class: Printer
Method instruction. See MethodVisitor.visitLookupSwitchInsn(org.objectweb.asm.Label, int[], org.objectweb.asm.Label[]).

Specified by:
visitLookupSwitchInsn in class Printer

visitMultiANewArrayInsn

public void visitMultiANewArrayInsn(String desc,
                                    int dims)
Description copied from class: Printer
Method instruction. See MethodVisitor.visitMultiANewArrayInsn(java.lang.String, int).

Specified by:
visitMultiANewArrayInsn in class Printer

visitTryCatchBlock

public void visitTryCatchBlock(Label start,
                               Label end,
                               Label handler,
                               String type)
Description copied from class: Printer
Method exception handler. See MethodVisitor.visitTryCatchBlock(org.objectweb.asm.Label, org.objectweb.asm.Label, org.objectweb.asm.Label, java.lang.String).

Specified by:
visitTryCatchBlock in class Printer

visitLocalVariable

public void visitLocalVariable(String name,
                               String desc,
                               String signature,
                               Label start,
                               Label end,
                               int index)
Description copied from class: Printer
Method debug info. See MethodVisitor.visitLocalVariable(java.lang.String, java.lang.String, java.lang.String, org.objectweb.asm.Label, org.objectweb.asm.Label, int).

Specified by:
visitLocalVariable in class Printer

visitLineNumber

public void visitLineNumber(int line,
                            Label start)
Description copied from class: Printer
Method debug info. See MethodVisitor.visitLineNumber(int, org.objectweb.asm.Label).

Specified by:
visitLineNumber in class Printer

visitMaxs

public void visitMaxs(int maxStack,
                      int maxLocals)
Description copied from class: Printer
Method max stack and max locals. See MethodVisitor.visitMaxs(int, int).

Specified by:
visitMaxs in class Printer

visitMethodEnd

public void visitMethodEnd()
Description copied from class: Printer
Method end. See MethodVisitor.visitEnd().

Specified by:
visitMethodEnd in class Printer

visitAnnotation

public Textifier visitAnnotation(String desc,
                                 boolean visible)
Prints a disassembled view of the given annotation.

Parameters:
desc - the class descriptor of the annotation class.
visible - true if the annotation is visible at runtime.
Returns:
a visitor to visit the annotation values.

visitAttribute

public void visitAttribute(Attribute attr)
Prints a disassembled view of the given attribute.

Parameters:
attr - an attribute.

createTextifier

protected Textifier createTextifier()
Creates a new TraceVisitor instance.

Returns:
a new TraceVisitor.

appendDescriptor

protected void appendDescriptor(int type,
                                String desc)
Appends an internal name, a type descriptor or a type signature to buf.

Parameters:
type - indicates if desc is an internal name, a field descriptor, a method descriptor, a class signature, ...
desc - an internal name, type descriptor, or type signature. May be null.

appendLabel

protected void appendLabel(Label l)
Appends the name of the given label to buf. Creates a new label name if the given label does not yet have one.

Parameters:
l - a label.

appendHandle

protected void appendHandle(Handle h)
Appends the information about the given handle to buf.

Parameters:
h - a handle, non null.