1 package jp.sourceforge.stigmata.birthmarks.wsp;
7 import java.io.BufferedReader;
8 import java.io.IOException;
9 import java.io.InputStreamReader;
11 import java.util.HashMap;
14 import jp.sourceforge.talisman.csvio.CsvLine;
15 import jp.sourceforge.talisman.csvio.CsvParser;
19 * @author Haruaki Tamada
22 public class OpcodeManager{
23 private static final Map<Integer, Opcode> OPCODE_MAP = new HashMap<Integer, Opcode>();
24 private static OpcodeManager manager = new OpcodeManager();
28 URL location = StackPatternBasedBirthmarkExtractor.class.getResource("/META-INF/bytecode.def");
29 BufferedReader in = new BufferedReader(new InputStreamReader(location.openStream()));
30 CsvParser parser = new CsvParser(in);
31 while(parser.hasNext()){
32 CsvLine line = parser.next();
33 String[] values = line.getValues();
34 if(values.length == 5){
35 Opcode def = new Opcode(
36 Integer.parseInt(values[0]), values[1],
37 Integer.parseInt(values[2]),
38 Integer.parseInt(values[3]), values[4]
40 OPCODE_MAP.put(def.getOpcode(), def);
43 } catch(IOException e){
44 throw new InternalError(e.getMessage());
49 * private constructor for singleton pattern.
51 private OpcodeManager(){
54 public static OpcodeManager getInstance(){
58 public Opcode getOpcode(int opcode){
59 return OPCODE_MAP.get(opcode);