diff options
Diffstat (limited to 'src/proguard/classfile/editor/NamedAttributeDeleter.java')
-rw-r--r-- | src/proguard/classfile/editor/NamedAttributeDeleter.java | 36 |
1 files changed, 32 insertions, 4 deletions
diff --git a/src/proguard/classfile/editor/NamedAttributeDeleter.java b/src/proguard/classfile/editor/NamedAttributeDeleter.java index 6aa5cdf..c02ba84 100644 --- a/src/proguard/classfile/editor/NamedAttributeDeleter.java +++ b/src/proguard/classfile/editor/NamedAttributeDeleter.java @@ -2,7 +2,7 @@ * ProGuard -- shrinking, optimization, obfuscation, and preverification * of Java bytecode. * - * Copyright (c) 2002-2013 Eric Lafortune (eric@graphics.cornell.edu) + * Copyright (c) 2002-2014 Eric Lafortune (eric@graphics.cornell.edu) * * This program is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License as published by the Free @@ -21,17 +21,23 @@ package proguard.classfile.editor; import proguard.classfile.*; +import proguard.classfile.attribute.*; +import proguard.classfile.attribute.visitor.AttributeVisitor; +import proguard.classfile.util.SimplifiedVisitor; import proguard.classfile.visitor.*; -import proguard.util.StringMatcher; /** * This ClassVisitor deletes attributes with a given name in the program - * classes that it visits. + * classes, fields, methods, or code attributes that it visits. * * @author Eric Lafortune */ -public class NamedAttributeDeleter implements ClassVisitor +public class NamedAttributeDeleter +extends SimplifiedVisitor +implements ClassVisitor, + MemberVisitor, + AttributeVisitor { private final String attributeName; @@ -51,4 +57,26 @@ public class NamedAttributeDeleter implements ClassVisitor { new AttributesEditor(programClass, false).deleteAttribute(attributeName); } + + + // Implementations for MemberVisitor. + + public void visitLibraryMember(LibraryClass libraryClass, LibraryMember libraryMember) {} + + + public void visitProgramMember(ProgramClass programClass, ProgramMember programMember) + { + new AttributesEditor(programClass, programMember, false).deleteAttribute(attributeName); + } + + + // Implementations for AttributeVisitor. + + public void visitAnyAttribute(Clazz clazz, Attribute attribute) {} + + + public void visitCodeAttribute(Clazz clazz, Method method, CodeAttribute codeAttribute) + { + new AttributesEditor((ProgramClass)clazz, (ProgramMember)method, codeAttribute, false).deleteAttribute(attributeName); + } }
\ No newline at end of file |