From 360bbd1c2fca8cbd575907b7d930a8072fccb0c2 Mon Sep 17 00:00:00 2001 From: jeff Date: Mon, 1 Sep 2014 22:52:07 -0400 Subject: refactored jar,translation index. fixed bug with field renaming when fields are shadowed by subclasses --- src/cuchaz/enigma/mapping/Translator.java | 21 ++++++++++++++------- 1 file changed, 14 insertions(+), 7 deletions(-) (limited to 'src/cuchaz/enigma/mapping/Translator.java') diff --git a/src/cuchaz/enigma/mapping/Translator.java b/src/cuchaz/enigma/mapping/Translator.java index 23bf095..f5aafdd 100644 --- a/src/cuchaz/enigma/mapping/Translator.java +++ b/src/cuchaz/enigma/mapping/Translator.java @@ -16,27 +16,27 @@ import java.util.Map; import com.beust.jcommander.internal.Maps; -import cuchaz.enigma.analysis.Ancestries; +import cuchaz.enigma.analysis.TranslationIndex; import cuchaz.enigma.mapping.SignatureUpdater.ClassNameUpdater; public class Translator { private TranslationDirection m_direction; - public Map m_classes; - private Ancestries m_ancestries; + private Map m_classes; + private TranslationIndex m_index; public Translator( ) { m_direction = null; m_classes = Maps.newHashMap(); - m_ancestries = new Ancestries(); + m_index = new TranslationIndex(); } - protected Translator( TranslationDirection direction, Map classes, Ancestries ancestries ) + public Translator( TranslationDirection direction, Map classes, TranslationIndex index ) { m_direction = direction; m_classes = classes; - m_ancestries = ancestries; + m_index = index; } @SuppressWarnings( "unchecked" ) @@ -145,6 +145,13 @@ public class Translator return translatedName; } } + + // is the field implemented in this class? + if( m_index.containsField( className, in.getName() ) ) + { + // stop traversing the superclass chain + break; + } } return null; } @@ -291,7 +298,7 @@ public class Translator { List ancestry = new ArrayList(); ancestry.add( className ); - ancestry.addAll( m_ancestries.getAncestry( className ) ); + ancestry.addAll( m_index.getAncestry( className ) ); return ancestry; } -- cgit v1.2.3