1 19 20 package soot.javaToJimple; 21 import java.util.*; 22 23 public class PrivateAccessUses extends polyglot.visit.NodeVisitor { 24 25 private ArrayList list; 26 private ArrayList avail; 27 28 public ArrayList getList() { 29 return list; 30 } 31 32 public void avail(ArrayList list){ 33 avail = list; 34 } 35 36 public PrivateAccessUses(){ 37 list = new ArrayList(); 38 } 39 40 public polyglot.ast.Node leave(polyglot.ast.Node old, polyglot.ast.Node n, polyglot.visit.NodeVisitor visitor) { 41 42 if (n instanceof polyglot.ast.Field) { 43 44 polyglot.types.FieldInstance fi = ((polyglot.ast.Field)n).fieldInstance(); 45 46 if (avail.contains(new polyglot.util.IdentityKey(fi))){ 47 list.add(new polyglot.util.IdentityKey(fi)); 48 } 49 } 50 if (n instanceof polyglot.ast.Call) { 51 52 polyglot.types.ProcedureInstance pi = ((polyglot.ast.Call)n).methodInstance(); 53 54 if (avail.contains(new polyglot.util.IdentityKey(pi))) { 55 list.add(new polyglot.util.IdentityKey(pi)); 56 } 57 } 58 if (n instanceof polyglot.ast.New) { 59 60 polyglot.types.ProcedureInstance pi = ((polyglot.ast.New)n).constructorInstance(); 61 62 if (avail.contains(new polyglot.util.IdentityKey(pi))) { 63 list.add(new polyglot.util.IdentityKey(pi)); 64 } 65 } 66 if (n instanceof polyglot.ast.ConstructorCall) { 67 68 polyglot.types.ProcedureInstance pi = ((polyglot.ast.ConstructorCall)n).constructorInstance(); 69 70 if (avail.contains(new polyglot.util.IdentityKey(pi))) { 71 list.add(new polyglot.util.IdentityKey(pi)); 72 } 73 } 74 return n; 75 } 76 } 77 | Popular Tags |