summaryrefslogtreecommitdiff
path: root/src/cuchaz/enigma/analysis/TranslationIndex.java
diff options
context:
space:
mode:
authorGravatar jeff2015-01-13 23:25:04 -0500
committerGravatar jeff2015-01-13 23:25:04 -0500
commit959cb5fd4f9586ec3bd265b452fe25fe1db82e3f (patch)
treebdd8a2c52c2fe053ba3460614bde8542e5378dbe /src/cuchaz/enigma/analysis/TranslationIndex.java
parentgot rid of gradle in favor of ivy+ssjb (diff)
downloadenigma-fork-959cb5fd4f9586ec3bd265b452fe25fe1db82e3f.tar.gz
enigma-fork-959cb5fd4f9586ec3bd265b452fe25fe1db82e3f.tar.xz
enigma-fork-959cb5fd4f9586ec3bd265b452fe25fe1db82e3f.zip
source format change
don't hate me too much if you were planning a big merge. =P
Diffstat (limited to '')
-rw-r--r--src/cuchaz/enigma/analysis/TranslationIndex.java93
1 files changed, 37 insertions, 56 deletions
diff --git a/src/cuchaz/enigma/analysis/TranslationIndex.java b/src/cuchaz/enigma/analysis/TranslationIndex.java
index 5311ec7..c14fd59 100644
--- a/src/cuchaz/enigma/analysis/TranslationIndex.java
+++ b/src/cuchaz/enigma/analysis/TranslationIndex.java
@@ -23,104 +23,85 @@ import com.google.common.collect.Lists;
23import com.google.common.collect.Maps; 23import com.google.common.collect.Maps;
24import com.google.common.collect.Multimap; 24import com.google.common.collect.Multimap;
25 25
26public class TranslationIndex implements Serializable 26public class TranslationIndex implements Serializable {
27{ 27
28 private static final long serialVersionUID = 738687982126844179L; 28 private static final long serialVersionUID = 738687982126844179L;
29 29
30 private Map<String,String> m_superclasses; 30 private Map<String,String> m_superclasses;
31 private Multimap<String,String> m_fields; 31 private Multimap<String,String> m_fields;
32 32
33 public TranslationIndex( ) 33 public TranslationIndex() {
34 {
35 m_superclasses = Maps.newHashMap(); 34 m_superclasses = Maps.newHashMap();
36 m_fields = HashMultimap.create(); 35 m_fields = HashMultimap.create();
37 } 36 }
38 37
39 public TranslationIndex( TranslationIndex other ) 38 public TranslationIndex(TranslationIndex other) {
40 { 39 m_superclasses = Maps.newHashMap(other.m_superclasses);
41 m_superclasses = Maps.newHashMap( other.m_superclasses ); 40 m_fields = HashMultimap.create(other.m_fields);
42 m_fields = HashMultimap.create( other.m_fields );
43 } 41 }
44 42
45 public void addSuperclass( String className, String superclassName ) 43 public void addSuperclass(String className, String superclassName) {
46 { 44 className = Descriptor.toJvmName(className);
47 className = Descriptor.toJvmName( className ); 45 superclassName = Descriptor.toJvmName(superclassName);
48 superclassName = Descriptor.toJvmName( superclassName );
49 46
50 if( className.equals( superclassName ) ) 47 if (className.equals(superclassName)) {
51 { 48 throw new IllegalArgumentException("Class cannot be its own superclass! " + className);
52 throw new IllegalArgumentException( "Class cannot be its own superclass! " + className );
53 } 49 }
54 50
55 if( !isJre( className ) && !isJre( superclassName ) ) 51 if (!isJre(className) && !isJre(superclassName)) {
56 { 52 m_superclasses.put(className, superclassName);
57 m_superclasses.put( className, superclassName );
58 } 53 }
59 } 54 }
60 55
61 public void addField( String className, String fieldName ) 56 public void addField(String className, String fieldName) {
62 { 57 m_fields.put(className, fieldName);
63 m_fields.put( className, fieldName );
64 } 58 }
65 59
66 public void renameClasses( Map<String,String> renames ) 60 public void renameClasses(Map<String,String> renames) {
67 { 61 EntryRenamer.renameClassesInMap(renames, m_superclasses);
68 EntryRenamer.renameClassesInMap( renames, m_superclasses ); 62 EntryRenamer.renameClassesInMultimap(renames, m_fields);
69 EntryRenamer.renameClassesInMultimap( renames, m_fields );
70 } 63 }
71 64
72 public String getSuperclassName( String className ) 65 public String getSuperclassName(String className) {
73 { 66 return m_superclasses.get(className);
74 return m_superclasses.get( className );
75 } 67 }
76 68
77 public List<String> getAncestry( String className ) 69 public List<String> getAncestry(String className) {
78 {
79 List<String> ancestors = new ArrayList<String>(); 70 List<String> ancestors = new ArrayList<String>();
80 while( className != null ) 71 while (className != null) {
81 { 72 className = getSuperclassName(className);
82 className = getSuperclassName( className ); 73 if (className != null) {
83 if( className != null ) 74 ancestors.add(className);
84 {
85 ancestors.add( className );
86 } 75 }
87 } 76 }
88 return ancestors; 77 return ancestors;
89 } 78 }
90 79
91 public List<String> getSubclassNames( String className ) 80 public List<String> getSubclassNames(String className) {
92 {
93 // linear search is fast enough for now 81 // linear search is fast enough for now
94 List<String> subclasses = Lists.newArrayList(); 82 List<String> subclasses = Lists.newArrayList();
95 for( Map.Entry<String,String> entry : m_superclasses.entrySet() ) 83 for (Map.Entry<String,String> entry : m_superclasses.entrySet()) {
96 {
97 String subclass = entry.getKey(); 84 String subclass = entry.getKey();
98 String superclass = entry.getValue(); 85 String superclass = entry.getValue();
99 if( className.equals( superclass ) ) 86 if (className.equals(superclass)) {
100 { 87 subclasses.add(subclass);
101 subclasses.add( subclass );
102 } 88 }
103 } 89 }
104 return subclasses; 90 return subclasses;
105 } 91 }
106 92
107 public void getSubclassNamesRecursively( Set<String> out, String className ) 93 public void getSubclassNamesRecursively(Set<String> out, String className) {
108 { 94 for (String subclassName : getSubclassNames(className)) {
109 for( String subclassName : getSubclassNames( className ) ) 95 out.add(subclassName);
110 { 96 getSubclassNamesRecursively(out, subclassName);
111 out.add( subclassName );
112 getSubclassNamesRecursively( out, subclassName );
113 } 97 }
114 } 98 }
115 99
116 public boolean containsField( String className, String fieldName ) 100 public boolean containsField(String className, String fieldName) {
117 { 101 return m_fields.containsEntry(className, fieldName);
118 return m_fields.containsEntry( className, fieldName );
119 } 102 }
120 103
121 private boolean isJre( String className ) 104 private boolean isJre(String className) {
122 { 105 return className.startsWith("java/") || className.startsWith("javax/");
123 return className.startsWith( "java/" )
124 || className.startsWith( "javax/" );
125 } 106 }
126} 107}