Package org.objectweb.asm.util
Class Printer
- java.lang.Object
-
- org.objectweb.asm.util.Printer
-
-
Field Summary
Fields Modifier and Type Field Description protected intapiThe ASM API version implemented by this class.protected StringBufferbufA buffer that can be used to create strings.static String[]HANDLE_TAGThe names of thetagfield values forHandle.static String[]OPCODESThe names of the Java Virtual Machine opcodes.List<Object>textThe text to be printed.static String[]TYPESThe names of the foroperandparameter values of theMethodVisitor.visitIntInsn(int, int)method whenopcodeisNEWARRAY.
-
Method Summary
All Methods Static Methods Instance Methods Abstract Methods Concrete Methods Deprecated Methods Modifier and Type Method Description static voidappendString(StringBuffer buf, String s)Appends a quoted string to a given buffer.List<Object>getText()Returns the text constructed by this visitor.voidprint(PrintWriter pw)Prints the text constructed by this visitor.abstract voidvisit(int version, int access, String name, String signature, String superName, String[] interfaces)Class header.abstract voidvisit(String name, Object value)Annotation value.abstract PrintervisitAnnotation(String name, String desc)Nested annotation value.abstract PrintervisitAnnotationDefault()Method default annotation.abstract voidvisitAnnotationEnd()Annotation end.abstract PrintervisitArray(String name)Annotation array value.abstract PrintervisitClassAnnotation(String desc, boolean visible)Class annotation.abstract voidvisitClassAttribute(Attribute attr)Class attribute.abstract voidvisitClassEnd()Class end.PrintervisitClassTypeAnnotation(int typeRef, TypePath typePath, String desc, boolean visible)Class type annotation.abstract voidvisitCode()Method start.abstract voidvisitEnum(String name, String desc, String value)Annotation enum value.abstract PrintervisitField(int access, String name, String desc, String signature, Object value)Class field.abstract PrintervisitFieldAnnotation(String desc, boolean visible)Field annotation.abstract voidvisitFieldAttribute(Attribute attr)Field attribute.abstract voidvisitFieldEnd()Field end.abstract voidvisitFieldInsn(int opcode, String owner, String name, String desc)Method instruction.PrintervisitFieldTypeAnnotation(int typeRef, TypePath typePath, String desc, boolean visible)Field type annotation.abstract voidvisitFrame(int type, int nLocal, Object[] local, int nStack, Object[] stack)Method stack frame.abstract voidvisitIincInsn(int var, int increment)Method instruction.abstract voidvisitInnerClass(String name, String outerName, String innerName, int access)Class inner name.abstract voidvisitInsn(int opcode)Method instruction.PrintervisitInsnAnnotation(int typeRef, TypePath typePath, String desc, boolean visible)Instruction type annotation.abstract voidvisitIntInsn(int opcode, int operand)Method instruction.abstract voidvisitInvokeDynamicInsn(String name, String desc, Handle bsm, Object... bsmArgs)Method instruction.abstract voidvisitJumpInsn(int opcode, Label label)Method instruction.abstract voidvisitLabel(Label label)Method label.abstract voidvisitLdcInsn(Object cst)Method instruction.abstract voidvisitLineNumber(int line, Label start)Method debug info.abstract voidvisitLocalVariable(String name, String desc, String signature, Label start, Label end, int index)Method debug info.PrintervisitLocalVariableAnnotation(int typeRef, TypePath typePath, Label[] start, Label[] end, int[] index, String desc, boolean visible)Local variable type annotation.abstract voidvisitLookupSwitchInsn(Label dflt, int[] keys, Label[] labels)Method instruction.abstract voidvisitMaxs(int maxStack, int maxLocals)Method max stack and max locals.abstract PrintervisitMethod(int access, String name, String desc, String signature, String[] exceptions)Class method.abstract PrintervisitMethodAnnotation(String desc, boolean visible)Method annotation.abstract voidvisitMethodAttribute(Attribute attr)Method attribute.abstract voidvisitMethodEnd()Method end.voidvisitMethodInsn(int opcode, String owner, String name, String desc)Deprecated.voidvisitMethodInsn(int opcode, String owner, String name, String desc, boolean itf)Method instruction.PrintervisitMethodTypeAnnotation(int typeRef, TypePath typePath, String desc, boolean visible)Method type annotation.abstract voidvisitMultiANewArrayInsn(String desc, int dims)Method instruction.abstract voidvisitOuterClass(String owner, String name, String desc)Class outer class.voidvisitParameter(String name, int access)Method parameter.abstract PrintervisitParameterAnnotation(int parameter, String desc, boolean visible)Method parameter annotation.abstract voidvisitSource(String file, String debug)Class source.abstract voidvisitTableSwitchInsn(int min, int max, Label dflt, Label... labels)Method instruction.PrintervisitTryCatchAnnotation(int typeRef, TypePath typePath, String desc, boolean visible)Try catch block type annotation.abstract voidvisitTryCatchBlock(Label start, Label end, Label handler, String type)Method exception handler.abstract voidvisitTypeInsn(int opcode, String type)Method instruction.abstract voidvisitVarInsn(int opcode, int var)Method instruction.
-
-
-
Field Detail
-
OPCODES
public static final String[] OPCODES
The names of the Java Virtual Machine opcodes.
-
TYPES
public static final String[] TYPES
The names of the foroperandparameter values of theMethodVisitor.visitIntInsn(int, int)method whenopcodeisNEWARRAY.
-
api
protected final int api
The ASM API version implemented by this class. The value of this field must be one ofOpcodes.ASM4orOpcodes.ASM5.
-
buf
protected final StringBuffer buf
A buffer that can be used to create strings.
-
text
public final List<Object> text
The text to be printed. Since the code of methods is not necessarily visited in sequential order, one method after the other, but can be interlaced (some instructions from method one, then some instructions from method two, then some instructions from method one again...), it is not possible to print the visited instructions directly to a sequential stream. A class is therefore printed in a two steps process: a string tree is constructed during the visit, and printed to a sequential stream at the end of the visit. This string tree is stored in this field, as a string list that can contain other string lists, which can themselves contain other string lists, and so on.
-
-
Constructor Detail
-
Printer
protected Printer(int api)
Constructs a newPrinter.
-
-
Method Detail
-
visit
public abstract void visit(int version, int access, String name, String signature, String superName, String[] interfaces)
-
visitSource
public abstract void visitSource(String file, String debug)
Class source. SeeClassVisitor.visitSource(java.lang.String, java.lang.String).
-
visitOuterClass
public abstract void visitOuterClass(String owner, String name, String desc)
Class outer class. SeeClassVisitor.visitOuterClass(java.lang.String, java.lang.String, java.lang.String).
-
visitClassAnnotation
public abstract Printer visitClassAnnotation(String desc, boolean visible)
Class annotation. SeeClassVisitor.visitAnnotation(java.lang.String, boolean).
-
visitClassTypeAnnotation
public Printer visitClassTypeAnnotation(int typeRef, TypePath typePath, String desc, boolean visible)
Class type annotation. SeeClassVisitor.visitTypeAnnotation(int, org.objectweb.asm.TypePath, java.lang.String, boolean).
-
visitClassAttribute
public abstract void visitClassAttribute(Attribute attr)
Class attribute. SeeClassVisitor.visitAttribute(org.objectweb.asm.Attribute).
-
visitInnerClass
public abstract void visitInnerClass(String name, String outerName, String innerName, int access)
Class inner name. SeeClassVisitor.visitInnerClass(java.lang.String, java.lang.String, java.lang.String, int).
-
visitField
public abstract Printer visitField(int access, String name, String desc, String signature, Object value)
-
visitMethod
public abstract Printer visitMethod(int access, String name, String desc, String signature, String[] exceptions)
-
visitClassEnd
public abstract void visitClassEnd()
Class end. SeeClassVisitor.visitEnd().
-
visit
public abstract void visit(String name, Object value)
Annotation value. SeeAnnotationVisitor.visit(java.lang.String, java.lang.Object).
-
visitEnum
public abstract void visitEnum(String name, String desc, String value)
Annotation enum value. SeeAnnotationVisitor.visitEnum(java.lang.String, java.lang.String, java.lang.String).
-
visitAnnotation
public abstract Printer visitAnnotation(String name, String desc)
Nested annotation value. SeeAnnotationVisitor.visitAnnotation(java.lang.String, java.lang.String).
-
visitArray
public abstract Printer visitArray(String name)
Annotation array value. SeeAnnotationVisitor.visitArray(java.lang.String).
-
visitAnnotationEnd
public abstract void visitAnnotationEnd()
Annotation end. SeeAnnotationVisitor.visitEnd().
-
visitFieldAnnotation
public abstract Printer visitFieldAnnotation(String desc, boolean visible)
Field annotation. SeeFieldVisitor.visitAnnotation(java.lang.String, boolean).
-
visitFieldTypeAnnotation
public Printer visitFieldTypeAnnotation(int typeRef, TypePath typePath, String desc, boolean visible)
Field type annotation. SeeFieldVisitor.visitTypeAnnotation(int, org.objectweb.asm.TypePath, java.lang.String, boolean).
-
visitFieldAttribute
public abstract void visitFieldAttribute(Attribute attr)
Field attribute. SeeFieldVisitor.visitAttribute(org.objectweb.asm.Attribute).
-
visitFieldEnd
public abstract void visitFieldEnd()
Field end. SeeFieldVisitor.visitEnd().
-
visitParameter
public void visitParameter(String name, int access)
Method parameter. SeeMethodVisitor.visitParameter(String, int).
-
visitAnnotationDefault
public abstract Printer visitAnnotationDefault()
Method default annotation. SeeMethodVisitor.visitAnnotationDefault().
-
visitMethodAnnotation
public abstract Printer visitMethodAnnotation(String desc, boolean visible)
Method annotation. SeeMethodVisitor.visitAnnotation(java.lang.String, boolean).
-
visitMethodTypeAnnotation
public Printer visitMethodTypeAnnotation(int typeRef, TypePath typePath, String desc, boolean visible)
Method type annotation. SeeMethodVisitor.visitTypeAnnotation(int, org.objectweb.asm.TypePath, java.lang.String, boolean).
-
visitParameterAnnotation
public abstract Printer visitParameterAnnotation(int parameter, String desc, boolean visible)
Method parameter annotation. SeeMethodVisitor.visitParameterAnnotation(int, java.lang.String, boolean).
-
visitMethodAttribute
public abstract void visitMethodAttribute(Attribute attr)
Method attribute. SeeMethodVisitor.visitAttribute(org.objectweb.asm.Attribute).
-
visitCode
public abstract void visitCode()
Method start. SeeMethodVisitor.visitCode().
-
visitFrame
public abstract void visitFrame(int type, int nLocal, Object[] local, int nStack, Object[] stack)Method stack frame. SeeMethodVisitor.visitFrame(int, int, java.lang.Object[], int, java.lang.Object[]).
-
visitInsn
public abstract void visitInsn(int opcode)
Method instruction. SeeMethodVisitor.visitInsn(int).
-
visitIntInsn
public abstract void visitIntInsn(int opcode, int operand)Method instruction. SeeMethodVisitor.visitIntInsn(int, int).
-
visitVarInsn
public abstract void visitVarInsn(int opcode, int var)Method instruction. SeeMethodVisitor.visitVarInsn(int, int).
-
visitTypeInsn
public abstract void visitTypeInsn(int opcode, String type)Method instruction. SeeMethodVisitor.visitTypeInsn(int, java.lang.String).
-
visitFieldInsn
public abstract void visitFieldInsn(int opcode, String owner, String name, String desc)Method instruction. SeeMethodVisitor.visitFieldInsn(int, java.lang.String, java.lang.String, java.lang.String).
-
visitMethodInsn
@Deprecated public void visitMethodInsn(int opcode, String owner, String name, String desc)
Deprecated.Method instruction. SeeMethodVisitor.visitMethodInsn(int, java.lang.String, java.lang.String, java.lang.String).
-
visitMethodInsn
public void visitMethodInsn(int opcode, String owner, String name, String desc, boolean itf)Method instruction. SeeMethodVisitor.visitMethodInsn(int, java.lang.String, java.lang.String, java.lang.String).
-
visitInvokeDynamicInsn
public abstract void visitInvokeDynamicInsn(String name, String desc, Handle bsm, Object... bsmArgs)
-
visitJumpInsn
public abstract void visitJumpInsn(int opcode, Label label)Method instruction. SeeMethodVisitor.visitJumpInsn(int, org.objectweb.asm.Label).
-
visitLabel
public abstract void visitLabel(Label label)
Method label. SeeMethodVisitor.visitLabel(org.objectweb.asm.Label).
-
visitLdcInsn
public abstract void visitLdcInsn(Object cst)
Method instruction. SeeMethodVisitor.visitLdcInsn(java.lang.Object).
-
visitIincInsn
public abstract void visitIincInsn(int var, int increment)Method instruction. SeeMethodVisitor.visitIincInsn(int, int).
-
visitTableSwitchInsn
public abstract void visitTableSwitchInsn(int min, int max, Label dflt, Label... labels)Method instruction. SeeMethodVisitor.visitTableSwitchInsn(int, int, org.objectweb.asm.Label, org.objectweb.asm.Label...).
-
visitLookupSwitchInsn
public abstract void visitLookupSwitchInsn(Label dflt, int[] keys, Label[] labels)
Method instruction. SeeMethodVisitor.visitLookupSwitchInsn(org.objectweb.asm.Label, int[], org.objectweb.asm.Label[]).
-
visitMultiANewArrayInsn
public abstract void visitMultiANewArrayInsn(String desc, int dims)
Method instruction. SeeMethodVisitor.visitMultiANewArrayInsn(java.lang.String, int).
-
visitInsnAnnotation
public Printer visitInsnAnnotation(int typeRef, TypePath typePath, String desc, boolean visible)
Instruction type annotation. SeeMethodVisitor.visitInsnAnnotation(int, org.objectweb.asm.TypePath, java.lang.String, boolean).
-
visitTryCatchBlock
public abstract void visitTryCatchBlock(Label start, Label end, Label handler, String type)
-
visitTryCatchAnnotation
public Printer visitTryCatchAnnotation(int typeRef, TypePath typePath, String desc, boolean visible)
Try catch block type annotation. SeeMethodVisitor.visitTryCatchAnnotation(int, org.objectweb.asm.TypePath, java.lang.String, boolean).
-
visitLocalVariable
public abstract void visitLocalVariable(String name, String desc, String signature, Label start, Label end, int index)
-
visitLocalVariableAnnotation
public Printer visitLocalVariableAnnotation(int typeRef, TypePath typePath, Label[] start, Label[] end, int[] index, String desc, boolean visible)
Local variable type annotation. SeeMethodVisitor.visitTryCatchAnnotation(int, org.objectweb.asm.TypePath, java.lang.String, boolean).
-
visitLineNumber
public abstract void visitLineNumber(int line, Label start)Method debug info. SeeMethodVisitor.visitLineNumber(int, org.objectweb.asm.Label).
-
visitMaxs
public abstract void visitMaxs(int maxStack, int maxLocals)Method max stack and max locals. SeeMethodVisitor.visitMaxs(int, int).
-
visitMethodEnd
public abstract void visitMethodEnd()
Method end. SeeMethodVisitor.visitEnd().
-
getText
public List<Object> getText()
Returns the text constructed by this visitor.- Returns:
- the text constructed by this visitor.
-
print
public void print(PrintWriter pw)
Prints the text constructed by this visitor.- Parameters:
pw- the print writer to be used.
-
appendString
public static void appendString(StringBuffer buf, String s)
Appends a quoted string to a given buffer.- Parameters:
buf- the buffer where the string must be added.s- the string to be added.
-
-