Package proguard.classfile.editor
Class MethodCopier
java.lang.Object
proguard.classfile.editor.MethodCopier
- All Implemented Interfaces:
AttributeVisitor,ClassVisitor,MemberVisitor
This
ClassVisitor copies a method into a target class. It first checks if a method with
the same name and descriptor as the method to be copied already exists in the target class. If
that is indeed the case, this visitor is a no-op. This visitor optionally uses a name transformer
function to apply to the original method's name before copying. If no name transformer function
is provided, the original method's name is used, instead. If the method to be copied is indeed
copied into the target class, this visitor passes the resulting method to an extra member
visitor, if provided.-
Constructor Summary
ConstructorsConstructorDescriptionMethodCopier(ProgramClass sourceClass, ProgramMethod sourceMethod) MethodCopier(ProgramClass sourceClass, ProgramMethod sourceMethod, StringFunction nameTransformer) MethodCopier(ProgramClass sourceClass, ProgramMethod sourceMethod, StringFunction nameTransformer, MemberVisitor extraMemberVisitor) -
Method Summary
Modifier and TypeMethodDescriptionvoidvisitAnyAttribute(Clazz clazz, Attribute attribute) Visits any Attribute instance.voidvisitAnyClass(Clazz clazz) Visits any Clazz instance.voidvisitAnyMember(Clazz clazz, Member member) Visits any Member instance.voidvisitCodeAttribute(Clazz clazz, Method method, CodeAttribute codeAttribute) voidvisitProgramClass(ProgramClass programClass) voidvisitProgramMethod(ProgramClass programClass, ProgramMethod programMethod) Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitMethods inherited from interface proguard.classfile.attribute.visitor.AttributeVisitor
visitAnnotationDefaultAttribute, visitAnyAnnotationsAttribute, visitAnyParameterAnnotationsAttribute, visitAnyTypeAnnotationsAttribute, visitBootstrapMethodsAttribute, visitConstantValueAttribute, visitDeprecatedAttribute, visitDeprecatedAttribute, visitDeprecatedAttribute, visitDeprecatedAttribute, visitEnclosingMethodAttribute, visitExceptionsAttribute, visitInnerClassesAttribute, visitLineNumberTableAttribute, visitLocalVariableTableAttribute, visitLocalVariableTypeTableAttribute, visitMethodParametersAttribute, visitModuleAttribute, visitModuleMainClassAttribute, visitModulePackagesAttribute, visitNestHostAttribute, visitNestMembersAttribute, visitPermittedSubclassesAttribute, visitRecordAttribute, visitRuntimeInvisibleAnnotationsAttribute, visitRuntimeInvisibleAnnotationsAttribute, visitRuntimeInvisibleAnnotationsAttribute, visitRuntimeInvisibleAnnotationsAttribute, visitRuntimeInvisibleAnnotationsAttribute, visitRuntimeInvisibleParameterAnnotationsAttribute, visitRuntimeInvisibleTypeAnnotationsAttribute, visitRuntimeInvisibleTypeAnnotationsAttribute, visitRuntimeInvisibleTypeAnnotationsAttribute, visitRuntimeInvisibleTypeAnnotationsAttribute, visitRuntimeInvisibleTypeAnnotationsAttribute, visitRuntimeInvisibleTypeAnnotationsAttribute, visitRuntimeVisibleAnnotationsAttribute, visitRuntimeVisibleAnnotationsAttribute, visitRuntimeVisibleAnnotationsAttribute, visitRuntimeVisibleAnnotationsAttribute, visitRuntimeVisibleAnnotationsAttribute, visitRuntimeVisibleParameterAnnotationsAttribute, visitRuntimeVisibleTypeAnnotationsAttribute, visitRuntimeVisibleTypeAnnotationsAttribute, visitRuntimeVisibleTypeAnnotationsAttribute, visitRuntimeVisibleTypeAnnotationsAttribute, visitRuntimeVisibleTypeAnnotationsAttribute, visitRuntimeVisibleTypeAnnotationsAttribute, visitSignatureAttribute, visitSignatureAttribute, visitSignatureAttribute, visitSignatureAttribute, visitSignatureAttribute, visitSourceDebugExtensionAttribute, visitSourceDirAttribute, visitSourceFileAttribute, visitStackMapAttribute, visitStackMapTableAttribute, visitSyntheticAttribute, visitSyntheticAttribute, visitSyntheticAttribute, visitSyntheticAttribute, visitUnknownAttributeMethods inherited from interface proguard.classfile.visitor.ClassVisitor
visitLibraryClassMethods inherited from interface proguard.classfile.visitor.MemberVisitor
visitLibraryField, visitLibraryMember, visitLibraryMethod, visitProgramField, visitProgramMember
-
Constructor Details
-
MethodCopier
-
MethodCopier
public MethodCopier(ProgramClass sourceClass, ProgramMethod sourceMethod, StringFunction nameTransformer) -
MethodCopier
public MethodCopier(ProgramClass sourceClass, ProgramMethod sourceMethod, StringFunction nameTransformer, MemberVisitor extraMemberVisitor)
-
-
Method Details
-
visitAnyClass
Description copied from interface:ClassVisitorVisits any Clazz instance. The more specific default implementations of this interface delegate to this method.- Specified by:
visitAnyClassin interfaceClassVisitor
-
visitProgramClass
- Specified by:
visitProgramClassin interfaceClassVisitor
-
visitAnyMember
Description copied from interface:MemberVisitorVisits any Member instance. The more specific default implementations of this interface delegate to this method.- Specified by:
visitAnyMemberin interfaceMemberVisitor
-
visitProgramMethod
- Specified by:
visitProgramMethodin interfaceMemberVisitor
-
visitAnyAttribute
Description copied from interface:AttributeVisitorVisits any Attribute instance. The more specific default implementations of this interface delegate to this method.- Specified by:
visitAnyAttributein interfaceAttributeVisitor
-
visitCodeAttribute
- Specified by:
visitCodeAttributein interfaceAttributeVisitor
-