1 21 package proguard.classfile.editor; 22 23 import proguard.classfile.*; 24 import proguard.classfile.util.SimplifiedVisitor; 25 import proguard.classfile.attribute.*; 26 import proguard.classfile.attribute.visitor.AttributeVisitor; 27 import proguard.classfile.visitor.*; 28 29 import java.util.*; 30 31 37 public class AttributeSorter 38 extends SimplifiedVisitor 39 implements ClassVisitor, MemberVisitor, AttributeVisitor, Comparator 40 { 41 43 public void visitProgramClass(ProgramClass programClass) 44 { 45 Arrays.sort(programClass.attributes, 0, programClass.u2attributesCount, this); 47 48 programClass.fieldsAccept(this); 50 programClass.methodsAccept(this); 51 } 52 53 54 56 public void visitProgramMember(ProgramClass programClass, ProgramMember programMember) 57 { 58 Arrays.sort(programMember.attributes, 0, programMember.u2attributesCount, this); 60 61 programMember.attributesAccept(programClass, this); 63 } 64 65 66 68 public void visitAnyAttribute(Clazz clazz, Attribute attribute) {} 69 70 71 public void visitCodeAttribute(Clazz clazz, Method method, CodeAttribute codeAttribute) 72 { 73 Arrays.sort(codeAttribute.attributes, 0, codeAttribute.u2attributesCount, this); 75 } 76 77 78 80 public int compare(Object object1, Object object2) 81 { 82 Attribute attribute1 = (Attribute)object1; 83 Attribute attribute2 = (Attribute)object2; 84 85 return attribute1.u2attributeNameIndex < attribute2.u2attributeNameIndex ? -1 : 86 attribute1.u2attributeNameIndex > attribute2.u2attributeNameIndex ? 1 : 87 0; 88 } 89 } 90 | Popular Tags |