summaryrefslogtreecommitdiff
path: root/src/cuchaz/enigma/convert/ClassNamer.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/cuchaz/enigma/convert/ClassNamer.java')
-rw-r--r--src/cuchaz/enigma/convert/ClassNamer.java64
1 files changed, 64 insertions, 0 deletions
diff --git a/src/cuchaz/enigma/convert/ClassNamer.java b/src/cuchaz/enigma/convert/ClassNamer.java
new file mode 100644
index 0000000..1b6e81c
--- /dev/null
+++ b/src/cuchaz/enigma/convert/ClassNamer.java
@@ -0,0 +1,64 @@
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.convert;
12
13import java.util.Map;
14
15import com.google.common.collect.BiMap;
16import com.google.common.collect.Maps;
17
18public class ClassNamer {
19
20 public interface SidedClassNamer {
21 String getName(String name);
22 }
23
24 private Map<String,String> m_sourceNames;
25 private Map<String,String> m_destNames;
26
27 public ClassNamer(BiMap<ClassIdentity,ClassIdentity> mappings) {
28 // convert the identity mappings to name maps
29 m_sourceNames = Maps.newHashMap();
30 m_destNames = Maps.newHashMap();
31 int i = 0;
32 for (Map.Entry<ClassIdentity,ClassIdentity> entry : mappings.entrySet()) {
33 String name = String.format("M%04d", i++);
34 m_sourceNames.put(entry.getKey().getClassEntry().getName(), name);
35 m_destNames.put(entry.getValue().getClassEntry().getName(), name);
36 }
37 }
38
39 public String getSourceName(String name) {
40 return m_sourceNames.get(name);
41 }
42
43 public String getDestName(String name) {
44 return m_destNames.get(name);
45 }
46
47 public SidedClassNamer getSourceNamer() {
48 return new SidedClassNamer() {
49 @Override
50 public String getName(String name) {
51 return getSourceName(name);
52 }
53 };
54 }
55
56 public SidedClassNamer getDestNamer() {
57 return new SidedClassNamer() {
58 @Override
59 public String getName(String name) {
60 return getDestName(name);
61 }
62 };
63 }
64}