Package jadx.core.dex.visitors
Class EnumVisitor
java.lang.Object
jadx.core.dex.visitors.AbstractVisitor
jadx.core.dex.visitors.EnumVisitor
- All Implemented Interfaces:
IDexTreeVisitor
-
Nested Class Summary
Nested Classes -
Field Summary
FieldsModifier and TypeFieldDescriptionprivate MethodInfoprivate static final Stringprivate MethodInfo -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionprivate @Nullable ConstructorInsncastConstructorInsn(InsnNode coCandidate) private static FieldInfocheckExternalRegUsage(EnumVisitor.EnumData data, RegisterArg reg) private booleanconvertToEnum(ClassNode cls) private EnumClassAttr.EnumFieldcreateEnumFieldByConstructor(EnumVisitor.EnumData data, FieldNode enumFieldNode, ConstructorInsn co) private FieldNodecreateFakeField(ClassNode cls, String name) private List<EnumClassAttr.EnumField> extractEnumFieldsFromFilledArray(EnumVisitor.EnumData enumData, InsnNode arrFillInsn) private @Nullable List<EnumClassAttr.EnumField> extractEnumFieldsFromInsn(EnumVisitor.EnumData enumData, InsnNode wrappedInsn) private List<EnumClassAttr.EnumField> extractEnumFieldsFromInvoke(EnumVisitor.EnumData enumData, InvokeNode invokeNode) private static voidfixAccessFlags(ClassNode cls) private voidfixValuesAccess(MethodNode mth, FieldInfo valuesFieldInfo, ArgType clsType, @Nullable MethodNode valuesMethod) private ConstructorInsngetConstructorInsn(InsnNode insn) private StringgetConstString(RootNode root, InsnArg arg) getName()Visitor short idprivate MethodInfogetValueMthInfo(RootNode root, ArgType clsType) private BlockInsnPairvoidCalled after loading dex tree, but before visitor traversal.private ConstructorInsnprivate booleanisDefaultConstructor(MethodNode mth, String shortId) private booleanisValuesMethod(MethodNode mth, ArgType clsType) private voidprivate voidprocessConstructorInsn(EnumVisitor.EnumData data, EnumClassAttr.EnumField enumField, MethodNode classInitMth) private static voidprocessEnumCls(ClassNode cls, EnumClassAttr.EnumField field, ClassNode innerCls) private @Nullable EnumClassAttr.EnumFieldprocessEnumFieldByField(EnumVisitor.EnumData data, InsnNode sgetInsn) private @Nullable EnumClassAttr.EnumFieldprivate EnumClassAttr.EnumFieldprocessEnumFieldByWrappedInsn(EnumVisitor.EnumData data, InsnNode wrappedInsn) private voidremoveEnumMethods(ClassNode cls, FieldNode valuesField) private @Nullable FieldNodesearchEnumField(EnumVisitor.EnumData data, SSAVar ssaVar) private @Nullable ConstructorInsnsearchEnumSuperCtrInsn(MethodNode ctrMth) private @Nullable InsnNodesearchFieldPutInsn(EnumVisitor.EnumData data, FieldNode enumFieldNode) private booleanSearch "$VALUES" field (holds all enum values)private booleansimpleValueOfMth(MethodNode mth, ArgType clsType) booleanVisit classMethods inherited from class jadx.core.dex.visitors.AbstractVisitor
toString, visit
-
Field Details
-
ENUM_SUPER_CONSTRUCTOR_ID
- See Also:
-
enumValueOfMth
-
cloneMth
-
-
Constructor Details
-
EnumVisitor
public EnumVisitor()
-
-
Method Details
-
init
Description copied from interface:IDexTreeVisitorCalled after loading dex tree, but before visitor traversal.- Specified by:
initin interfaceIDexTreeVisitor- Overrides:
initin classAbstractVisitor
-
visit
Description copied from interface:IDexTreeVisitorVisit class- Specified by:
visitin interfaceIDexTreeVisitor- Overrides:
visitin classAbstractVisitor- Returns:
- false for disable child methods and inner classes traversal
- Throws:
JadxException
-
convertToEnum
-
fixAccessFlags
-
searchValuesField
Search "$VALUES" field (holds all enum values) -
processConstructorInsn
private void processConstructorInsn(EnumVisitor.EnumData data, EnumClassAttr.EnumField enumField, MethodNode classInitMth) -
extractEnumFieldsFromInsn
@Nullable private @Nullable List<EnumClassAttr.EnumField> extractEnumFieldsFromInsn(EnumVisitor.EnumData enumData, InsnNode wrappedInsn) -
extractEnumFieldsFromInvoke
private List<EnumClassAttr.EnumField> extractEnumFieldsFromInvoke(EnumVisitor.EnumData enumData, InvokeNode invokeNode) -
getValuesInitInsn
-
extractEnumFieldsFromFilledArray
private List<EnumClassAttr.EnumField> extractEnumFieldsFromFilledArray(EnumVisitor.EnumData enumData, InsnNode arrFillInsn) -
processEnumFieldByWrappedInsn
private EnumClassAttr.EnumField processEnumFieldByWrappedInsn(EnumVisitor.EnumData data, InsnNode wrappedInsn) -
processEnumFieldByField
@Nullable private @Nullable EnumClassAttr.EnumField processEnumFieldByField(EnumVisitor.EnumData data, InsnNode sgetInsn) -
processEnumFieldByRegister
@Nullable private @Nullable EnumClassAttr.EnumField processEnumFieldByRegister(EnumVisitor.EnumData data, RegisterArg arg) -
createFakeField
-
searchEnumField
-
createEnumFieldByConstructor
private EnumClassAttr.EnumField createEnumFieldByConstructor(EnumVisitor.EnumData data, FieldNode enumFieldNode, ConstructorInsn co) -
searchEnumSuperCtrInsn
-
inlineExternalRegs
-
checkExternalRegUsage
-
searchFieldPutInsn
@Nullable private @Nullable InsnNode searchFieldPutInsn(EnumVisitor.EnumData data, FieldNode enumFieldNode) -
removeEnumMethods
-
markArgsForSkip
-
isDefaultConstructor
-
isValuesMethod
-
simpleValueOfMth
-
fixValuesAccess
private void fixValuesAccess(MethodNode mth, FieldInfo valuesFieldInfo, ArgType clsType, @Nullable @Nullable MethodNode valuesMethod) -
getValueMthInfo
-
processEnumCls
private static void processEnumCls(ClassNode cls, EnumClassAttr.EnumField field, ClassNode innerCls) -
getConstructorInsn
-
castConstructorInsn
-
getConstString
-
getName
Description copied from interface:IDexTreeVisitorVisitor short id- Specified by:
getNamein interfaceIDexTreeVisitor- Overrides:
getNamein classAbstractVisitor
-