summaryrefslogtreecommitdiff
path: root/src/cuchaz/enigma/mapping/ClassEntry.java
diff options
context:
space:
mode:
authorGravatar jeff2015-02-25 22:42:34 -0500
committerGravatar jeff2015-02-25 22:42:34 -0500
commit9809078524bd3bd40fbf7aa411f6e0dca02fd009 (patch)
tree19f9ee0613231c747e728bc61f8a1b6ffa58e5b7 /src/cuchaz/enigma/mapping/ClassEntry.java
parentmore work getting inner class trees working in obf'd and deobf'd land (diff)
downloadenigma-fork-9809078524bd3bd40fbf7aa411f6e0dca02fd009.tar.gz
enigma-fork-9809078524bd3bd40fbf7aa411f6e0dca02fd009.tar.xz
enigma-fork-9809078524bd3bd40fbf7aa411f6e0dca02fd009.zip
fixed lots of issues with inner class reconstruction, particularly for inner class trees
also fixed lots of issues with reading jars that aren't Minecraft. =P
Diffstat (limited to 'src/cuchaz/enigma/mapping/ClassEntry.java')
-rw-r--r--src/cuchaz/enigma/mapping/ClassEntry.java22
1 files changed, 19 insertions, 3 deletions
diff --git a/src/cuchaz/enigma/mapping/ClassEntry.java b/src/cuchaz/enigma/mapping/ClassEntry.java
index 69f171a..69e66bc 100644
--- a/src/cuchaz/enigma/mapping/ClassEntry.java
+++ b/src/cuchaz/enigma/mapping/ClassEntry.java
@@ -11,6 +11,7 @@
11package cuchaz.enigma.mapping; 11package cuchaz.enigma.mapping;
12 12
13import java.io.Serializable; 13import java.io.Serializable;
14import java.util.List;
14 15
15public class ClassEntry implements Entry, Serializable { 16public class ClassEntry implements Entry, Serializable {
16 17
@@ -114,13 +115,28 @@ public class ClassEntry implements Entry, Serializable {
114 } 115 }
115 116
116 public String getSimpleName() { 117 public String getSimpleName() {
117 if (isInnerClass()) {
118 return getInnerClassName();
119 }
120 int pos = m_name.lastIndexOf('/'); 118 int pos = m_name.lastIndexOf('/');
121 if (pos > 0) { 119 if (pos > 0) {
122 return m_name.substring(pos + 1); 120 return m_name.substring(pos + 1);
123 } 121 }
124 return m_name; 122 return m_name;
125 } 123 }
124
125 public ClassEntry buildClassEntry(List<ClassEntry> classChain) {
126 assert(classChain.contains(this));
127 StringBuilder buf = new StringBuilder();
128 for (ClassEntry chainEntry : classChain) {
129 if (buf.length() == 0) {
130 buf.append(chainEntry.getName());
131 } else {
132 buf.append("$");
133 buf.append(chainEntry.isInnerClass() ? chainEntry.getInnerClassName() : chainEntry.getSimpleName());
134 }
135
136 if (chainEntry == this) {
137 break;
138 }
139 }
140 return new ClassEntry(buf.toString());
141 }
126} 142}