1 package jp.sourceforge.stigmata.birthmarks.kgram;
3 import java.util.ArrayList;
6 import jp.sourceforge.stigmata.Birthmark;
7 import jp.sourceforge.stigmata.BirthmarkContext;
8 import jp.sourceforge.stigmata.birthmarks.BirthmarkExtractVisitor;
10 import org.objectweb.asm.ClassVisitor;
11 import org.objectweb.asm.MethodVisitor;
15 * @author Haruaki TAMADA
17 public class KGramBasedBirthmarkExtractVisitor extends BirthmarkExtractVisitor{
19 private List<Integer> opcodes = new ArrayList<Integer>();
21 public KGramBasedBirthmarkExtractVisitor(ClassVisitor visitor, Birthmark birthmark, BirthmarkContext context){
22 super(visitor, birthmark, context);
25 public int getKValue(){
29 public void setKValue(int kvalue){
34 public void visitEnd(){
35 KGramBuilder builder = KGramBuilder.getInstance();
36 KGram<Integer>[] kgrams = builder.<Integer>buildKGram(opcodes, getKValue());
38 for(KGram<Integer> kgram: kgrams){
39 addElement(new KGramBasedBirthmarkElement<Integer>(kgram));
44 public MethodVisitor visitMethod(int arg0, String arg1, String arg2, String arg3, String[] arg4){
45 MethodVisitor visitor = super.visitMethod(arg0, arg1, arg2, arg3, arg4);
46 MethodVisitor opcodeVisitor = new OpcodeExtractionMethodVisitor(visitor, opcodes);