summaryrefslogtreecommitdiff
path: root/src/main/java
diff options
context:
space:
mode:
authorGravatar Max Gurela2016-10-15 06:44:37 -0700
committerGravatar Thomas Guillemard2016-10-15 15:44:37 +0200
commite61db22ca3637ad8330534838324e29530d31384 (patch)
treecdb96d320d44039519807386bef6909b16aab851 /src/main/java
parentAllow renaming method arguments where they're used (Fix #32) (diff)
downloadenigma-e61db22ca3637ad8330534838324e29530d31384.tar.gz
enigma-e61db22ca3637ad8330534838324e29530d31384.tar.xz
enigma-e61db22ca3637ad8330534838324e29530d31384.zip
Change method param default naming scheme (Close #42)
Improves visual grepping for any arguments greatly, works well with game objects as well as java primitives. * Add translator for game classes
Diffstat (limited to 'src/main/java')
-rw-r--r--src/main/java/cuchaz/enigma/bytecode/LocalVariableRenamer.java20
1 files changed, 15 insertions, 5 deletions
diff --git a/src/main/java/cuchaz/enigma/bytecode/LocalVariableRenamer.java b/src/main/java/cuchaz/enigma/bytecode/LocalVariableRenamer.java
index 8edea16e..3f4b96f9 100644
--- a/src/main/java/cuchaz/enigma/bytecode/LocalVariableRenamer.java
+++ b/src/main/java/cuchaz/enigma/bytecode/LocalVariableRenamer.java
@@ -10,10 +10,7 @@
10 ******************************************************************************/ 10 ******************************************************************************/
11package cuchaz.enigma.bytecode; 11package cuchaz.enigma.bytecode;
12 12
13import cuchaz.enigma.mapping.ArgumentEntry; 13import cuchaz.enigma.mapping.*;
14import cuchaz.enigma.mapping.BehaviorEntry;
15import cuchaz.enigma.mapping.EntryFactory;
16import cuchaz.enigma.mapping.Translator;
17import javassist.CtBehavior; 14import javassist.CtBehavior;
18import javassist.CtClass; 15import javassist.CtClass;
19import javassist.bytecode.*; 16import javassist.bytecode.*;
@@ -83,7 +80,20 @@ public class LocalVariableRenamer {
83 int argi = i - starti; 80 int argi = i - starti;
84 String argName = this.translator.translate(new ArgumentEntry(behaviorEntry, argi, "")); 81 String argName = this.translator.translate(new ArgumentEntry(behaviorEntry, argi, ""));
85 if (argName == null) { 82 if (argName == null) {
86 argName = "a" + (argi + 1); 83 Type argType = behaviorEntry.getSignature().getArgumentTypes().get(argi);
84 // Unfortunately each of these have different name getters, so they have different code paths
85 if (argType.isPrimitive()) {
86 Type.Primitive argCls = argType.getPrimitive();
87 argName = "a" + argCls.name() + (argi + 1);
88 } else if (argType.isArray()) {
89 // List types would require this whole block again, so just go with aListx
90 argName = "aList" + (argi + 1);
91 } else if (argType.isClass()) {
92 ClassEntry argClsTrans = this.translator.translateEntry(argType.getClassEntry());
93 argName = "a" + argClsTrans.getSimpleName().replace("$", "") + (argi + 1);
94 } else {
95 argName = "a" + (argi + 1);
96 }
87 } 97 }
88 renameVariable(table, i, constants.addUtf8Info(argName)); 98 renameVariable(table, i, constants.addUtf8Info(argName));
89 } 99 }