ProGuard

proguard.classfile.editor
Class CodeAttrInfoEditor

java.lang.Object
  extended byproguard.classfile.editor.CodeAttrInfoEditor
All Implemented Interfaces:
AttrInfoVisitor, ExceptionInfoVisitor, InstructionVisitor, LineNumberInfoVisitor, LocalVariableInfoVisitor

public class CodeAttrInfoEditor
extends Object
implements AttrInfoVisitor, InstructionVisitor, ExceptionInfoVisitor, LineNumberInfoVisitor, LocalVariableInfoVisitor

This AttrInfoVisitor accumulates specified changes to code, and then applies these accumulated changes to the code attributes that it visits.


Field Summary
 Instruction[] postInsertions
           
 Instruction[] preInsertions
           
 
Constructor Summary
CodeAttrInfoEditor(int codeLength)
          Creates a new CodeAttrInfoEditor.
 
Method Summary
 void deleteInstruction(int instructionOffset)
          Remembers to delete the instruction at the given offset.
 void insertAfterInstruction(int instructionOffset, Instruction instruction)
          Remembers to place the given instruction right after the instruction at the given offset.
 void insertBeforeInstruction(int instructionOffset, Instruction instruction)
          Remembers to place the given instruction right before the instruction at the given offset.
 boolean isModified()
          Returns whether any instruction has been modified in any way.
 boolean isModified(int instructionOffset)
          Returns whether the instruction at the given offset has been modified in any way.
 void replaceInstruction(int instructionOffset, Instruction instruction)
          Remembers to replace the instruction at the given offset by the given instruction.
 void reset(int codeLength)
          Resets the accumulated code changes.
 void visitBranchInstruction(ClassFile classFile, MethodInfo methodInfo, CodeAttrInfo codeAttrInfo, int offset, BranchInstruction branchInstruction)
           
 void visitCodeAttrInfo(ClassFile classFile, MethodInfo methodInfo, CodeAttrInfo codeAttrInfo)
           
 void visitConstantValueAttrInfo(ClassFile classFile, FieldInfo fieldInfo, ConstantValueAttrInfo constantValueAttrInfo)
           
 void visitCpInstruction(ClassFile classFile, MethodInfo methodInfo, CodeAttrInfo codeAttrInfo, int offset, CpInstruction cpInstruction)
           
 void visitDeprecatedAttrInfo(ClassFile classFile, DeprecatedAttrInfo deprecatedAttrInfo)
           
 void visitExceptionInfo(ClassFile classFile, MethodInfo methodInfo, CodeAttrInfo codeAttrInfo, ExceptionInfo exceptionInfo)
           
 void visitExceptionsAttrInfo(ClassFile classFile, MethodInfo methodInfo, ExceptionsAttrInfo exceptionsAttrInfo)
           
 void visitInnerClassesAttrInfo(ClassFile classFile, InnerClassesAttrInfo innerClassesAttrInfo)
           
 void visitLineNumberInfo(ClassFile classFile, MethodInfo methodInfo, CodeAttrInfo codeAttrInfo, LineNumberInfo lineNumberInfo)
           
 void visitLineNumberTableAttrInfo(ClassFile classFile, MethodInfo methodInfo, CodeAttrInfo codeAttrInfo, LineNumberTableAttrInfo lineNumberTableAttrInfo)
           
 void visitLocalVariableInfo(ClassFile classFile, MethodInfo methodInfo, CodeAttrInfo codeAttrInfo, LocalVariableInfo localVariableInfo)
           
 void visitLocalVariableTableAttrInfo(ClassFile classFile, MethodInfo methodInfo, CodeAttrInfo codeAttrInfo, LocalVariableTableAttrInfo localVariableTableAttrInfo)
           
 void visitLookUpSwitchInstruction(ClassFile classFile, MethodInfo methodInfo, CodeAttrInfo codeAttrInfo, int offset, LookUpSwitchInstruction lookUpSwitchInstruction)
           
 void visitSignatureAttrInfo(ClassFile classFile, SignatureAttrInfo signatureAttrInfo)
           
 void visitSimpleInstruction(ClassFile classFile, MethodInfo methodInfo, CodeAttrInfo codeAttrInfo, int offset, SimpleInstruction simpleInstruction)
           
 void visitSourceDirAttrInfo(ClassFile classFile, SourceDirAttrInfo sourceDirAttrInfo)
           
 void visitSourceFileAttrInfo(ClassFile classFile, SourceFileAttrInfo sourceFileAttrInfo)
           
 void visitSyntheticAttrInfo(ClassFile classFile, SyntheticAttrInfo syntheticAttrInfo)
           
 void visitTableSwitchInstruction(ClassFile classFile, MethodInfo methodInfo, CodeAttrInfo codeAttrInfo, int offset, TableSwitchInstruction tableSwitchInstruction)
           
 void visitUnknownAttrInfo(ClassFile classFile, UnknownAttrInfo unknownAttrInfo)
           
 void visitVariableInstruction(ClassFile classFile, MethodInfo methodInfo, CodeAttrInfo codeAttrInfo, int offset, VariableInstruction variableInstruction)
           
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

preInsertions

public Instruction[] preInsertions

postInsertions

public Instruction[] postInsertions
Constructor Detail

CodeAttrInfoEditor

public CodeAttrInfoEditor(int codeLength)
Creates a new CodeAttrInfoEditor.

Parameters:
codeLength - an estimate of the maximum length of all the code that will be edited.
Method Detail

reset

public void reset(int codeLength)
Resets the accumulated code changes.

Parameters:
codeLength - the length of the code that will be edited next.

replaceInstruction

public void replaceInstruction(int instructionOffset,
                               Instruction instruction)
Remembers to replace the instruction at the given offset by the given instruction.

Parameters:
instructionOffset - the offset of the instruction to be replaced.
instruction - the new instruction.

insertBeforeInstruction

public void insertBeforeInstruction(int instructionOffset,
                                    Instruction instruction)
Remembers to place the given instruction right before the instruction at the given offset.

Parameters:
instructionOffset - the offset of the instruction.
instruction - the new instruction.

insertAfterInstruction

public void insertAfterInstruction(int instructionOffset,
                                   Instruction instruction)
Remembers to place the given instruction right after the instruction at the given offset.

Parameters:
instructionOffset - the offset of the instruction.
instruction - the new instruction.

deleteInstruction

public void deleteInstruction(int instructionOffset)
Remembers to delete the instruction at the given offset.

Parameters:
instructionOffset - the offset of the instruction to be deleted.

isModified

public boolean isModified(int instructionOffset)
Returns whether the instruction at the given offset has been modified in any way.


isModified

public boolean isModified()
Returns whether any instruction has been modified in any way.


visitUnknownAttrInfo

public void visitUnknownAttrInfo(ClassFile classFile,
                                 UnknownAttrInfo unknownAttrInfo)
Specified by:
visitUnknownAttrInfo in interface AttrInfoVisitor

visitInnerClassesAttrInfo

public void visitInnerClassesAttrInfo(ClassFile classFile,
                                      InnerClassesAttrInfo innerClassesAttrInfo)
Specified by:
visitInnerClassesAttrInfo in interface AttrInfoVisitor

visitConstantValueAttrInfo

public void visitConstantValueAttrInfo(ClassFile classFile,
                                       FieldInfo fieldInfo,
                                       ConstantValueAttrInfo constantValueAttrInfo)
Specified by:
visitConstantValueAttrInfo in interface AttrInfoVisitor

visitExceptionsAttrInfo

public void visitExceptionsAttrInfo(ClassFile classFile,
                                    MethodInfo methodInfo,
                                    ExceptionsAttrInfo exceptionsAttrInfo)
Specified by:
visitExceptionsAttrInfo in interface AttrInfoVisitor

visitSourceFileAttrInfo

public void visitSourceFileAttrInfo(ClassFile classFile,
                                    SourceFileAttrInfo sourceFileAttrInfo)
Specified by:
visitSourceFileAttrInfo in interface AttrInfoVisitor

visitSourceDirAttrInfo

public void visitSourceDirAttrInfo(ClassFile classFile,
                                   SourceDirAttrInfo sourceDirAttrInfo)
Specified by:
visitSourceDirAttrInfo in interface AttrInfoVisitor

visitDeprecatedAttrInfo

public void visitDeprecatedAttrInfo(ClassFile classFile,
                                    DeprecatedAttrInfo deprecatedAttrInfo)
Specified by:
visitDeprecatedAttrInfo in interface AttrInfoVisitor

visitSyntheticAttrInfo

public void visitSyntheticAttrInfo(ClassFile classFile,
                                   SyntheticAttrInfo syntheticAttrInfo)
Specified by:
visitSyntheticAttrInfo in interface AttrInfoVisitor

visitSignatureAttrInfo

public void visitSignatureAttrInfo(ClassFile classFile,
                                   SignatureAttrInfo signatureAttrInfo)
Specified by:
visitSignatureAttrInfo in interface AttrInfoVisitor

visitCodeAttrInfo

public void visitCodeAttrInfo(ClassFile classFile,
                              MethodInfo methodInfo,
                              CodeAttrInfo codeAttrInfo)
Specified by:
visitCodeAttrInfo in interface AttrInfoVisitor

visitLineNumberTableAttrInfo

public void visitLineNumberTableAttrInfo(ClassFile classFile,
                                         MethodInfo methodInfo,
                                         CodeAttrInfo codeAttrInfo,
                                         LineNumberTableAttrInfo lineNumberTableAttrInfo)
Specified by:
visitLineNumberTableAttrInfo in interface AttrInfoVisitor

visitLocalVariableTableAttrInfo

public void visitLocalVariableTableAttrInfo(ClassFile classFile,
                                            MethodInfo methodInfo,
                                            CodeAttrInfo codeAttrInfo,
                                            LocalVariableTableAttrInfo localVariableTableAttrInfo)
Specified by:
visitLocalVariableTableAttrInfo in interface AttrInfoVisitor

visitSimpleInstruction

public void visitSimpleInstruction(ClassFile classFile,
                                   MethodInfo methodInfo,
                                   CodeAttrInfo codeAttrInfo,
                                   int offset,
                                   SimpleInstruction simpleInstruction)
Specified by:
visitSimpleInstruction in interface InstructionVisitor

visitCpInstruction

public void visitCpInstruction(ClassFile classFile,
                               MethodInfo methodInfo,
                               CodeAttrInfo codeAttrInfo,
                               int offset,
                               CpInstruction cpInstruction)
Specified by:
visitCpInstruction in interface InstructionVisitor

visitVariableInstruction

public void visitVariableInstruction(ClassFile classFile,
                                     MethodInfo methodInfo,
                                     CodeAttrInfo codeAttrInfo,
                                     int offset,
                                     VariableInstruction variableInstruction)
Specified by:
visitVariableInstruction in interface InstructionVisitor

visitBranchInstruction

public void visitBranchInstruction(ClassFile classFile,
                                   MethodInfo methodInfo,
                                   CodeAttrInfo codeAttrInfo,
                                   int offset,
                                   BranchInstruction branchInstruction)
Specified by:
visitBranchInstruction in interface InstructionVisitor

visitTableSwitchInstruction

public void visitTableSwitchInstruction(ClassFile classFile,
                                        MethodInfo methodInfo,
                                        CodeAttrInfo codeAttrInfo,
                                        int offset,
                                        TableSwitchInstruction tableSwitchInstruction)
Specified by:
visitTableSwitchInstruction in interface InstructionVisitor

visitLookUpSwitchInstruction

public void visitLookUpSwitchInstruction(ClassFile classFile,
                                         MethodInfo methodInfo,
                                         CodeAttrInfo codeAttrInfo,
                                         int offset,
                                         LookUpSwitchInstruction lookUpSwitchInstruction)
Specified by:
visitLookUpSwitchInstruction in interface InstructionVisitor

visitExceptionInfo

public void visitExceptionInfo(ClassFile classFile,
                               MethodInfo methodInfo,
                               CodeAttrInfo codeAttrInfo,
                               ExceptionInfo exceptionInfo)
Specified by:
visitExceptionInfo in interface ExceptionInfoVisitor

visitLineNumberInfo

public void visitLineNumberInfo(ClassFile classFile,
                                MethodInfo methodInfo,
                                CodeAttrInfo codeAttrInfo,
                                LineNumberInfo lineNumberInfo)
Specified by:
visitLineNumberInfo in interface LineNumberInfoVisitor

visitLocalVariableInfo

public void visitLocalVariableInfo(ClassFile classFile,
                                   MethodInfo methodInfo,
                                   CodeAttrInfo codeAttrInfo,
                                   LocalVariableInfo localVariableInfo)
Specified by:
visitLocalVariableInfo in interface LocalVariableInfoVisitor

ProGuard