summaryrefslogtreecommitdiff
path: root/src/cuchaz/enigma/mapping/MethodMapping.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/cuchaz/enigma/mapping/MethodMapping.java')
-rw-r--r--src/cuchaz/enigma/mapping/MethodMapping.java136
1 files changed, 136 insertions, 0 deletions
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 @@
1/*******************************************************************************
2 * Copyright (c) 2014 Jeff Martin.
3 * All rights reserved. This program and the accompanying materials
4 * are made available under the terms of the GNU Public License v3.0
5 * which accompanies this distribution, and is available at
6 * http://www.gnu.org/licenses/gpl.html
7 *
8 * Contributors:
9 * Jeff Martin - initial API and implementation
10 ******************************************************************************/
11package cuchaz.enigma.mapping;
12
13import java.io.Serializable;
14import java.util.Map;
15import java.util.TreeMap;
16
17public class MethodMapping implements Serializable
18{
19 private static final long serialVersionUID = -4409570216084263978L;
20
21 private String m_obfName;
22 private String m_deobfName;
23 private String m_obfSignature;
24 private String m_deobfSignature;
25 private Map<Integer,ArgumentMapping> m_arguments;
26
27 // NOTE: this argument order is important for the MethodReader/MethodWriter
28 public MethodMapping( String obfName, String deobfName, String obfSignature, String deobfSignature )
29 {
30 m_obfName = obfName;
31 m_deobfName = deobfName;
32 m_obfSignature = obfSignature;
33 m_deobfSignature = deobfSignature;
34 m_arguments = new TreeMap<Integer,ArgumentMapping>();
35 }
36
37 public String getObfName( )
38 {
39 return m_obfName;
40 }
41
42 public String getDeobfName( )
43 {
44 return m_deobfName;
45 }
46 public void setDeobfName( String val )
47 {
48 m_deobfName = val;
49 }
50
51 public String getObfSignature( )
52 {
53 return m_obfSignature;
54 }
55
56 public String getDeobfSignature( )
57 {
58 return m_deobfSignature;
59 }
60 public void setDeobfSignature( String val )
61 {
62 m_deobfSignature = val;
63 }
64
65 public Iterable<ArgumentMapping> arguments( )
66 {
67 return m_arguments.values();
68 }
69
70 protected void addArgumentMapping( ArgumentMapping argumentMapping )
71 {
72 m_arguments.put( argumentMapping.getIndex(), argumentMapping );
73 }
74
75 public String getObfArgumentName( int index )
76 {
77 ArgumentMapping argumentMapping = m_arguments.get( index );
78 if( argumentMapping != null )
79 {
80 return argumentMapping.getName();
81 }
82
83 return null;
84 }
85
86 public String getDeobfArgumentName( int index )
87 {
88 ArgumentMapping argumentMapping = m_arguments.get( index );
89 if( argumentMapping != null )
90 {
91 return argumentMapping.getName();
92 }
93
94 return null;
95 }
96
97 public void setArgumentName( int index, String name )
98 {
99 ArgumentMapping argumentMapping = m_arguments.get( index );
100 if( argumentMapping == null )
101 {
102 argumentMapping = new ArgumentMapping( index, name );
103 m_arguments.put( index, argumentMapping );
104 }
105 else
106 {
107 argumentMapping.setName( name );
108 }
109 }
110
111 @Override
112 public String toString( )
113 {
114 StringBuilder buf = new StringBuilder();
115 buf.append( "\t" );
116 buf.append( m_obfName );
117 buf.append( " <-> " );
118 buf.append( m_deobfName );
119 buf.append( "\n" );
120 buf.append( "\t" );
121 buf.append( m_obfSignature );
122 buf.append( " <-> " );
123 buf.append( m_deobfSignature );
124 buf.append( "\n" );
125 buf.append( "\tArguments:\n" );
126 for( ArgumentMapping argumentMapping : m_arguments.values() )
127 {
128 buf.append( "\t\t" );
129 buf.append( argumentMapping.getIndex() );
130 buf.append( " <-> " );
131 buf.append( argumentMapping.getName() );
132 buf.append( "\n" );
133 }
134 return buf.toString();
135 }
136}