summaryrefslogtreecommitdiff
path: root/src/main/java/cuchaz/enigma/analysis/EntryRenamer.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/cuchaz/enigma/analysis/EntryRenamer.java')
-rw-r--r--src/main/java/cuchaz/enigma/analysis/EntryRenamer.java53
1 files changed, 53 insertions, 0 deletions
diff --git a/src/main/java/cuchaz/enigma/analysis/EntryRenamer.java b/src/main/java/cuchaz/enigma/analysis/EntryRenamer.java
index f0e7306..7233fcf 100644
--- a/src/main/java/cuchaz/enigma/analysis/EntryRenamer.java
+++ b/src/main/java/cuchaz/enigma/analysis/EntryRenamer.java
@@ -56,6 +56,59 @@ public class EntryRenamer {
56 } 56 }
57 } 57 }
58 58
59 public static <Key, Val> void renameMethodsInMultimap(Map<MethodEntry, MethodEntry> renames, Multimap<Key, Val> map) {
60 // for each key/value pair...
61 Set<Map.Entry<Key, Val>> entriesToAdd = Sets.newHashSet();
62 for (Map.Entry<Key, Val> entry : map.entries()) {
63 entriesToAdd.add(new AbstractMap.SimpleEntry<>(renameMethodsInThing(renames, entry.getKey()), renameMethodsInThing(renames, entry.getValue())));
64 }
65 map.clear();
66 for (Map.Entry<Key, Val> entry : entriesToAdd) {
67 map.put(entry.getKey(), entry.getValue());
68 }
69 }
70
71 public static <Key, Val> void renameMethodsInMap(Map<MethodEntry, MethodEntry> renames, Map<Key, Val> map) {
72 // for each key/value pair...
73 Set<Map.Entry<Key, Val>> entriesToAdd = Sets.newHashSet();
74 for (Map.Entry<Key, Val> entry : map.entrySet()) {
75 entriesToAdd.add(new AbstractMap.SimpleEntry<>(renameMethodsInThing(renames, entry.getKey()), renameMethodsInThing(renames, entry.getValue())));
76 }
77 map.clear();
78 for (Map.Entry<Key, Val> entry : entriesToAdd) {
79 map.put(entry.getKey(), entry.getValue());
80 }
81 }
82
83 @SuppressWarnings("unchecked")
84 public static <T> T renameMethodsInThing(Map<MethodEntry,MethodEntry> renames, T thing) {
85 if (thing instanceof MethodEntry) {
86 MethodEntry methodEntry = (MethodEntry)thing;
87 MethodEntry newMethodEntry = renames.get(methodEntry);
88 if (newMethodEntry != null) {
89 return (T)new MethodEntry(
90 methodEntry.getClassEntry(),
91 newMethodEntry.getName(),
92 methodEntry.getSignature()
93 );
94 }
95 return thing;
96 } else if (thing instanceof ArgumentEntry) {
97 ArgumentEntry argumentEntry = (ArgumentEntry)thing;
98 return (T)new ArgumentEntry(
99 renameMethodsInThing(renames, argumentEntry.getBehaviorEntry()),
100 argumentEntry.getIndex(),
101 argumentEntry.getName()
102 );
103 } else if (thing instanceof EntryReference) {
104 EntryReference<Entry,Entry> reference = (EntryReference<Entry,Entry>)thing;
105 reference.entry = renameMethodsInThing(renames, reference.entry);
106 reference.context = renameMethodsInThing(renames, reference.context);
107 return thing;
108 }
109 return thing;
110 }
111
59 @SuppressWarnings("unchecked") 112 @SuppressWarnings("unchecked")
60 public static <T> T renameClassesInThing(final Map<String, String> renames, T thing) { 113 public static <T> T renameClassesInThing(final Map<String, String> renames, T thing) {
61 if (thing instanceof String) { 114 if (thing instanceof String) {