summaryrefslogtreecommitdiff
path: root/src/main/java/cuchaz/enigma/analysis
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/cuchaz/enigma/analysis')
-rw-r--r--src/main/java/cuchaz/enigma/analysis/Access.java4
-rw-r--r--src/main/java/cuchaz/enigma/analysis/BridgeMarker.java2
-rw-r--r--src/main/java/cuchaz/enigma/analysis/ClassImplementationsTreeNode.java17
-rw-r--r--src/main/java/cuchaz/enigma/analysis/EntryRenamer.java24
-rw-r--r--src/main/java/cuchaz/enigma/analysis/JarIndex.java8
-rw-r--r--src/main/java/cuchaz/enigma/analysis/SourceIndex.java4
-rw-r--r--src/main/java/cuchaz/enigma/analysis/TranslationIndex.java7
-rw-r--r--src/main/java/cuchaz/enigma/analysis/TreeDumpVisitor.java441
8 files changed, 2 insertions, 505 deletions
diff --git a/src/main/java/cuchaz/enigma/analysis/Access.java b/src/main/java/cuchaz/enigma/analysis/Access.java
index 877327f..ec5ac1e 100644
--- a/src/main/java/cuchaz/enigma/analysis/Access.java
+++ b/src/main/java/cuchaz/enigma/analysis/Access.java
@@ -30,9 +30,7 @@ public enum Access {
30 } 30 }
31 31
32 public static Access get(int modifiers) { 32 public static Access get(int modifiers) {
33 if (Modifier.isPublic(modifiers)) { 33 if (Modifier.isProtected(modifiers)) {
34 return Public;
35 } else if (Modifier.isProtected(modifiers)) {
36 return Protected; 34 return Protected;
37 } else if (Modifier.isPrivate(modifiers)) { 35 } else if (Modifier.isPrivate(modifiers)) {
38 return Private; 36 return Private;
diff --git a/src/main/java/cuchaz/enigma/analysis/BridgeMarker.java b/src/main/java/cuchaz/enigma/analysis/BridgeMarker.java
index cd18584..d6db11c 100644
--- a/src/main/java/cuchaz/enigma/analysis/BridgeMarker.java
+++ b/src/main/java/cuchaz/enigma/analysis/BridgeMarker.java
@@ -18,7 +18,7 @@ import javassist.bytecode.AccessFlag;
18 18
19public class BridgeMarker { 19public class BridgeMarker {
20 20
21 private JarIndex m_jarIndex; 21 private final JarIndex m_jarIndex;
22 22
23 public BridgeMarker(JarIndex jarIndex) { 23 public BridgeMarker(JarIndex jarIndex) {
24 this.m_jarIndex = jarIndex; 24 this.m_jarIndex = jarIndex;
diff --git a/src/main/java/cuchaz/enigma/analysis/ClassImplementationsTreeNode.java b/src/main/java/cuchaz/enigma/analysis/ClassImplementationsTreeNode.java
index 3420cd6..b1d1dee 100644
--- a/src/main/java/cuchaz/enigma/analysis/ClassImplementationsTreeNode.java
+++ b/src/main/java/cuchaz/enigma/analysis/ClassImplementationsTreeNode.java
@@ -17,7 +17,6 @@ import java.util.List;
17import javax.swing.tree.DefaultMutableTreeNode; 17import javax.swing.tree.DefaultMutableTreeNode;
18 18
19import cuchaz.enigma.mapping.ClassEntry; 19import cuchaz.enigma.mapping.ClassEntry;
20import cuchaz.enigma.mapping.MethodEntry;
21import cuchaz.enigma.mapping.Translator; 20import cuchaz.enigma.mapping.Translator;
22 21
23public class ClassImplementationsTreeNode extends DefaultMutableTreeNode { 22public class ClassImplementationsTreeNode extends DefaultMutableTreeNode {
@@ -59,20 +58,4 @@ public class ClassImplementationsTreeNode extends DefaultMutableTreeNode {
59 // add them to this node 58 // add them to this node
60 nodes.forEach(this::add); 59 nodes.forEach(this::add);
61 } 60 }
62
63 public static ClassImplementationsTreeNode findNode(ClassImplementationsTreeNode node, MethodEntry entry) {
64 // is this the node?
65 if (node.entry.equals(entry)) {
66 return node;
67 }
68
69 // recurse
70 for (int i = 0; i < node.getChildCount(); i++) {
71 ClassImplementationsTreeNode foundNode = findNode((ClassImplementationsTreeNode) node.getChildAt(i), entry);
72 if (foundNode != null) {
73 return foundNode;
74 }
75 }
76 return null;
77 }
78} 61}
diff --git a/src/main/java/cuchaz/enigma/analysis/EntryRenamer.java b/src/main/java/cuchaz/enigma/analysis/EntryRenamer.java
index a885c6a..9a85f6e 100644
--- a/src/main/java/cuchaz/enigma/analysis/EntryRenamer.java
+++ b/src/main/java/cuchaz/enigma/analysis/EntryRenamer.java
@@ -56,30 +56,6 @@ 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") 59 @SuppressWarnings("unchecked")
84 public static <T> T renameMethodsInThing(Map<MethodEntry, MethodEntry> renames, T thing) { 60 public static <T> T renameMethodsInThing(Map<MethodEntry, MethodEntry> renames, T thing) {
85 if (thing instanceof MethodEntry) { 61 if (thing instanceof MethodEntry) {
diff --git a/src/main/java/cuchaz/enigma/analysis/JarIndex.java b/src/main/java/cuchaz/enigma/analysis/JarIndex.java
index 377a8cb..bd67090 100644
--- a/src/main/java/cuchaz/enigma/analysis/JarIndex.java
+++ b/src/main/java/cuchaz/enigma/analysis/JarIndex.java
@@ -507,18 +507,10 @@ public class JarIndex {
507 return this.fields.values(); 507 return this.fields.values();
508 } 508 }
509 509
510 public Collection<FieldEntry> getObfFieldEntries(ClassEntry classEntry) {
511 return this.fields.get(classEntry);
512 }
513
514 public Collection<BehaviorEntry> getObfBehaviorEntries() { 510 public Collection<BehaviorEntry> getObfBehaviorEntries() {
515 return this.behaviors.values(); 511 return this.behaviors.values();
516 } 512 }
517 513
518 public Collection<BehaviorEntry> getObfBehaviorEntries(ClassEntry classEntry) {
519 return this.behaviors.get(classEntry);
520 }
521
522 public TranslationIndex getTranslationIndex() { 514 public TranslationIndex getTranslationIndex() {
523 return this.translationIndex; 515 return this.translationIndex;
524 } 516 }
diff --git a/src/main/java/cuchaz/enigma/analysis/SourceIndex.java b/src/main/java/cuchaz/enigma/analysis/SourceIndex.java
index 719930e..3fa1309 100644
--- a/src/main/java/cuchaz/enigma/analysis/SourceIndex.java
+++ b/src/main/java/cuchaz/enigma/analysis/SourceIndex.java
@@ -145,10 +145,6 @@ public class SourceIndex {
145 return this.tokenToReference.keySet(); 145 return this.tokenToReference.keySet();
146 } 146 }
147 147
148 public Iterable<Token> declarationTokens() {
149 return this.declarationToToken.values();
150 }
151
152 public Iterable<Entry> declarations() { 148 public Iterable<Entry> declarations() {
153 return this.declarationToToken.keySet(); 149 return this.declarationToToken.keySet();
154 } 150 }
diff --git a/src/main/java/cuchaz/enigma/analysis/TranslationIndex.java b/src/main/java/cuchaz/enigma/analysis/TranslationIndex.java
index adb87b6..3d8f556 100644
--- a/src/main/java/cuchaz/enigma/analysis/TranslationIndex.java
+++ b/src/main/java/cuchaz/enigma/analysis/TranslationIndex.java
@@ -152,13 +152,6 @@ public class TranslationIndex implements Serializable {
152 return subclasses; 152 return subclasses;
153 } 153 }
154 154
155 public void getSubclassesRecursively(Set<ClassEntry> out, ClassEntry classEntry) {
156 for (ClassEntry subclassEntry : getSubclass(classEntry)) {
157 out.add(subclassEntry);
158 getSubclassesRecursively(out, subclassEntry);
159 }
160 }
161
162 public void getSubclassNamesRecursively(Set<String> out, ClassEntry classEntry) { 155 public void getSubclassNamesRecursively(Set<String> out, ClassEntry classEntry) {
163 for (ClassEntry subclassEntry : getSubclass(classEntry)) { 156 for (ClassEntry subclassEntry : getSubclass(classEntry)) {
164 out.add(subclassEntry.getName()); 157 out.add(subclassEntry.getName());
diff --git a/src/main/java/cuchaz/enigma/analysis/TreeDumpVisitor.java b/src/main/java/cuchaz/enigma/analysis/TreeDumpVisitor.java
deleted file mode 100644
index ef8a190..0000000
--- a/src/main/java/cuchaz/enigma/analysis/TreeDumpVisitor.java
+++ /dev/null
@@ -1,441 +0,0 @@
1/*******************************************************************************
2 * Copyright (c) 2015 Jeff Martin.
3 * All rights reserved. This program and the accompanying materials
4 * are made available under the terms of the GNU Lesser General Public
5 * License v3.0 which accompanies this distribution, and is available at
6 * http://www.gnu.org/licenses/lgpl.html
7 * <p>
8 * Contributors:
9 * Jeff Martin - initial API and implementation
10 ******************************************************************************/
11package cuchaz.enigma.analysis;
12
13import com.strobel.componentmodel.Key;
14import com.strobel.decompiler.languages.java.ast.*;
15import com.strobel.decompiler.patterns.Pattern;
16
17import java.io.File;
18import java.io.FileWriter;
19import java.io.IOException;
20import java.io.Writer;
21
22public class TreeDumpVisitor implements IAstVisitor<Void, Void> {
23
24 private File m_file;
25 private Writer m_out;
26
27 public TreeDumpVisitor(File file) {
28 m_file = file;
29 m_out = null;
30 }
31
32 @Override
33 public Void visitCompilationUnit(CompilationUnit node, Void ignored) {
34 try {
35 m_out = new FileWriter(m_file);
36 recurse(node, ignored);
37 m_out.close();
38 return null;
39 } catch (IOException ex) {
40 throw new Error(ex);
41 }
42 }
43
44 private Void recurse(AstNode node, Void ignored) {
45 // show the tree
46 try {
47 m_out.write(getIndent(node) + node.getClass().getSimpleName() + " " + getText(node) + " " + dumpUserData(node) + " " + node.getRegion() + "\n");
48 } catch (IOException ex) {
49 throw new Error(ex);
50 }
51
52 // recurse
53 for (final AstNode child : node.getChildren()) {
54 child.acceptVisitor(this, ignored);
55 }
56 return null;
57 }
58
59 private String getText(AstNode node) {
60 if (node instanceof Identifier) {
61 return "\"" + ((Identifier) node).getName() + "\"";
62 }
63 return "";
64 }
65
66 private String dumpUserData(AstNode node) {
67 StringBuilder buf = new StringBuilder();
68 for (Key<?> key : Keys.ALL_KEYS) {
69 Object val = node.getUserData(key);
70 if (val != null) {
71 buf.append(String.format(" [%s=%s]", key, val));
72 }
73 }
74 return buf.toString();
75 }
76
77 private String getIndent(AstNode node) {
78 StringBuilder buf = new StringBuilder();
79 int depth = getDepth(node);
80 for (int i = 0; i < depth; i++) {
81 buf.append("\t");
82 }
83 return buf.toString();
84 }
85
86 private int getDepth(AstNode node) {
87 int depth = -1;
88 while (node != null) {
89 depth++;
90 node = node.getParent();
91 }
92 return depth;
93 }
94
95 // OVERRIDES WE DON'T CARE ABOUT
96
97 @Override
98 public Void visitInvocationExpression(InvocationExpression node, Void ignored) {
99 return recurse(node, ignored);
100 }
101
102 @Override
103 public Void visitMemberReferenceExpression(MemberReferenceExpression node, Void ignored) {
104 return recurse(node, ignored);
105 }
106
107 @Override
108 public Void visitSimpleType(SimpleType node, Void ignored) {
109 return recurse(node, ignored);
110 }
111
112 @Override
113 public Void visitMethodDeclaration(MethodDeclaration node, Void ignored) {
114 return recurse(node, ignored);
115 }
116
117 @Override
118 public Void visitConstructorDeclaration(ConstructorDeclaration node, Void ignored) {
119 return recurse(node, ignored);
120 }
121
122 @Override
123 public Void visitParameterDeclaration(ParameterDeclaration node, Void ignored) {
124 return recurse(node, ignored);
125 }
126
127 @Override
128 public Void visitFieldDeclaration(FieldDeclaration node, Void ignored) {
129 return recurse(node, ignored);
130 }
131
132 @Override
133 public Void visitTypeDeclaration(TypeDeclaration node, Void ignored) {
134 return recurse(node, ignored);
135 }
136
137 @Override
138 public Void visitComment(Comment node, Void ignored) {
139 return recurse(node, ignored);
140 }
141
142 @Override
143 public Void visitPatternPlaceholder(AstNode node, Pattern pattern, Void ignored) {
144 return recurse(node, ignored);
145 }
146
147 @Override
148 public Void visitTypeReference(TypeReferenceExpression node, Void ignored) {
149 return recurse(node, ignored);
150 }
151
152 @Override
153 public Void visitJavaTokenNode(JavaTokenNode node, Void ignored) {
154 return recurse(node, ignored);
155 }
156
157 @Override
158 public Void visitIdentifier(Identifier node, Void ignored) {
159 return recurse(node, ignored);
160 }
161
162 @Override
163 public Void visitNullReferenceExpression(NullReferenceExpression node, Void ignored) {
164 return recurse(node, ignored);
165 }
166
167 @Override
168 public Void visitThisReferenceExpression(ThisReferenceExpression node, Void ignored) {
169 return recurse(node, ignored);
170 }
171
172 @Override
173 public Void visitSuperReferenceExpression(SuperReferenceExpression node, Void ignored) {
174 return recurse(node, ignored);
175 }
176
177 @Override
178 public Void visitClassOfExpression(ClassOfExpression node, Void ignored) {
179 return recurse(node, ignored);
180 }
181
182 @Override
183 public Void visitBlockStatement(BlockStatement node, Void ignored) {
184 return recurse(node, ignored);
185 }
186
187 @Override
188 public Void visitExpressionStatement(ExpressionStatement node, Void ignored) {
189 return recurse(node, ignored);
190 }
191
192 @Override
193 public Void visitBreakStatement(BreakStatement node, Void ignored) {
194 return recurse(node, ignored);
195 }
196
197 @Override
198 public Void visitContinueStatement(ContinueStatement node, Void ignored) {
199 return recurse(node, ignored);
200 }
201
202 @Override
203 public Void visitDoWhileStatement(DoWhileStatement node, Void ignored) {
204 return recurse(node, ignored);
205 }
206
207 @Override
208 public Void visitEmptyStatement(EmptyStatement node, Void ignored) {
209 return recurse(node, ignored);
210 }
211
212 @Override
213 public Void visitIfElseStatement(IfElseStatement node, Void ignored) {
214 return recurse(node, ignored);
215 }
216
217 @Override
218 public Void visitLabelStatement(LabelStatement node, Void ignored) {
219 return recurse(node, ignored);
220 }
221
222 @Override
223 public Void visitLabeledStatement(LabeledStatement node, Void ignored) {
224 return recurse(node, ignored);
225 }
226
227 @Override
228 public Void visitReturnStatement(ReturnStatement node, Void ignored) {
229 return recurse(node, ignored);
230 }
231
232 @Override
233 public Void visitSwitchStatement(SwitchStatement node, Void ignored) {
234 return recurse(node, ignored);
235 }
236
237 @Override
238 public Void visitSwitchSection(SwitchSection node, Void ignored) {
239 return recurse(node, ignored);
240 }
241
242 @Override
243 public Void visitCaseLabel(CaseLabel node, Void ignored) {
244 return recurse(node, ignored);
245 }
246
247 @Override
248 public Void visitThrowStatement(ThrowStatement node, Void ignored) {
249 return recurse(node, ignored);
250 }
251
252 @Override
253 public Void visitCatchClause(CatchClause node, Void ignored) {
254 return recurse(node, ignored);
255 }
256
257 @Override
258 public Void visitAnnotation(Annotation node, Void ignored) {
259 return recurse(node, ignored);
260 }
261
262 @Override
263 public Void visitNewLine(NewLineNode node, Void ignored) {
264 return recurse(node, ignored);
265 }
266
267 @Override
268 public Void visitVariableDeclaration(VariableDeclarationStatement node, Void ignored) {
269 return recurse(node, ignored);
270 }
271
272 @Override
273 public Void visitVariableInitializer(VariableInitializer node, Void ignored) {
274 return recurse(node, ignored);
275 }
276
277 @Override
278 public Void visitText(TextNode node, Void ignored) {
279 return recurse(node, ignored);
280 }
281
282 @Override
283 public Void visitImportDeclaration(ImportDeclaration node, Void ignored) {
284 return recurse(node, ignored);
285 }
286
287 @Override
288 public Void visitInitializerBlock(InstanceInitializer node, Void ignored) {
289 return recurse(node, ignored);
290 }
291
292 @Override
293 public Void visitTypeParameterDeclaration(TypeParameterDeclaration node, Void ignored) {
294 return recurse(node, ignored);
295 }
296
297 @Override
298 public Void visitPackageDeclaration(PackageDeclaration node, Void ignored) {
299 return recurse(node, ignored);
300 }
301
302 @Override
303 public Void visitArraySpecifier(ArraySpecifier node, Void ignored) {
304 return recurse(node, ignored);
305 }
306
307 @Override
308 public Void visitComposedType(ComposedType node, Void ignored) {
309 return recurse(node, ignored);
310 }
311
312 @Override
313 public Void visitWhileStatement(WhileStatement node, Void ignored) {
314 return recurse(node, ignored);
315 }
316
317 @Override
318 public Void visitPrimitiveExpression(PrimitiveExpression node, Void ignored) {
319 return recurse(node, ignored);
320 }
321
322 @Override
323 public Void visitCastExpression(CastExpression node, Void ignored) {
324 return recurse(node, ignored);
325 }
326
327 @Override
328 public Void visitBinaryOperatorExpression(BinaryOperatorExpression node, Void ignored) {
329 return recurse(node, ignored);
330 }
331
332 @Override
333 public Void visitInstanceOfExpression(InstanceOfExpression node, Void ignored) {
334 return recurse(node, ignored);
335 }
336
337 @Override
338 public Void visitIndexerExpression(IndexerExpression node, Void ignored) {
339 return recurse(node, ignored);
340 }
341
342 @Override
343 public Void visitIdentifierExpression(IdentifierExpression node, Void ignored) {
344 return recurse(node, ignored);
345 }
346
347 @Override
348 public Void visitUnaryOperatorExpression(UnaryOperatorExpression node, Void ignored) {
349 return recurse(node, ignored);
350 }
351
352 @Override
353 public Void visitConditionalExpression(ConditionalExpression node, Void ignored) {
354 return recurse(node, ignored);
355 }
356
357 @Override
358 public Void visitArrayInitializerExpression(ArrayInitializerExpression node, Void ignored) {
359 return recurse(node, ignored);
360 }
361
362 @Override
363 public Void visitObjectCreationExpression(ObjectCreationExpression node, Void ignored) {
364 return recurse(node, ignored);
365 }
366
367 @Override
368 public Void visitArrayCreationExpression(ArrayCreationExpression node, Void ignored) {
369 return recurse(node, ignored);
370 }
371
372 @Override
373 public Void visitAssignmentExpression(AssignmentExpression node, Void ignored) {
374 return recurse(node, ignored);
375 }
376
377 @Override
378 public Void visitForStatement(ForStatement node, Void ignored) {
379 return recurse(node, ignored);
380 }
381
382 @Override
383 public Void visitForEachStatement(ForEachStatement node, Void ignored) {
384 return recurse(node, ignored);
385 }
386
387 @Override
388 public Void visitTryCatchStatement(TryCatchStatement node, Void ignored) {
389 return recurse(node, ignored);
390 }
391
392 @Override
393 public Void visitGotoStatement(GotoStatement node, Void ignored) {
394 return recurse(node, ignored);
395 }
396
397 @Override
398 public Void visitParenthesizedExpression(ParenthesizedExpression node, Void ignored) {
399 return recurse(node, ignored);
400 }
401
402 @Override
403 public Void visitSynchronizedStatement(SynchronizedStatement node, Void ignored) {
404 return recurse(node, ignored);
405 }
406
407 @Override
408 public Void visitAnonymousObjectCreationExpression(AnonymousObjectCreationExpression node, Void ignored) {
409 return recurse(node, ignored);
410 }
411
412 @Override
413 public Void visitWildcardType(WildcardType node, Void ignored) {
414 return recurse(node, ignored);
415 }
416
417 @Override
418 public Void visitMethodGroupExpression(MethodGroupExpression node, Void ignored) {
419 return recurse(node, ignored);
420 }
421
422 @Override
423 public Void visitEnumValueDeclaration(EnumValueDeclaration node, Void ignored) {
424 return recurse(node, ignored);
425 }
426
427 @Override
428 public Void visitAssertStatement(AssertStatement node, Void ignored) {
429 return recurse(node, ignored);
430 }
431
432 @Override
433 public Void visitLambdaExpression(LambdaExpression node, Void ignored) {
434 return recurse(node, ignored);
435 }
436
437 @Override
438 public Void visitLocalTypeDeclarationStatement(LocalTypeDeclarationStatement node, Void ignored) {
439 return recurse(node, ignored);
440 }
441}