summaryrefslogtreecommitdiff
path: root/src/cuchaz/enigma/convert
diff options
context:
space:
mode:
authorGravatar jeff2015-03-07 16:00:44 -0500
committerGravatar jeff2015-03-07 16:00:44 -0500
commit59ba32f0285aa6d6b367e6283cae9268e8947fed (patch)
tree10bc21f028a2ddd80a761c0e666be20b6e7e45bc /src/cuchaz/enigma/convert
parentadded simple renamer for local variable table (diff)
downloadenigma-fork-59ba32f0285aa6d6b367e6283cae9268e8947fed.tar.gz
enigma-fork-59ba32f0285aa6d6b367e6283cae9268e8947fed.tar.xz
enigma-fork-59ba32f0285aa6d6b367e6283cae9268e8947fed.zip
match/unmatch button works
Diffstat (limited to 'src/cuchaz/enigma/convert')
-rw-r--r--src/cuchaz/enigma/convert/ClassMatch.java12
-rw-r--r--src/cuchaz/enigma/convert/Matches.java38
2 files changed, 47 insertions, 3 deletions
diff --git a/src/cuchaz/enigma/convert/ClassMatch.java b/src/cuchaz/enigma/convert/ClassMatch.java
index 9cecf70..eaaaa41 100644
--- a/src/cuchaz/enigma/convert/ClassMatch.java
+++ b/src/cuchaz/enigma/convert/ClassMatch.java
@@ -20,10 +20,16 @@ public class ClassMatch {
20 } 20 }
21 21
22 public ClassMatch(ClassEntry sourceClass, ClassEntry destClass) { 22 public ClassMatch(ClassEntry sourceClass, ClassEntry destClass) {
23 this.sourceClasses = Sets.newHashSet(sourceClass); 23 sourceClasses = Sets.newHashSet();
24 this.destClasses = Sets.newHashSet(destClass); 24 if (sourceClass != null) {
25 sourceClasses.add(sourceClass);
26 }
27 destClasses = Sets.newHashSet();
28 if (destClass != null) {
29 destClasses.add(destClass);
30 }
25 } 31 }
26 32
27 public boolean isMatched() { 33 public boolean isMatched() {
28 return sourceClasses.size() > 0 && destClasses.size() > 0; 34 return sourceClasses.size() > 0 && destClasses.size() > 0;
29 } 35 }
diff --git a/src/cuchaz/enigma/convert/Matches.java b/src/cuchaz/enigma/convert/Matches.java
index 5faa923..0b00b29 100644
--- a/src/cuchaz/enigma/convert/Matches.java
+++ b/src/cuchaz/enigma/convert/Matches.java
@@ -48,6 +48,22 @@ public class Matches implements Iterable<ClassMatch> {
48 m_matches.add(match); 48 m_matches.add(match);
49 indexMatch(match); 49 indexMatch(match);
50 } 50 }
51
52 public void remove(ClassMatch match) {
53 for (ClassEntry sourceClass : match.sourceClasses) {
54 m_matchesBySource.remove(sourceClass);
55 m_uniqueMatches.remove(sourceClass);
56 m_ambiguousMatchesBySource.remove(sourceClass);
57 m_unmatchedSourceClasses.remove(sourceClass);
58 }
59 for (ClassEntry destClass : match.sourceClasses) {
60 m_matchesByDest.remove(destClass);
61 m_uniqueMatches.inverse().remove(destClass);
62 m_ambiguousMatchesByDest.remove(destClass);
63 m_unmatchedDestClasses.remove(destClass);
64 }
65 m_matches.remove(match);
66 }
51 67
52 public int size() { 68 public int size() {
53 return m_matches.size(); 69 return m_matches.size();
@@ -112,4 +128,26 @@ public class Matches implements Iterable<ClassMatch> {
112 public ClassMatch getMatchByDest(ClassEntry destClass) { 128 public ClassMatch getMatchByDest(ClassEntry destClass) {
113 return m_matchesByDest.get(destClass); 129 return m_matchesByDest.get(destClass);
114 } 130 }
131
132 public void removeSource(ClassEntry sourceClass) {
133 ClassMatch match = m_matchesBySource.get(sourceClass);
134 if (match != null) {
135 remove(match);
136 match.sourceClasses.remove(sourceClass);
137 if (!match.sourceClasses.isEmpty() || !match.destClasses.isEmpty()) {
138 add(match);
139 }
140 }
141 }
142
143 public void removeDest(ClassEntry destClass) {
144 ClassMatch match = m_matchesByDest.get(destClass);
145 if (match != null) {
146 remove(match);
147 match.destClasses.remove(destClass);
148 if (!match.sourceClasses.isEmpty() || !match.destClasses.isEmpty()) {
149 add(match);
150 }
151 }
152 }
115} 153}