From e61db22ca3637ad8330534838324e29530d31384 Mon Sep 17 00:00:00 2001 From: Max Gurela Date: Sat, 15 Oct 2016 06:44:37 -0700 Subject: 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 --- .../cuchaz/enigma/bytecode/LocalVariableRenamer.java | 20 +++++++++++++++----- 1 file 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 @@ ******************************************************************************/ package cuchaz.enigma.bytecode; -import cuchaz.enigma.mapping.ArgumentEntry; -import cuchaz.enigma.mapping.BehaviorEntry; -import cuchaz.enigma.mapping.EntryFactory; -import cuchaz.enigma.mapping.Translator; +import cuchaz.enigma.mapping.*; import javassist.CtBehavior; import javassist.CtClass; import javassist.bytecode.*; @@ -83,7 +80,20 @@ public class LocalVariableRenamer { int argi = i - starti; String argName = this.translator.translate(new ArgumentEntry(behaviorEntry, argi, "")); if (argName == null) { - argName = "a" + (argi + 1); + Type argType = behaviorEntry.getSignature().getArgumentTypes().get(argi); + // Unfortunately each of these have different name getters, so they have different code paths + if (argType.isPrimitive()) { + Type.Primitive argCls = argType.getPrimitive(); + argName = "a" + argCls.name() + (argi + 1); + } else if (argType.isArray()) { + // List types would require this whole block again, so just go with aListx + argName = "aList" + (argi + 1); + } else if (argType.isClass()) { + ClassEntry argClsTrans = this.translator.translateEntry(argType.getClassEntry()); + argName = "a" + argClsTrans.getSimpleName().replace("$", "") + (argi + 1); + } else { + argName = "a" + (argi + 1); + } } renameVariable(table, i, constants.addUtf8Info(argName)); } -- cgit v1.2.3