summaryrefslogtreecommitdiff
path: root/src/cuchaz/enigma/mapping/Mappings.java
diff options
context:
space:
mode:
authorGravatar jeff2015-03-16 12:29:17 -0400
committerGravatar jeff2015-03-16 12:29:17 -0400
commitc133e05b786ff5357931842581571c046f958c74 (patch)
tree9fc998ac7b85828f3b57f04600244c6a79b2b2e8 /src/cuchaz/enigma/mapping/Mappings.java
parentAdded tag v0.9 beta for changeset 856528c00d1c (diff)
downloadenigma-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.java28
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;
13import java.io.Serializable; 13import java.io.Serializable;
14import java.util.ArrayList; 14import java.util.ArrayList;
15import java.util.Collection; 15import java.util.Collection;
16import java.util.List;
16import java.util.Map; 17import java.util.Map;
17import java.util.Set; 18import java.util.Set;
18 19
20import com.beust.jcommander.internal.Lists;
19import com.google.common.collect.Maps; 21import com.google.common.collect.Maps;
20import com.google.common.collect.Sets; 22import 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}