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    }