summaryrefslogtreecommitdiff
path: root/src/cuchaz/enigma/mapping/ClassMapping.java
diff options
context:
space:
mode:
authorGravatar jeff2015-02-08 23:10:26 -0500
committerGravatar jeff2015-02-08 23:10:26 -0500
commit31a1a418b04cd3e7b06cb50cb8674a2c25079f6c (patch)
tree5914fd0c3557250dc61382a571ea3a3cdb9d941d /src/cuchaz/enigma/mapping/ClassMapping.java
parentMerge with 09538fb039f2e4e5e240cfb331be512ae8740fda (diff)
downloadenigma-fork-31a1a418b04cd3e7b06cb50cb8674a2c25079f6c.tar.gz
enigma-fork-31a1a418b04cd3e7b06cb50cb8674a2c25079f6c.tar.xz
enigma-fork-31a1a418b04cd3e7b06cb50cb8674a2c25079f6c.zip
added types to fields
Diffstat (limited to 'src/cuchaz/enigma/mapping/ClassMapping.java')
-rw-r--r--src/cuchaz/enigma/mapping/ClassMapping.java78
1 files changed, 46 insertions, 32 deletions
diff --git a/src/cuchaz/enigma/mapping/ClassMapping.java b/src/cuchaz/enigma/mapping/ClassMapping.java
index e2c3d56..7133265 100644
--- a/src/cuchaz/enigma/mapping/ClassMapping.java
+++ b/src/cuchaz/enigma/mapping/ClassMapping.java
@@ -152,78 +152,92 @@ public class ClassMapping implements Serializable, Comparable<ClassMapping> {
152 return m_fieldsByObf.values(); 152 return m_fieldsByObf.values();
153 } 153 }
154 154
155 public boolean containsObfField(String obfName) { 155 public boolean containsObfField(String obfName, Type obfType) {
156 return m_fieldsByObf.containsKey(obfName); 156 return m_fieldsByObf.containsKey(getFieldKey(obfName, obfType));
157 } 157 }
158 158
159 public boolean containsDeobfField(String deobfName) { 159 public boolean containsDeobfField(String deobfName, Type deobfType) {
160 return m_fieldsByDeobf.containsKey(deobfName); 160 return m_fieldsByDeobf.containsKey(getFieldKey(deobfName, deobfType));
161 } 161 }
162 162
163 public void addFieldMapping(FieldMapping fieldMapping) { 163 public void addFieldMapping(FieldMapping fieldMapping) {
164 if (m_fieldsByObf.containsKey(fieldMapping.getObfName())) { 164 String obfKey = getFieldKey(fieldMapping.getObfName(), fieldMapping.getObfType());
165 throw new Error("Already have mapping for " + m_obfName + "." + fieldMapping.getObfName()); 165 if (m_fieldsByObf.containsKey(obfKey)) {
166 throw new Error("Already have mapping for " + m_obfName + "." + obfKey);
166 } 167 }
167 if (m_fieldsByDeobf.containsKey(fieldMapping.getDeobfName())) { 168 String deobfKey = getFieldKey(fieldMapping.getDeobfName(), fieldMapping.getObfType());
168 throw new Error("Already have mapping for " + m_deobfName + "." + fieldMapping.getDeobfName()); 169 if (m_fieldsByDeobf.containsKey(deobfKey)) {
170 throw new Error("Already have mapping for " + m_deobfName + "." + deobfKey);
169 } 171 }
170 boolean obfWasAdded = m_fieldsByObf.put(fieldMapping.getObfName(), fieldMapping) == null; 172 boolean obfWasAdded = m_fieldsByObf.put(obfKey, fieldMapping) == null;
171 assert (obfWasAdded); 173 assert (obfWasAdded);
172 boolean deobfWasAdded = m_fieldsByDeobf.put(fieldMapping.getDeobfName(), fieldMapping) == null; 174 boolean deobfWasAdded = m_fieldsByDeobf.put(deobfKey, fieldMapping) == null;
173 assert (deobfWasAdded); 175 assert (deobfWasAdded);
174 assert (m_fieldsByObf.size() == m_fieldsByDeobf.size()); 176 assert (m_fieldsByObf.size() == m_fieldsByDeobf.size());
175 } 177 }
176 178
177 public void removeFieldMapping(FieldMapping fieldMapping) { 179 public void removeFieldMapping(FieldMapping fieldMapping) {
178 boolean obfWasRemoved = m_fieldsByObf.remove(fieldMapping.getObfName()) != null; 180 boolean obfWasRemoved = m_fieldsByObf.remove(getFieldKey(fieldMapping.getObfName(), fieldMapping.getObfType())) != null;
179 assert (obfWasRemoved); 181 assert (obfWasRemoved);
180 if (fieldMapping.getDeobfName() != null) { 182 if (fieldMapping.getDeobfName() != null) {
181 boolean deobfWasRemoved = m_fieldsByDeobf.remove(fieldMapping.getDeobfName()) != null; 183 boolean deobfWasRemoved = m_fieldsByDeobf.remove(getFieldKey(fieldMapping.getDeobfName(), fieldMapping.getObfType())) != null;
182 assert (deobfWasRemoved); 184 assert (deobfWasRemoved);
183 } 185 }
184 } 186 }
185 187
186 public FieldMapping getFieldByObf(String obfName) { 188 public FieldMapping getFieldByObf(String obfName, Type obfType) {
187 return m_fieldsByObf.get(obfName); 189 return m_fieldsByObf.get(getFieldKey(obfName, obfType));
188 } 190 }
189 191
190 public FieldMapping getFieldByDeobf(String deobfName) { 192 public FieldMapping getFieldByDeobf(String deobfName, Type obfType) {
191 return m_fieldsByDeobf.get(deobfName); 193 return m_fieldsByDeobf.get(getFieldKey(deobfName, obfType));
192 } 194 }
193 195
194 public String getObfFieldName(String deobfName) { 196 public String getObfFieldName(String deobfName, Type obfType) {
195 FieldMapping fieldMapping = m_fieldsByDeobf.get(deobfName); 197 FieldMapping fieldMapping = m_fieldsByDeobf.get(getFieldKey(deobfName, obfType));
196 if (fieldMapping != null) { 198 if (fieldMapping != null) {
197 return fieldMapping.getObfName(); 199 return fieldMapping.getObfName();
198 } 200 }
199 return null; 201 return null;
200 } 202 }
201 203
202 public String getDeobfFieldName(String obfName) { 204 public String getDeobfFieldName(String obfName, Type obfType) {
203 FieldMapping fieldMapping = m_fieldsByObf.get(obfName); 205 FieldMapping fieldMapping = m_fieldsByObf.get(getFieldKey(obfName, obfType));
204 if (fieldMapping != null) { 206 if (fieldMapping != null) {
205 return fieldMapping.getDeobfName(); 207 return fieldMapping.getDeobfName();
206 } 208 }
207 return null; 209 return null;
208 } 210 }
209 211
210 public void setFieldName(String obfName, String deobfName) { 212 private String getFieldKey(String name, Type type) {
211 FieldMapping fieldMapping = m_fieldsByObf.get(obfName); 213 if (name == null) {
214 throw new IllegalArgumentException("name cannot be null!");
215 }
216 if (type == null) {
217 throw new IllegalArgumentException("type cannot be null!");
218 }
219 return name + ":" + type;
220 }
221
222
223 public void setFieldName(String obfName, Type obfType, String deobfName) {
224 FieldMapping fieldMapping = m_fieldsByObf.get(getFieldKey(obfName, obfType));
212 if (fieldMapping == null) { 225 if (fieldMapping == null) {
213 fieldMapping = new FieldMapping(obfName, deobfName); 226 fieldMapping = new FieldMapping(obfName, obfType, deobfName);
214 boolean obfWasAdded = m_fieldsByObf.put(obfName, fieldMapping) == null; 227 boolean obfWasAdded = m_fieldsByObf.put(getFieldKey(obfName, obfType), fieldMapping) == null;
215 assert (obfWasAdded); 228 assert (obfWasAdded);
216 } else { 229 } else {
217 boolean wasRemoved = m_fieldsByDeobf.remove(fieldMapping.getDeobfName()) != null; 230 boolean wasRemoved = m_fieldsByDeobf.remove(getFieldKey(fieldMapping.getDeobfName(), obfType)) != null;
218 assert (wasRemoved); 231 assert (wasRemoved);
219 } 232 }
220 fieldMapping.setDeobfName(deobfName); 233 fieldMapping.setDeobfName(deobfName);
221 if (deobfName != null) { 234 if (deobfName != null) {
222 boolean wasAdded = m_fieldsByDeobf.put(deobfName, fieldMapping) == null; 235 boolean wasAdded = m_fieldsByDeobf.put(getFieldKey(deobfName, obfType), fieldMapping) == null;
223 assert (wasAdded); 236 assert (wasAdded);
224 } 237 }
225 } 238 }
226 239
240
227 //// METHODS //////// 241 //// METHODS ////////
228 242
229 public Iterable<MethodMapping> methods() { 243 public Iterable<MethodMapping> methods() {
@@ -235,8 +249,8 @@ public class ClassMapping implements Serializable, Comparable<ClassMapping> {
235 return m_methodsByObf.containsKey(getMethodKey(obfName, obfSignature)); 249 return m_methodsByObf.containsKey(getMethodKey(obfName, obfSignature));
236 } 250 }
237 251
238 public boolean containsDeobfMethod(String deobfName, Signature deobfSignature) { 252 public boolean containsDeobfMethod(String deobfName, Signature obfSignature) {
239 return m_methodsByDeobf.containsKey(getMethodKey(deobfName, deobfSignature)); 253 return m_methodsByDeobf.containsKey(getMethodKey(deobfName, obfSignature));
240 } 254 }
241 255
242 public void addMethodMapping(MethodMapping methodMapping) { 256 public void addMethodMapping(MethodMapping methodMapping) {
@@ -266,12 +280,12 @@ public class ClassMapping implements Serializable, Comparable<ClassMapping> {
266 } 280 }
267 } 281 }
268 282
269 public MethodMapping getMethodByObf(String obfName, Signature signature) { 283 public MethodMapping getMethodByObf(String obfName, Signature obfSignature) {
270 return m_methodsByObf.get(getMethodKey(obfName, signature)); 284 return m_methodsByObf.get(getMethodKey(obfName, obfSignature));
271 } 285 }
272 286
273 public MethodMapping getMethodByDeobf(String deobfName, Signature signature) { 287 public MethodMapping getMethodByDeobf(String deobfName, Signature obfSignature) {
274 return m_methodsByDeobf.get(getMethodKey(deobfName, signature)); 288 return m_methodsByDeobf.get(getMethodKey(deobfName, obfSignature));
275 } 289 }
276 290
277 private String getMethodKey(String name, Signature signature) { 291 private String getMethodKey(String name, Signature signature) {