Class SwitchEnumRewriter
- java.lang.Object
-
- org.benf.cfr.reader.bytecode.analysis.opgraph.op4rewriters.SwitchEnumRewriter
-
- All Implemented Interfaces:
Op04Rewriter
public class SwitchEnumRewriter extends java.lang.Object implements Op04Rewriter
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description private static class
SwitchEnumRewriter.EclipseVarResultCollector
private static class
SwitchEnumRewriter.SwitchEnumMatchResultCollector
private class
SwitchEnumRewriter.SwitchForeignEnumMatchResultCollector
-
Field Summary
Fields Modifier and Type Field Description private BlockIdentifierFactory
blockIdentifierFactory
private ClassFile
classFile
private ClassFileVersion
classFileVersion
private DCCommonState
dcCommonState
private static JavaTypeInstance
expectedLUTType
-
Constructor Summary
Constructors Constructor Description SwitchEnumRewriter(DCCommonState dcCommonState, ClassFile classFile, BlockIdentifierFactory blockIdentifierFactory)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description private KleeneStar
getEnumSugarKleeneStar(LValue lookupTable, Expression enumObject, WildcardMatch wcm)
private java.lang.Integer
getIntegerFromLiteralExpression(Expression exp)
private java.util.List<StructuredStatement>
getLookupMethodStatements(Method lutStaticInit)
private boolean
replaceIndexedSwitch(SwitchEnumRewriter.SwitchEnumMatchResultCollector mrc, boolean expression, Expression enumObject, SwitchEnumRewriter.SwitchForeignEnumMatchResultCollector matchResultCollector)
void
rewrite(Op04StructuredStatement root)
private void
tryRewrite(SwitchEnumRewriter.SwitchEnumMatchResultCollector mrc, boolean expression)
private void
tryRewriteEclipse(SwitchEnumRewriter.SwitchEnumMatchResultCollector mrc, StaticFunctionInvokation lookupFn, boolean expression)
private void
tryRewriteJavac(SwitchEnumRewriter.SwitchEnumMatchResultCollector mrc, LValue lookupTable, boolean expression)
-
-
-
Field Detail
-
dcCommonState
private final DCCommonState dcCommonState
-
classFile
private final ClassFile classFile
-
classFileVersion
private final ClassFileVersion classFileVersion
-
blockIdentifierFactory
private final BlockIdentifierFactory blockIdentifierFactory
-
expectedLUTType
private static final JavaTypeInstance expectedLUTType
-
-
Constructor Detail
-
SwitchEnumRewriter
public SwitchEnumRewriter(DCCommonState dcCommonState, ClassFile classFile, BlockIdentifierFactory blockIdentifierFactory)
-
-
Method Detail
-
rewrite
public void rewrite(Op04StructuredStatement root)
- Specified by:
rewrite
in interfaceOp04Rewriter
-
tryRewrite
private void tryRewrite(SwitchEnumRewriter.SwitchEnumMatchResultCollector mrc, boolean expression)
-
tryRewriteEclipse
private void tryRewriteEclipse(SwitchEnumRewriter.SwitchEnumMatchResultCollector mrc, StaticFunctionInvokation lookupFn, boolean expression)
-
tryRewriteJavac
private void tryRewriteJavac(SwitchEnumRewriter.SwitchEnumMatchResultCollector mrc, LValue lookupTable, boolean expression)
-
replaceIndexedSwitch
private boolean replaceIndexedSwitch(SwitchEnumRewriter.SwitchEnumMatchResultCollector mrc, boolean expression, Expression enumObject, SwitchEnumRewriter.SwitchForeignEnumMatchResultCollector matchResultCollector)
-
getEnumSugarKleeneStar
private KleeneStar getEnumSugarKleeneStar(LValue lookupTable, Expression enumObject, WildcardMatch wcm)
-
getLookupMethodStatements
private java.util.List<StructuredStatement> getLookupMethodStatements(Method lutStaticInit)
-
getIntegerFromLiteralExpression
private java.lang.Integer getIntegerFromLiteralExpression(Expression exp)
-
-