/*
* Copyright 2010 Henry Coles
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and limitations under the License.
*/
package org.pitest.bytecode;
import org.objectweb.asm.AnnotationVisitor;
import org.objectweb.asm.Attribute;
import org.objectweb.asm.ClassVisitor;
import org.objectweb.asm.FieldVisitor;
import org.objectweb.asm.Label;
import org.objectweb.asm.MethodVisitor;
import org.objectweb.asm.Opcodes;
public class NullVisitor extends ClassVisitor {
public NullVisitor() {
super(Opcodes.ASM5);
}
public static class NullAnnotationVisitor extends AnnotationVisitor {
NullAnnotationVisitor() {
super(Opcodes.ASM5);
}
@Override
public void visit(final String arg0, final Object arg1) {
}
@Override
public AnnotationVisitor visitAnnotation(final String arg0,
final String arg1) {
return new NullAnnotationVisitor();
}
@Override
public AnnotationVisitor visitArray(final String arg0) {
return new NullAnnotationVisitor();
}
@Override
public void visitEnd() {
}
@Override
public void visitEnum(final String arg0, final String arg1,
final String arg2) {
}
}
public static class NullMethodVisitor extends MethodVisitor {
NullMethodVisitor() {
super(Opcodes.ASM5);
}
@Override
public AnnotationVisitor visitAnnotation(final String arg0,
final boolean arg1) {
return new NullAnnotationVisitor();
}
@Override
public AnnotationVisitor visitAnnotationDefault() {
return new NullAnnotationVisitor();
}
@Override
public void visitAttribute(final Attribute arg0) {
}
@Override
public void visitCode() {
}
@Override
public void visitEnd() {
}
@Override
public void visitFieldInsn(final int arg0, final String arg1,
final String arg2, final String arg3) {
}
@Override
public void visitFrame(final int arg0, final int arg1, final Object[] arg2,
final int arg3, final Object[] arg4) {
}
@Override
public void visitIincInsn(final int arg0, final int arg1) {
}
@Override
public void visitInsn(final int arg0) {
}
@Override
public void visitIntInsn(final int arg0, final int arg1) {
}
@Override
public void visitJumpInsn(final int arg0, final Label arg1) {
}
@Override
public void visitLabel(final Label arg0) {
}
@Override
public void visitLdcInsn(final Object arg0) {
}
@Override
public void visitLineNumber(final int arg0, final Label arg1) {
}
@Override
public void visitLocalVariable(final String arg0, final String arg1,
final String arg2, final Label arg3, final Label arg4, final int arg5) {
}
@Override
public void visitLookupSwitchInsn(final Label arg0, final int[] arg1,
final Label[] arg2) {
}
@Override
public void visitMaxs(final int arg0, final int arg1) {
}
@Override
public void visitMethodInsn(final int arg0, final String arg1,
final String arg2, final String arg3) {
}
@Override
public void visitMultiANewArrayInsn(final String arg0, final int arg1) {
}
@Override
public AnnotationVisitor visitParameterAnnotation(final int arg0,
final String arg1, final boolean arg2) {
return new NullAnnotationVisitor();
}
@Override
public void visitTableSwitchInsn(final int arg0, final int arg1,
final Label arg2, final Label... labels) {
}
@Override
public void visitTryCatchBlock(final Label arg0, final Label arg1,
final Label arg2, final String arg3) {
}
@Override
public void visitTypeInsn(final int arg0, final String arg1) {
}
@Override
public void visitVarInsn(final int arg0, final int arg1) {
}
};
@Override
public void visit(final int arg0, final int arg1, final String arg2,
final String arg3, final String arg4, final String[] arg5) {
}
@Override
public AnnotationVisitor visitAnnotation(final String arg0, final boolean arg1) {
return new NullAnnotationVisitor();
}
@Override
public void visitAttribute(final Attribute arg0) {
}
@Override
public void visitEnd() {
}
@Override
public FieldVisitor visitField(final int arg0, final String arg1,
final String arg2, final String arg3, final Object arg4) {
return new FieldVisitor(Opcodes.ASM5) {
@Override
public AnnotationVisitor visitAnnotation(final String arg0,
final boolean arg1) {
return new NullAnnotationVisitor();
}
@Override
public void visitAttribute(final Attribute arg0) {
}
@Override
public void visitEnd() {
}
};
}
@Override
public void visitInnerClass(final String arg0, final String arg1,
final String arg2, final int arg3) {
}
@Override
public MethodVisitor visitMethod(final int arg0, final String arg1,
final String arg2, final String arg3, final String[] arg4) {
return new NullMethodVisitor();
}
@Override
public void visitOuterClass(final String arg0, final String arg1,
final String arg2) {
}
@Override
public void visitSource(final String arg0, final String arg1) {
}
}