diff options
| author | 2014-08-11 00:02:00 -0400 | |
|---|---|---|
| committer | 2014-08-11 00:02:00 -0400 | |
| commit | bba7c6a19c15bc82946176c79a4eba3612b25f17 (patch) | |
| tree | f0b55befaa6e7e532e9728dfa6b1c9cb36660594 /src/cuchaz/enigma/mapping/Renamer.java | |
| parent | added backwards navigation (diff) | |
| download | enigma-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.java | 28 |
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; | |||
| 15 | import java.io.OutputStream; | 15 | import java.io.OutputStream; |
| 16 | import java.util.zip.GZIPOutputStream; | 16 | import java.util.zip.GZIPOutputStream; |
| 17 | 17 | ||
| 18 | import cuchaz.enigma.analysis.Ancestries; | ||
| 19 | import cuchaz.enigma.analysis.MethodInheritanceTreeNode; | ||
| 20 | |||
| 18 | public class Renamer | 21 | public 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 ) |