View Javadoc
1   package mockit.asm.methods;
2   
3   import edu.umd.cs.findbugs.annotations.NonNull;
4   import edu.umd.cs.findbugs.annotations.Nullable;
5   
6   import mockit.asm.annotations.AnnotationVisitor;
7   import mockit.asm.controlFlow.Label;
8   import mockit.asm.util.MethodHandle;
9   
10  import org.checkerframework.checker.index.qual.NonNegative;
11  
12  /**
13   * Same as {@link MethodVisitor}, except it always wraps a {@link MethodWriter}.
14   */
15  public class WrappingMethodVisitor extends MethodVisitor {
16      /**
17       * The method writer to which this visitor must delegate method calls.
18       */
19      @NonNull
20      protected final MethodWriter mw;
21  
22      /**
23       * Initializes a new wrapping Method Visitor.
24       *
25       * @param mw
26       *            the method visitor to which this visitor must delegate method calls
27       */
28      protected WrappingMethodVisitor(@NonNull MethodWriter mw) {
29          this.mw = mw;
30      }
31  
32      @Nullable
33      @Override
34      public AnnotationVisitor visitAnnotation(@NonNull String desc) {
35          return mw.visitAnnotation(desc);
36      }
37  
38      @Override
39      public final AnnotationVisitor visitParameterAnnotation(@NonNegative int parameter, @NonNull String desc) {
40          return mw.visitParameterAnnotation(parameter, desc);
41      }
42  
43      @Override
44      public void visitInsn(int opcode) {
45          mw.visitInsn(opcode);
46      }
47  
48      @Override
49      public void visitIntInsn(int opcode, int operand) {
50          mw.visitIntInsn(opcode, operand);
51      }
52  
53      @Override
54      public void visitVarInsn(int opcode, @NonNegative int varIndex) {
55          mw.visitVarInsn(opcode, varIndex);
56      }
57  
58      @Override
59      public void visitTypeInsn(int opcode, @NonNull String typeDesc) {
60          mw.visitTypeInsn(opcode, typeDesc);
61      }
62  
63      @Override
64      public void visitFieldInsn(int opcode, @NonNull String owner, @NonNull String name, @NonNull String desc) {
65          mw.visitFieldInsn(opcode, owner, name, desc);
66      }
67  
68      @Override
69      public void visitMethodInsn(int opcode, @NonNull String owner, @NonNull String name, @NonNull String desc,
70              boolean itf) {
71          mw.visitMethodInsn(opcode, owner, name, desc, itf);
72      }
73  
74      @Override
75      public final void visitInvokeDynamicInsn(@NonNull String name, @NonNull String desc, @NonNull MethodHandle bsm,
76              @NonNull Object... bsmArgs) {
77          mw.visitInvokeDynamicInsn(name, desc, bsm, bsmArgs);
78      }
79  
80      @Override
81      public void visitJumpInsn(int opcode, @NonNull Label label) {
82          mw.visitJumpInsn(opcode, label);
83      }
84  
85      @Override
86      public void visitLabel(@NonNull Label label) {
87          mw.visitLabel(label);
88      }
89  
90      @Override
91      public void visitLdcInsn(@NonNull Object cst) {
92          mw.visitLdcInsn(cst);
93      }
94  
95      @Override
96      public void visitIincInsn(@NonNegative int varIndex, int increment) {
97          mw.visitIincInsn(varIndex, increment);
98      }
99  
100     @Override
101     public void visitTableSwitchInsn(int min, int max, @NonNull Label dflt, @NonNull Label... labels) {
102         mw.visitTableSwitchInsn(min, max, dflt, labels);
103     }
104 
105     @Override
106     public void visitLookupSwitchInsn(@NonNull Label dflt, @NonNull int[] keys, @NonNull Label[] labels) {
107         mw.visitLookupSwitchInsn(dflt, keys, labels);
108     }
109 
110     @Override
111     public void visitMultiANewArrayInsn(@NonNull String desc, @NonNegative int dims) {
112         mw.visitMultiANewArrayInsn(desc, dims);
113     }
114 
115     @Override
116     public void visitTryCatchBlock(@NonNull Label start, @NonNull Label end, @NonNull Label handler,
117             @Nullable String type) {
118         mw.visitTryCatchBlock(start, end, handler, type);
119     }
120 
121     @Override
122     public void visitLocalVariable(@NonNull String name, @NonNull String desc, String signature, @NonNull Label start,
123             @NonNull Label end, @NonNegative int index) {
124         mw.visitLocalVariable(name, desc, signature, start, end, index);
125     }
126 
127     @Override
128     public void visitLineNumber(@NonNegative int line, @NonNull Label start) {
129         mw.visitLineNumber(line, start);
130     }
131 
132     @Override
133     public void visitMaxStack(@NonNegative int maxStack) {
134         mw.visitMaxStack(maxStack);
135     }
136 }