summaryrefslogtreecommitdiff
path: root/src/cuchaz/enigma/mapping/Renamer.java
diff options
context:
space:
mode:
authorGravatar jeff2014-08-11 00:02:00 -0400
committerGravatar jeff2014-08-11 00:02:00 -0400
commitbba7c6a19c15bc82946176c79a4eba3612b25f17 (patch)
treef0b55befaa6e7e532e9728dfa6b1c9cb36660594 /src/cuchaz/enigma/mapping/Renamer.java
parentadded backwards navigation (diff)
downloadenigma-fork-bba7c6a19c15bc82946176c79a4eba3612b25f17.tar.gz
enigma-fork-bba7c6a19c15bc82946176c79a4eba3612b25f17.tar.xz
enigma-fork-bba7c6a19c15bc82946176c79a4eba3612b25f17.zip
added method inheritance browsing
also finally fixed method renamer to rename all method implementations in the inheritance hierarchy.
Diffstat (limited to 'src/cuchaz/enigma/mapping/Renamer.java')
-rw-r--r--src/cuchaz/enigma/mapping/Renamer.java28
1 files changed, 28 insertions, 0 deletions
diff --git a/src/cuchaz/enigma/mapping/Renamer.java b/src/cuchaz/enigma/mapping/Renamer.java
index b7aa35c..5a75c01 100644
--- a/src/cuchaz/enigma/mapping/Renamer.java
+++ b/src/cuchaz/enigma/mapping/Renamer.java
@@ -15,6 +15,9 @@ import java.io.ObjectOutputStream;
15import java.io.OutputStream; 15import java.io.OutputStream;
16import java.util.zip.GZIPOutputStream; 16import java.util.zip.GZIPOutputStream;
17 17
18import cuchaz.enigma.analysis.Ancestries;
19import cuchaz.enigma.analysis.MethodInheritanceTreeNode;
20
18public class Renamer 21public class Renamer
19{ 22{
20 private Ancestries m_ancestries; 23 private Ancestries m_ancestries;
@@ -54,6 +57,30 @@ public class Renamer
54 classMapping.setFieldName( obf.getName(), deobfName ); 57 classMapping.setFieldName( obf.getName(), deobfName );
55 } 58 }
56 59
60 public void setMethodTreeName( MethodEntry obf, String deobfName )
61 {
62 // get the method tree
63 setMethodTreeName(
64 m_ancestries.getMethodInheritance( m_mappings.getTranslator( m_ancestries, TranslationDirection.Deobfuscating ), obf ),
65 deobfName
66 );
67 }
68
69 private void setMethodTreeName( MethodInheritanceTreeNode node, String deobfName )
70 {
71 if( node.isImplemented() )
72 {
73 // apply the name here
74 setMethodName( node.getMethodEntry(), deobfName );
75 }
76
77 // recurse
78 for( int i=0; i<node.getChildCount(); i++ )
79 {
80 setMethodTreeName( (MethodInheritanceTreeNode)node.getChildAt( i ), deobfName );
81 }
82 }
83
57 public void setMethodName( MethodEntry obf, String deobfName ) 84 public void setMethodName( MethodEntry obf, String deobfName )
58 { 85 {
59 deobfName = NameValidator.validateMethodName( deobfName ); 86 deobfName = NameValidator.validateMethodName( deobfName );
@@ -67,6 +94,7 @@ public class Renamer
67 classMapping.setMethodNameAndSignature( obf.getName(), obf.getSignature(), deobfName, deobfSignature ); 94 classMapping.setMethodNameAndSignature( obf.getName(), obf.getSignature(), deobfName, deobfSignature );
68 95
69 // TODO: update ancestor/descendant methods in other classes in the inheritance hierarchy too 96 // TODO: update ancestor/descendant methods in other classes in the inheritance hierarchy too
97
70 } 98 }
71 99
72 public void setArgumentName( ArgumentEntry obf, String deobfName ) 100 public void setArgumentName( ArgumentEntry obf, String deobfName )