diff options
| author | 2016-10-15 17:45:06 +0200 | |
|---|---|---|
| committer | 2016-10-15 17:45:06 +0200 | |
| commit | 53a35332e6120ba60b8089e1fa572aa3386227f2 (patch) | |
| tree | 928f00455326988a9877fece97bbc79e1c216024 /src/main/java | |
| parent | Fix #41 (diff) | |
| download | enigma-53a35332e6120ba60b8089e1fa572aa3386227f2.tar.gz enigma-53a35332e6120ba60b8089e1fa572aa3386227f2.tar.xz enigma-53a35332e6120ba60b8089e1fa572aa3386227f2.zip | |
Rewrite translate(ArgumentEntry in) logic (Fix #44)
Diffstat (limited to 'src/main/java')
| -rw-r--r-- | src/main/java/cuchaz/enigma/mapping/Translator.java | 27 |
1 files changed, 25 insertions, 2 deletions
diff --git a/src/main/java/cuchaz/enigma/mapping/Translator.java b/src/main/java/cuchaz/enigma/mapping/Translator.java index bebac4e1..b05714cc 100644 --- a/src/main/java/cuchaz/enigma/mapping/Translator.java +++ b/src/main/java/cuchaz/enigma/mapping/Translator.java | |||
| @@ -212,10 +212,33 @@ public class Translator { | |||
| 212 | } | 212 | } |
| 213 | 213 | ||
| 214 | // TODO: support not identical behavior (specific to constructor) | 214 | // TODO: support not identical behavior (specific to constructor) |
| 215 | public String translate(ArgumentEntry in) { | 215 | public String translate(ArgumentEntry in) |
| 216 | { | ||
| 217 | String classTranslate = translateArgument(in); | ||
| 216 | 218 | ||
| 219 | // Not found in this class | ||
| 220 | if (classTranslate == null) | ||
| 221 | { | ||
| 222 | List<ClassEntry> ancestry = this.index.getAncestry(in.getClassEntry()); | ||
| 223 | |||
| 224 | // Check in mother class for the arg | ||
| 225 | for (ClassEntry entry : ancestry) | ||
| 226 | { | ||
| 227 | ArgumentEntry motherArg = in.cloneToNewClass(entry); | ||
| 228 | if (this.index.entryExists(motherArg)) | ||
| 229 | { | ||
| 230 | String result = translateArgument(motherArg); | ||
| 231 | if (result != null) | ||
| 232 | return result; | ||
| 233 | } | ||
| 234 | } | ||
| 235 | } | ||
| 236 | return classTranslate; | ||
| 237 | } | ||
| 238 | |||
| 239 | public String translateArgument(ArgumentEntry in) { | ||
| 217 | // look for identical behavior in superclasses | 240 | // look for identical behavior in superclasses |
| 218 | ClassEntry entry = this.index.resolveEntryClass(in, true); | 241 | ClassEntry entry = in.getClassEntry(); |
| 219 | 242 | ||
| 220 | if (entry != null) | 243 | if (entry != null) |
| 221 | { | 244 | { |