From 5540c815de36e316d0749ce2163f12c61895b327 Mon Sep 17 00:00:00 2001 From: asiekierka Date: Wed, 17 Aug 2016 18:35:12 +0200 Subject: Revert "Removed unused methods" This reverts commit 1742190f784d0d62e7cc869eebafdfe1927e448f. --- src/main/java/cuchaz/enigma/mapping/Mappings.java | 44 +++++++++++++++++++++++ 1 file changed, 44 insertions(+) (limited to 'src/main/java/cuchaz/enigma/mapping/Mappings.java') diff --git a/src/main/java/cuchaz/enigma/mapping/Mappings.java b/src/main/java/cuchaz/enigma/mapping/Mappings.java index 538c67e..171ddf1 100644 --- a/src/main/java/cuchaz/enigma/mapping/Mappings.java +++ b/src/main/java/cuchaz/enigma/mapping/Mappings.java @@ -13,10 +13,13 @@ package cuchaz.enigma.mapping; import com.google.common.collect.Lists; import com.google.common.collect.Maps; +import java.util.ArrayList; import java.util.Collection; import java.util.List; import java.util.Map; +import java.util.Set; +import com.google.common.collect.Sets; import cuchaz.enigma.analysis.TranslationIndex; import cuchaz.enigma.throwables.MappingConflict; @@ -65,10 +68,23 @@ public class Mappings { } } + + public ClassMapping getClassByObf(ClassEntry entry) { + return getClassByObf(entry.getName()); + } + public ClassMapping getClassByObf(String obfName) { return this.classesByObf.get(obfName); } + public ClassMapping getClassByDeobf(ClassEntry entry) { + return getClassByDeobf(entry.getName()); + } + + public ClassMapping getClassByDeobf(String deobfName) { + return this.classesByDeobf.get(deobfName); + } + public void setClassDeobfName(ClassMapping classMapping, String deobfName) { if (classMapping.getDeobfName() != null) { boolean wasRemoved = this.classesByDeobf.remove(classMapping.getDeobfName()) != null; @@ -120,6 +136,34 @@ public class Mappings { return buf.toString(); } + public void renameObfClass(String oldObfName, String newObfName) { + new ArrayList<>(classes()).stream().filter(classMapping -> classMapping.renameObfClass(oldObfName, newObfName)).forEach(classMapping -> { + boolean wasRemoved = this.classesByObf.remove(oldObfName) != null; + assert (wasRemoved); + boolean wasAdded = this.classesByObf.put(newObfName, classMapping) == null; + assert (wasAdded); + }); + } + + public Set getAllObfClassNames() { + final Set classNames = Sets.newHashSet(); + for (ClassMapping classMapping : classes()) { + + // add the class name + classNames.add(classMapping.getObfFullName()); + + // add classes from method signatures + for (MethodMapping methodMapping : classMapping.methods()) { + for (Type type : methodMapping.getObfSignature().types()) { + if (type.hasClass()) { + classNames.add(type.getClassEntry().getClassName()); + } + } + } + } + return classNames; + } + public boolean containsDeobfClass(String deobfName) { return this.classesByDeobf.containsKey(deobfName); } -- cgit v1.2.3