summaryrefslogtreecommitdiff
path: root/src/cuchaz/enigma/mapping/MappingsRenamer.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/cuchaz/enigma/mapping/MappingsRenamer.java')
-rw-r--r--src/cuchaz/enigma/mapping/MappingsRenamer.java97
1 files changed, 97 insertions, 0 deletions
diff --git a/src/cuchaz/enigma/mapping/MappingsRenamer.java b/src/cuchaz/enigma/mapping/MappingsRenamer.java
index 182bbd1..957b6d6 100644
--- a/src/cuchaz/enigma/mapping/MappingsRenamer.java
+++ b/src/cuchaz/enigma/mapping/MappingsRenamer.java
@@ -57,6 +57,36 @@ public class MappingsRenamer
57 } 57 }
58 } 58 }
59 59
60 public void removeClassMapping( ClassEntry obf )
61 {
62 ClassMapping classMapping = getClassMapping( obf );
63 if( obf.isInnerClass() )
64 {
65 classMapping.setInnerClassName( obf.getName(), null );
66 }
67 else
68 {
69 boolean wasRemoved = m_mappings.m_classesByDeobf.remove( classMapping.getDeobfName() ) != null;
70 assert( wasRemoved );
71 classMapping.setDeobfName( null );
72 }
73 }
74
75 public void markClassAsDeobfuscated( ClassEntry obf )
76 {
77 ClassMapping classMapping = getOrCreateClassMapping( obf );
78 if( obf.isInnerClass() )
79 {
80 classMapping.setInnerClassName( obf.getName(), obf.getName() );
81 }
82 else
83 {
84 classMapping.setDeobfName( obf.getName() );
85 boolean wasAdded = m_mappings.m_classesByDeobf.put( obf.getName(), classMapping ) == null;
86 assert( wasAdded );
87 }
88 }
89
60 public void setFieldName( FieldEntry obf, String deobfName ) 90 public void setFieldName( FieldEntry obf, String deobfName )
61 { 91 {
62 deobfName = NameValidator.validateFieldName( deobfName ); 92 deobfName = NameValidator.validateFieldName( deobfName );
@@ -70,6 +100,18 @@ public class MappingsRenamer
70 classMapping.setFieldName( obf.getName(), deobfName ); 100 classMapping.setFieldName( obf.getName(), deobfName );
71 } 101 }
72 102
103 public void removeFieldMapping( FieldEntry obf )
104 {
105 ClassMapping classMapping = getClassMappingOrInnerClassMapping( obf.getClassEntry() );
106 classMapping.setFieldName( obf.getName(), null );
107 }
108
109 public void markFieldAsDeobfuscated( FieldEntry obf )
110 {
111 ClassMapping classMapping = getOrCreateClassMappingOrInnerClassMapping( obf.getClassEntry() );
112 classMapping.setFieldName( obf.getName(), obf.getName() );
113 }
114
73 public void setMethodTreeName( MethodEntry obf, String deobfName ) 115 public void setMethodTreeName( MethodEntry obf, String deobfName )
74 { 116 {
75 Set<MethodEntry> implementations = m_index.getRelatedMethodImplementations( obf ); 117 Set<MethodEntry> implementations = m_index.getRelatedMethodImplementations( obf );
@@ -106,6 +148,34 @@ public class MappingsRenamer
106 classMapping.setMethodName( obf.getName(), obf.getSignature(), deobfName ); 148 classMapping.setMethodName( obf.getName(), obf.getSignature(), deobfName );
107 } 149 }
108 150
151 public void removeMethodTreeMapping( MethodEntry obf )
152 {
153 for( MethodEntry implementation : m_index.getRelatedMethodImplementations( obf ) )
154 {
155 removeMethodMapping( implementation );
156 }
157 }
158
159 public void removeMethodMapping( MethodEntry obf )
160 {
161 ClassMapping classMapping = getOrCreateClassMappingOrInnerClassMapping( obf.getClassEntry() );
162 classMapping.setMethodName( obf.getName(), obf.getSignature(), null );
163 }
164
165 public void markMethodTreeAsDeobfuscated( MethodEntry obf )
166 {
167 for( MethodEntry implementation : m_index.getRelatedMethodImplementations( obf ) )
168 {
169 markMethodAsDeobfuscated( implementation );
170 }
171 }
172
173 public void markMethodAsDeobfuscated( MethodEntry obf )
174 {
175 ClassMapping classMapping = getOrCreateClassMappingOrInnerClassMapping( obf.getClassEntry() );
176 classMapping.setMethodName( obf.getName(), obf.getSignature(), obf.getName() );
177 }
178
109 public void setArgumentName( ArgumentEntry obf, String deobfName ) 179 public void setArgumentName( ArgumentEntry obf, String deobfName )
110 { 180 {
111 deobfName = NameValidator.validateArgumentName( deobfName ); 181 deobfName = NameValidator.validateArgumentName( deobfName );
@@ -119,6 +189,18 @@ public class MappingsRenamer
119 classMapping.setArgumentName( obf.getMethodName(), obf.getMethodSignature(), obf.getIndex(), deobfName ); 189 classMapping.setArgumentName( obf.getMethodName(), obf.getMethodSignature(), obf.getIndex(), deobfName );
120 } 190 }
121 191
192 public void removeArgumentMapping( ArgumentEntry obf )
193 {
194 ClassMapping classMapping = getClassMappingOrInnerClassMapping( obf.getClassEntry() );
195 classMapping.removeArgumentName( obf.getMethodName(), obf.getMethodSignature(), obf.getIndex() );
196 }
197
198 public void markArgumentAsDeobfuscated( ArgumentEntry obf )
199 {
200 ClassMapping classMapping = getOrCreateClassMappingOrInnerClassMapping( obf.getClassEntry() );
201 classMapping.setArgumentName( obf.getMethodName(), obf.getMethodSignature(), obf.getIndex(), obf.getName() );
202 }
203
122 public boolean moveFieldToObfClass( ClassMapping classMapping, FieldMapping fieldMapping, ClassEntry obfClass ) 204 public boolean moveFieldToObfClass( ClassMapping classMapping, FieldMapping fieldMapping, ClassEntry obfClass )
123 { 205 {
124 classMapping.removeFieldMapping( fieldMapping ); 206 classMapping.removeFieldMapping( fieldMapping );
@@ -167,6 +249,11 @@ public class MappingsRenamer
167 gzipout.finish(); 249 gzipout.finish();
168 } 250 }
169 251
252 private ClassMapping getClassMapping( ClassEntry obfClassEntry )
253 {
254 return m_mappings.m_classesByObf.get( obfClassEntry.getOuterClassName() );
255 }
256
170 private ClassMapping getOrCreateClassMapping( ClassEntry obfClassEntry ) 257 private ClassMapping getOrCreateClassMapping( ClassEntry obfClassEntry )
171 { 258 {
172 String obfClassName = obfClassEntry.getOuterClassName(); 259 String obfClassName = obfClassEntry.getOuterClassName();
@@ -180,6 +267,16 @@ public class MappingsRenamer
180 return classMapping; 267 return classMapping;
181 } 268 }
182 269
270 private ClassMapping getClassMappingOrInnerClassMapping( ClassEntry obfClassEntry )
271 {
272 ClassMapping classMapping = getClassMapping( obfClassEntry );
273 if( obfClassEntry.isInDefaultPackage() )
274 {
275 classMapping = classMapping.getInnerClassByObf( obfClassEntry.getInnerClassName() );
276 }
277 return classMapping;
278 }
279
183 private ClassMapping getOrCreateClassMappingOrInnerClassMapping( ClassEntry obfClassEntry ) 280 private ClassMapping getOrCreateClassMappingOrInnerClassMapping( ClassEntry obfClassEntry )
184 { 281 {
185 ClassMapping classMapping = getOrCreateClassMapping( obfClassEntry ); 282 ClassMapping classMapping = getOrCreateClassMapping( obfClassEntry );