proguard.optimize.peephole
Class HorizontalClassMerger

java.lang.Object
  extended by proguard.classfile.util.SimplifiedVisitor
      extended by proguard.optimize.peephole.HorizontalClassMerger
All Implemented Interfaces:
ClassVisitor

public class HorizontalClassMerger
extends SimplifiedVisitor
implements ClassVisitor

This ClassVisitor inlines siblings in the program classes that it visits, whenever possible.

See Also:
ClassMerger

Constructor Summary
HorizontalClassMerger(boolean allowAccessModification, boolean mergeInterfacesAggressively)
          Creates a new HorizontalClassMerger.
HorizontalClassMerger(boolean allowAccessModification, boolean mergeInterfacesAggressively, ClassVisitor extraClassVisitor)
          Creates a new VerticalClassMerger.
 
Method Summary
 void visitProgramClass(ProgramClass programClass)
           
 
Methods inherited from class proguard.classfile.util.SimplifiedVisitor
visitAnnotation, visitAnnotation, visitAnnotation, visitAnnotation, visitAnnotation, visitAnnotationDefaultAttribute, visitAnnotationElementValue, visitAnyAnnotationsAttribute, visitAnyAttribute, visitAnyClass, visitAnyConstant, visitAnyElementValue, visitAnyInstruction, visitAnyMember, visitAnyMethodrefConstant, visitAnyParameterAnnotationsAttribute, visitAnyRefConstant, visitAnyStackMapFrame, visitAnySwitchInstruction, visitAnyVerificationType, visitArrayElementValue, visitBranchInstruction, visitClassConstant, visitClassElementValue, visitCodeAttribute, visitConstantElementValue, visitConstantInstruction, visitConstantValueAttribute, visitDeprecatedAttribute, visitDeprecatedAttribute, visitDeprecatedAttribute, visitDeprecatedAttribute, visitDoubleConstant, visitDoubleType, visitEnclosingMethodAttribute, visitEnumConstantElementValue, visitExceptionsAttribute, visitFieldrefConstant, visitFloatConstant, visitFloatType, visitFullFrame, visitInnerClassesAttribute, visitIntegerConstant, visitIntegerType, visitInterfaceMethodrefConstant, visitLessZeroFrame, visitLibraryClass, visitLibraryField, visitLibraryMember, visitLibraryMethod, visitLineNumberTableAttribute, visitLocalVariableTableAttribute, visitLocalVariableTypeTableAttribute, visitLongConstant, visitLongType, visitLookUpSwitchInstruction, visitMethodrefConstant, visitMoreZeroFrame, visitNameAndTypeConstant, visitNullType, visitObjectType, visitProgramField, visitProgramMember, visitProgramMethod, visitRuntimeInvisibleAnnotationsAttribute, visitRuntimeInvisibleAnnotationsAttribute, visitRuntimeInvisibleAnnotationsAttribute, visitRuntimeInvisibleAnnotationsAttribute, visitRuntimeInvisibleParameterAnnotationsAttribute, visitRuntimeVisibleAnnotationsAttribute, visitRuntimeVisibleAnnotationsAttribute, visitRuntimeVisibleAnnotationsAttribute, visitRuntimeVisibleAnnotationsAttribute, visitRuntimeVisibleParameterAnnotationsAttribute, visitSameOneFrame, visitSameZeroFrame, visitSignatureAttribute, visitSignatureAttribute, visitSignatureAttribute, visitSignatureAttribute, visitSimpleInstruction, visitSourceDirAttribute, visitSourceFileAttribute, visitStackDoubleType, visitStackFloatType, visitStackIntegerType, visitStackLongType, visitStackMapAttribute, visitStackMapTableAttribute, visitStackNullType, visitStackObjectType, visitStackTopType, visitStackUninitializedThisType, visitStackUninitializedType, visitStringConstant, visitSyntheticAttribute, visitSyntheticAttribute, visitSyntheticAttribute, visitSyntheticAttribute, visitTableSwitchInstruction, visitTopType, visitUninitializedThisType, visitUninitializedType, visitUnknownAttribute, visitUtf8Constant, visitVariableInstruction, visitVariablesDoubleType, visitVariablesFloatType, visitVariablesIntegerType, visitVariablesLongType, visitVariablesNullType, visitVariablesObjectType, visitVariablesTopType, visitVariablesUninitializedThisType, visitVariablesUninitializedType
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 
Methods inherited from interface proguard.classfile.visitor.ClassVisitor
visitLibraryClass
 

Constructor Detail

HorizontalClassMerger

public HorizontalClassMerger(boolean allowAccessModification,
                             boolean mergeInterfacesAggressively)
Creates a new HorizontalClassMerger.

Parameters:
allowAccessModification - specifies whether the access modifiers of classes can be changed in order to merge them.
mergeInterfacesAggressively - specifies whether interfaces may be merged aggressively.

HorizontalClassMerger

public HorizontalClassMerger(boolean allowAccessModification,
                             boolean mergeInterfacesAggressively,
                             ClassVisitor extraClassVisitor)
Creates a new VerticalClassMerger.

Parameters:
allowAccessModification - specifies whether the access modifiers of classes can be changed in order to merge them.
mergeInterfacesAggressively - specifies whether interfaces may be merged aggressively.
extraClassVisitor - an optional extra visitor for all merged classes.
Method Detail

visitProgramClass

public void visitProgramClass(ProgramClass programClass)
Specified by:
visitProgramClass in interface ClassVisitor
Overrides:
visitProgramClass in class SimplifiedVisitor