From 237b2ed2a6b6f537cdbdf9fc9c6d0c7743f34375 Mon Sep 17 00:00:00 2001 From: jeff Date: Thu, 21 Aug 2014 01:10:37 -0400 Subject: fixed call graph searching added system to navigate multiple tokens for the same entry in a behavior --- src/cuchaz/enigma/mapping/ConstructorEntry.java | 54 ++++++++++++++++++++----- src/cuchaz/enigma/mapping/Translator.java | 28 ++++++++----- 2 files changed, 63 insertions(+), 19 deletions(-) (limited to 'src/cuchaz/enigma/mapping') diff --git a/src/cuchaz/enigma/mapping/ConstructorEntry.java b/src/cuchaz/enigma/mapping/ConstructorEntry.java index 0f7dab6..ad029e1 100644 --- a/src/cuchaz/enigma/mapping/ConstructorEntry.java +++ b/src/cuchaz/enigma/mapping/ConstructorEntry.java @@ -21,16 +21,17 @@ public class ConstructorEntry implements BehaviorEntry, Serializable private ClassEntry m_classEntry; private String m_signature; + public ConstructorEntry( ClassEntry classEntry ) + { + this( classEntry, null ); + } + public ConstructorEntry( ClassEntry classEntry, String signature ) { if( classEntry == null ) { throw new IllegalArgumentException( "Class cannot be null!" ); } - if( signature == null ) - { - throw new IllegalArgumentException( "Method signature cannot be null!" ); - } m_classEntry = classEntry; m_signature = signature; @@ -47,11 +48,20 @@ public class ConstructorEntry implements BehaviorEntry, Serializable { return m_classEntry; } - + @Override public String getName( ) { - return m_classEntry.getName(); + if( isStatic() ) + { + return ""; + } + return ""; + } + + public boolean isStatic( ) + { + return m_signature == null; } @Override @@ -69,7 +79,14 @@ public class ConstructorEntry implements BehaviorEntry, Serializable @Override public int hashCode( ) { - return Util.combineHashesOrdered( m_classEntry, m_signature ); + if( isStatic() ) + { + return Util.combineHashesOrdered( m_classEntry ); + } + else + { + return Util.combineHashesOrdered( m_classEntry, m_signature ); + } } @Override @@ -84,12 +101,31 @@ public class ConstructorEntry implements BehaviorEntry, Serializable public boolean equals( ConstructorEntry other ) { - return m_classEntry.equals( other.m_classEntry ) && m_signature.equals( other.m_signature ); + if( isStatic() != other.isStatic() ) + { + return false; + } + + if( isStatic() ) + { + return m_classEntry.equals( other.m_classEntry ); + } + else + { + return m_classEntry.equals( other.m_classEntry ) && m_signature.equals( other.m_signature ); + } } @Override public String toString( ) { - return m_classEntry.getName() + m_signature; + if( isStatic() ) + { + return m_classEntry.getName() + "." + getName(); + } + else + { + return m_classEntry.getName() + "." + getName() + m_signature; + } } } diff --git a/src/cuchaz/enigma/mapping/Translator.java b/src/cuchaz/enigma/mapping/Translator.java index e34c31b..a671c27 100644 --- a/src/cuchaz/enigma/mapping/Translator.java +++ b/src/cuchaz/enigma/mapping/Translator.java @@ -30,27 +30,28 @@ public class Translator m_ancestries = ancestries; } - public Entry translateEntry( Entry entry ) + @SuppressWarnings( "unchecked" ) + public T translateEntry( T entry ) { if( entry instanceof ClassEntry ) { - return translateEntry( (ClassEntry)entry ); + return (T)translateEntry( (ClassEntry)entry ); } else if( entry instanceof FieldEntry ) { - return translateEntry( (FieldEntry)entry ); + return (T)translateEntry( (FieldEntry)entry ); } else if( entry instanceof MethodEntry ) { - return translateEntry( (MethodEntry)entry ); + return (T)translateEntry( (MethodEntry)entry ); } else if( entry instanceof ConstructorEntry ) { - return translateEntry( (ConstructorEntry)entry ); + return (T)translateEntry( (ConstructorEntry)entry ); } else if( entry instanceof ArgumentEntry ) { - return translateEntry( (ArgumentEntry)entry ); + return (T)translateEntry( (ArgumentEntry)entry ); } else { @@ -194,10 +195,17 @@ public class Translator public ConstructorEntry translateEntry( ConstructorEntry in ) { - return new ConstructorEntry( - translateEntry( in.getClassEntry() ), - translateSignature( in.getSignature() ) - ); + if( in.isStatic() ) + { + return new ConstructorEntry( translateEntry( in.getClassEntry() ) ); + } + else + { + return new ConstructorEntry( + translateEntry( in.getClassEntry() ), + translateSignature( in.getSignature() ) + ); + } } public BehaviorEntry translateEntry( BehaviorEntry in ) -- cgit v1.2.3