1 package jp.sourceforge.stigmata.birthmarks.kgram;
7 import java.util.ArrayList;
8 import java.util.HashSet;
12 import jp.sourceforge.stigmata.Birthmark;
13 import jp.sourceforge.stigmata.BirthmarkEnvironment;
14 import jp.sourceforge.stigmata.birthmarks.BirthmarkExtractVisitor;
16 import org.objectweb.asm.ClassVisitor;
17 import org.objectweb.asm.MethodVisitor;
21 * @author Haruaki TAMADA
24 public class KGramBasedBirthmarkExtractVisitor extends BirthmarkExtractVisitor{
26 private List<Integer> opcodes = new ArrayList<Integer>();
28 public KGramBasedBirthmarkExtractVisitor(ClassVisitor visitor, Birthmark birthmark, BirthmarkEnvironment environment){
29 super(visitor, birthmark, environment);
32 public int getKValue(){
36 public void setKValue(int kvalue){
40 public void visitEnd(){
41 KGramBuilder builder = KGramBuilder.getInstance();
42 KGram<Integer>[] kgrams = builder.<Integer>buildKGram(opcodes, getKValue());
44 for(KGram<Integer> kgram: kgrams){
45 addElement(new KGramBasedBirthmarkElement<Integer>(kgram));
50 public MethodVisitor visitMethod(int arg0, String arg1, String arg2, String arg3, String[] arg4){
51 MethodVisitor visitor = super.visitMethod(arg0, arg1, arg2, arg3, arg4);
52 MethodVisitor opcodeVisitor = new OpcodeExtractionMethodVisitor(visitor, opcodes);