1 package jp.sourceforge.stigmata.birthmarks;
7 import java.io.BufferedReader;
8 import java.io.InputStreamReader;
10 import java.util.HashMap;
13 import jp.sourceforge.talisman.csvio.CsvLine;
14 import jp.sourceforge.talisman.csvio.CsvParser;
18 * @author Haruaki Tamada
21 public class OpcodeManager{
22 private Map<Integer, Opcode> opcodeMap = new HashMap<Integer, Opcode>();
23 private static OpcodeManager manager = new OpcodeManager();
26 * private constructor for singleton pattern.
28 private OpcodeManager(){
30 URL location = OpcodeManager.class.getResource("/META-INF/bytecode.def");
31 BufferedReader in = new BufferedReader(new InputStreamReader(location.openStream()));
32 CsvParser parser = new CsvParser(in);
33 while(parser.hasNext()){
34 CsvLine line = parser.next();
35 String[] values = line.getValues();
36 if(values.length == 5){
37 Opcode def = new Opcode(
38 Integer.parseInt(values[0]), values[1],
39 Integer.parseInt(values[2]),
40 Integer.parseInt(values[3]), values[4]
42 opcodeMap.put(def.getOpcode(), def);
46 throw new InternalError(e.getMessage());
50 public static OpcodeManager getInstance(){
54 public Opcode getOpcode(int opcode){
55 return opcodeMap.get(opcode);