diff options
| author | 2015-03-16 12:29:17 -0400 | |
|---|---|---|
| committer | 2015-03-16 12:29:17 -0400 | |
| commit | c133e05b786ff5357931842581571c046f958c74 (patch) | |
| tree | 9fc998ac7b85828f3b57f04600244c6a79b2b2e8 /src/cuchaz/enigma/mapping/Mappings.java | |
| parent | Added tag v0.9 beta for changeset 856528c00d1c (diff) | |
| download | enigma-fork-c133e05b786ff5357931842581571c046f958c74.tar.gz enigma-fork-c133e05b786ff5357931842581571c046f958c74.tar.xz enigma-fork-c133e05b786ff5357931842581571c046f958c74.zip | |
fix a zillion issues with inner classes
Diffstat (limited to 'src/cuchaz/enigma/mapping/Mappings.java')
| -rw-r--r-- | src/cuchaz/enigma/mapping/Mappings.java | 28 |
1 files changed, 28 insertions, 0 deletions
diff --git a/src/cuchaz/enigma/mapping/Mappings.java b/src/cuchaz/enigma/mapping/Mappings.java index a85bcbf..659d23a 100644 --- a/src/cuchaz/enigma/mapping/Mappings.java +++ b/src/cuchaz/enigma/mapping/Mappings.java | |||
| @@ -13,9 +13,11 @@ package cuchaz.enigma.mapping; | |||
| 13 | import java.io.Serializable; | 13 | import java.io.Serializable; |
| 14 | import java.util.ArrayList; | 14 | import java.util.ArrayList; |
| 15 | import java.util.Collection; | 15 | import java.util.Collection; |
| 16 | import java.util.List; | ||
| 16 | import java.util.Map; | 17 | import java.util.Map; |
| 17 | import java.util.Set; | 18 | import java.util.Set; |
| 18 | 19 | ||
| 20 | import com.beust.jcommander.internal.Lists; | ||
| 19 | import com.google.common.collect.Maps; | 21 | import com.google.common.collect.Maps; |
| 20 | import com.google.common.collect.Sets; | 22 | import com.google.common.collect.Sets; |
| 21 | 23 | ||
| @@ -89,6 +91,18 @@ public class Mappings implements Serializable { | |||
| 89 | return m_classesByDeobf.get(deobfName); | 91 | return m_classesByDeobf.get(deobfName); |
| 90 | } | 92 | } |
| 91 | 93 | ||
| 94 | public void setClassDeobfName(ClassMapping classMapping, String deobfName) { | ||
| 95 | if (classMapping.getDeobfName() != null) { | ||
| 96 | boolean wasRemoved = m_classesByDeobf.remove(classMapping.getDeobfName()) != null; | ||
| 97 | assert (wasRemoved); | ||
| 98 | } | ||
| 99 | classMapping.setDeobfName(deobfName); | ||
| 100 | if (deobfName != null) { | ||
| 101 | boolean wasAdded = m_classesByDeobf.put(deobfName, classMapping) == null; | ||
| 102 | assert (wasAdded); | ||
| 103 | } | ||
| 104 | } | ||
| 105 | |||
| 92 | public Translator getTranslator(TranslationDirection direction, TranslationIndex index) { | 106 | public Translator getTranslator(TranslationDirection direction, TranslationIndex index) { |
| 93 | switch (direction) { | 107 | switch (direction) { |
| 94 | case Deobfuscating: | 108 | case Deobfuscating: |
| @@ -185,4 +199,18 @@ public class Mappings implements Serializable { | |||
| 185 | } | 199 | } |
| 186 | return false; | 200 | return false; |
| 187 | } | 201 | } |
| 202 | |||
| 203 | public List<ClassMapping> getClassMappingChain(ClassEntry obfClass) { | ||
| 204 | List<ClassMapping> mappingChain = Lists.newArrayList(); | ||
| 205 | ClassMapping classMapping = null; | ||
| 206 | for (ClassEntry obfClassEntry : obfClass.getClassChain()) { | ||
| 207 | if (mappingChain.isEmpty()) { | ||
| 208 | classMapping = m_classesByObf.get(obfClassEntry.getName()); | ||
| 209 | } else if (classMapping != null) { | ||
| 210 | classMapping = classMapping.getInnerClassByObfSimple(obfClassEntry.getInnermostClassName()); | ||
| 211 | } | ||
| 212 | mappingChain.add(classMapping); | ||
| 213 | } | ||
| 214 | return mappingChain; | ||
| 215 | } | ||
| 188 | } | 216 | } |