diff options
| author | 2016-10-15 06:44:37 -0700 | |
|---|---|---|
| committer | 2016-10-15 15:44:37 +0200 | |
| commit | e61db22ca3637ad8330534838324e29530d31384 (patch) | |
| tree | cdb96d320d44039519807386bef6909b16aab851 | |
| parent | Allow renaming method arguments where they're used (Fix #32) (diff) | |
| download | enigma-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
| -rw-r--r-- | src/main/java/cuchaz/enigma/bytecode/LocalVariableRenamer.java | 20 |
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 | ******************************************************************************/ |
| 11 | package cuchaz.enigma.bytecode; | 11 | package cuchaz.enigma.bytecode; |
| 12 | 12 | ||
| 13 | import cuchaz.enigma.mapping.ArgumentEntry; | 13 | import cuchaz.enigma.mapping.*; |
| 14 | import cuchaz.enigma.mapping.BehaviorEntry; | ||
| 15 | import cuchaz.enigma.mapping.EntryFactory; | ||
| 16 | import cuchaz.enigma.mapping.Translator; | ||
| 17 | import javassist.CtBehavior; | 14 | import javassist.CtBehavior; |
| 18 | import javassist.CtClass; | 15 | import javassist.CtClass; |
| 19 | import javassist.bytecode.*; | 16 | import 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 | } |