1 24 25 package org.aspectj.compiler.crosscuts.joinpoints; 26 27 import org.aspectj.compiler.crosscuts.ast.*; 28 import org.aspectj.compiler.base.ast.*; 29 30 import org.aspectj.compiler.base.JavaCompiler; 31 32 import java.util.*; 33 34 36 public class CFlowEntryPlan extends JpPlan { 37 private CFlowPlanner cflowPlanner; 38 private JpPlan plan; 39 40 public CFlowEntryPlan(JpPlan innerPlan, CFlowPlanner cflowPlanner) { 41 super(innerPlan.joinPoint); 42 43 this.cflowPlanner = cflowPlanner; 44 plan = innerPlan; 45 } 46 47 public int getPreSortOrder() { 48 if (cflowPlanner.getIncludesRoot()) return CFLOWENTRY_ROOT; 49 else return CFLOWENTRY_NOROOT; 50 } 51 52 60 public int compareTo(Object o) { 61 int ret = super.compareTo(o); 62 if (ret != 0) return ret; 63 64 if (! (o instanceof CFlowEntryPlan) ) return 0; 65 66 CFlowEntryPlan p = (CFlowEntryPlan)o; 67 if (cflowPlanner.getIncludesRoot() != p.cflowPlanner.getIncludesRoot()) return 0; 68 69 if (plan.dependsOn(p.cflowPlanner)) { 71 if (p.cflowPlanner.getIncludesRoot()) return +1; 73 else return -1; 74 } else if (p.plan.dependsOn(cflowPlanner)) { 75 if (cflowPlanner.getIncludesRoot()) return -1; 77 else return +1; 78 } else { 79 return 0; 81 } 82 } 83 84 85 public void wrapJoinPoint(JoinPoint jp) { 86 jp.setStmts(wrapPushPop(jp.getStmts())); 87 } 88 89 public Stmts wrapPushPop(Stmts stmts) { 90 return cflowPlanner.wrapPushPop(plan, stmts); 91 } 92 93 public String toString() { 94 return "cflow" + super.toString(); 95 } 96 } 97 | Popular Tags |