001 package net.sourceforge.retroweaver; 002 003 import org.objectweb.asm.ClassAdapter; 004 import org.objectweb.asm.ClassVisitor; 005 import org.objectweb.asm.FieldVisitor; 006 import org.objectweb.asm.Label; 007 import org.objectweb.asm.MethodAdapter; 008 import org.objectweb.asm.MethodVisitor; 009 010 public class SignatureStripper extends ClassAdapter { 011 012 public SignatureStripper(ClassVisitor cv) { 013 super(cv); 014 } 015 016 public void visit( 017 final int version, 018 final int access, 019 final String name, 020 final String signature, 021 final String superName, 022 final String[] interfaces) 023 { 024 super.visit(version, access, name, null, superName, interfaces); 025 } 026 027 public FieldVisitor visitField( 028 final int access, 029 final String name, 030 final String desc, 031 final String signature, 032 final Object value) 033 { 034 return super.visitField(access, name, desc, null, value); 035 } 036 037 public MethodVisitor visitMethod( 038 final int access, 039 final String name, 040 final String desc, 041 final String signature, 042 final String[] exceptions) 043 { 044 MethodVisitor mv = super.visitMethod(access, name, desc, null, exceptions); 045 return mv == null ? null : new MethodSignatureStripper(mv); 046 } 047 048 static class MethodSignatureStripper extends MethodAdapter { 049 MethodSignatureStripper(MethodVisitor mv) { 050 super(mv); 051 } 052 public void visitLocalVariable( 053 final String name, 054 final String desc, 055 final String signature, 056 final Label start, 057 final Label end, 058 final int index) 059 { 060 super.visitLocalVariable(name, desc, null, start, end, index); 061 } 062 063 } 064 065 }