From 4349d22cc8abf5ec74075dde1b45c5f2f8679bbf Mon Sep 17 00:00:00 2001 From: jeff Date: Wed, 30 Jul 2014 23:43:09 -0400 Subject: switched to line-by-line mergable, human-readable file format for mappings --- src/cuchaz/enigma/mapping/MethodMapping.java | 136 +++++++++++++++++++++++++++ 1 file changed, 136 insertions(+) create mode 100644 src/cuchaz/enigma/mapping/MethodMapping.java (limited to 'src/cuchaz/enigma/mapping/MethodMapping.java') diff --git a/src/cuchaz/enigma/mapping/MethodMapping.java b/src/cuchaz/enigma/mapping/MethodMapping.java new file mode 100644 index 0000000..f2bc54d --- /dev/null +++ b/src/cuchaz/enigma/mapping/MethodMapping.java @@ -0,0 +1,136 @@ +/******************************************************************************* + * Copyright (c) 2014 Jeff Martin. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the GNU Public License v3.0 + * which accompanies this distribution, and is available at + * http://www.gnu.org/licenses/gpl.html + * + * Contributors: + * Jeff Martin - initial API and implementation + ******************************************************************************/ +package cuchaz.enigma.mapping; + +import java.io.Serializable; +import java.util.Map; +import java.util.TreeMap; + +public class MethodMapping implements Serializable +{ + private static final long serialVersionUID = -4409570216084263978L; + + private String m_obfName; + private String m_deobfName; + private String m_obfSignature; + private String m_deobfSignature; + private Map m_arguments; + + // NOTE: this argument order is important for the MethodReader/MethodWriter + public MethodMapping( String obfName, String deobfName, String obfSignature, String deobfSignature ) + { + m_obfName = obfName; + m_deobfName = deobfName; + m_obfSignature = obfSignature; + m_deobfSignature = deobfSignature; + m_arguments = new TreeMap(); + } + + public String getObfName( ) + { + return m_obfName; + } + + public String getDeobfName( ) + { + return m_deobfName; + } + public void setDeobfName( String val ) + { + m_deobfName = val; + } + + public String getObfSignature( ) + { + return m_obfSignature; + } + + public String getDeobfSignature( ) + { + return m_deobfSignature; + } + public void setDeobfSignature( String val ) + { + m_deobfSignature = val; + } + + public Iterable arguments( ) + { + return m_arguments.values(); + } + + protected void addArgumentMapping( ArgumentMapping argumentMapping ) + { + m_arguments.put( argumentMapping.getIndex(), argumentMapping ); + } + + public String getObfArgumentName( int index ) + { + ArgumentMapping argumentMapping = m_arguments.get( index ); + if( argumentMapping != null ) + { + return argumentMapping.getName(); + } + + return null; + } + + public String getDeobfArgumentName( int index ) + { + ArgumentMapping argumentMapping = m_arguments.get( index ); + if( argumentMapping != null ) + { + return argumentMapping.getName(); + } + + return null; + } + + public void setArgumentName( int index, String name ) + { + ArgumentMapping argumentMapping = m_arguments.get( index ); + if( argumentMapping == null ) + { + argumentMapping = new ArgumentMapping( index, name ); + m_arguments.put( index, argumentMapping ); + } + else + { + argumentMapping.setName( name ); + } + } + + @Override + public String toString( ) + { + StringBuilder buf = new StringBuilder(); + buf.append( "\t" ); + buf.append( m_obfName ); + buf.append( " <-> " ); + buf.append( m_deobfName ); + buf.append( "\n" ); + buf.append( "\t" ); + buf.append( m_obfSignature ); + buf.append( " <-> " ); + buf.append( m_deobfSignature ); + buf.append( "\n" ); + buf.append( "\tArguments:\n" ); + for( ArgumentMapping argumentMapping : m_arguments.values() ) + { + buf.append( "\t\t" ); + buf.append( argumentMapping.getIndex() ); + buf.append( " <-> " ); + buf.append( argumentMapping.getName() ); + buf.append( "\n" ); + } + return buf.toString(); + } +} -- cgit v1.2.3