1 24 25 package org.aspectj.compiler.crosscuts.ast; 26 import org.aspectj.compiler.base.ast.*; 27 import org.aspectj.compiler.base.*; 28 import org.aspectj.compiler.crosscuts.joinpoints.*; 29 30 import java.util.*; 31 32 public class PlanData { 33 public AspectDec inAspect; 34 private JpPlannerMaker jpPlannerMaker; 35 public Set bindingNames = new HashSet(); 36 37 public Type nameBindingType; 38 39 44 public PlanData(AspectDec inAspect, JpPlannerMaker jpPlannerMaker) { 45 this.jpPlannerMaker = jpPlannerMaker; 46 this.inAspect = inAspect; 47 } 48 49 52 public ASTObject getPlanMaker() { 53 if (jpPlannerMaker instanceof ASTObject) { 54 return (ASTObject)jpPlannerMaker; 55 } else { 56 return getAspectDec(); 57 } 58 } 59 60 public AspectDec getAspectDec() { 61 return inAspect; 62 } 63 64 public Type getNameBindingType() { 65 if (nameBindingType == null) { 66 if (inAspect == null) return null; 67 return inAspect.getType(); 68 } else { 69 return nameBindingType; 70 } 71 } 72 73 public PlanData makeInner(NamePcd bindingName) { 74 PlanData pd = new PlanData(this.inAspect, this.jpPlannerMaker); 75 pd.bindingNames.addAll(this.bindingNames); 76 pd.bindingNames.add(bindingName); 77 if (bindingName.getParentName() != null) { 78 pd.nameBindingType = bindingName.getParentName().getType(); 79 } else { 80 pd.nameBindingType = this.nameBindingType; 81 } 82 return pd; 83 } 84 85 public boolean isPlanning(NamePcd namePcd) { 86 return bindingNames.contains(namePcd); 87 } 88 } 89 | Popular Tags |