From cf3ffcee30083a71e68e3edb9ecbb936cc255992 Mon Sep 17 00:00:00 2001 From: jeff Date: Sun, 28 Sep 2014 15:20:54 -0400 Subject: added proper support for renaming constructors --- src/cuchaz/enigma/analysis/EntryReference.java | 43 +++++++++++++++++++++++--- 1 file changed, 39 insertions(+), 4 deletions(-) (limited to 'src/cuchaz/enigma/analysis/EntryReference.java') diff --git a/src/cuchaz/enigma/analysis/EntryReference.java b/src/cuchaz/enigma/analysis/EntryReference.java index 768c113..df977fb 100644 --- a/src/cuchaz/enigma/analysis/EntryReference.java +++ b/src/cuchaz/enigma/analysis/EntryReference.java @@ -10,21 +10,28 @@ ******************************************************************************/ package cuchaz.enigma.analysis; +import java.util.Arrays; +import java.util.List; + import cuchaz.enigma.Util; import cuchaz.enigma.mapping.ClassEntry; +import cuchaz.enigma.mapping.ConstructorEntry; import cuchaz.enigma.mapping.Entry; public class EntryReference { + private static final List ConstructorNonNames = Arrays.asList( "this", "super" ); public E entry; public C context; - public EntryReference( E entry ) + private boolean m_isNamed; + + public EntryReference( E entry, String sourceName ) { - this( entry, null ); + this( entry, sourceName, null ); } - public EntryReference( E entry, C context ) + public EntryReference( E entry, String sourceName, C context ) { if( entry == null ) { @@ -33,9 +40,22 @@ public class EntryReference this.entry = entry; this.context = context; + + m_isNamed = sourceName != null && sourceName.length() > 0; + if( entry instanceof ConstructorEntry && ConstructorNonNames.contains( sourceName ) ) + { + m_isNamed = false; + } + } + + public EntryReference( E entry, C context, EntryReference other ) + { + this.entry = entry; + this.context = context; + m_isNamed = other.m_isNamed; } - public ClassEntry getClassEntry( ) + public ClassEntry getLocationClassEntry( ) { if( context != null ) { @@ -44,6 +64,21 @@ public class EntryReference return entry.getClassEntry(); } + public boolean isNamed( ) + { + return m_isNamed; + } + + public Entry getNameableEntry( ) + { + if( entry instanceof ConstructorEntry ) + { + // renaming a constructor really means renaming the class + return entry.getClassEntry(); + } + return entry; + } + @Override public int hashCode( ) { -- cgit v1.2.3