| 
|||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | ||||||||
java.lang.Objectabc.weaving.aspectinfo.Syntax
abc.weaving.aspectinfo.Pointcut
abc.weaving.aspectinfo.If
public class If
Handler for if condition pointcut.
| Nested Class Summary | 
|---|
| Nested classes/interfaces inherited from class abc.weaving.aspectinfo.Pointcut | 
|---|
Pointcut.DNF | 
| Constructor Summary | |
|---|---|
If(java.util.List vars,
   MethodSig impl,
   int jp,
   int jpsp,
   int ejp,
   Position pos)
 | 
|
| Method Summary | |
|---|---|
 int | 
enclosingJoinPointPos()
 | 
 void | 
getFreeVars(java.util.Set result)
Get a list of free variables bound by this pointcut  | 
 MethodSig | 
getImpl()
Get the signature of the method implementing the if condition. | 
 java.util.List | 
getVars()
Get the pointcut variables that should be given as arguments to the method implementing the if condition. | 
 boolean | 
hasEnclosingJoinPoint()
 | 
 boolean | 
hasJoinPoint()
 | 
 boolean | 
hasJoinPointStaticPart()
 | 
protected  Pointcut | 
inline(java.util.Hashtable renameEnv,
       java.util.Hashtable typeEnv,
       Aspect context,
       int cflowdepth)
Inlining should remove all PointcutRefs, and return a pointcut that is alpha-renamed  | 
 int | 
joinPointPos()
 | 
 int | 
joinPointStaticPartPos()
 | 
 Residue | 
matchesAt(WeavingEnv we,
          SootClass cls,
          SootMethod method,
          ShadowMatch sm)
Given a context and weaving environment, produce a residue  | 
 void | 
registerSetupAdvice(Aspect context,
                    java.util.Hashtable typeMap)
If any synthetic advice is required to implement this pointcut, this method should take care of adding it.  | 
 java.lang.String | 
toString()
Subclasses must define toString, for debugging purposes  | 
 boolean | 
unify(Pointcut otherpc,
      Unification unification)
Attempt to unify two pointcuts. pc.unify(pc', unification) should return true if the pointcuts can be unified, and set the renamings appropriately in unification.  | 
| Methods inherited from class abc.weaving.aspectinfo.Pointcut | 
|---|
dnf, freshVar, normalize | 
| Methods inherited from class abc.weaving.aspectinfo.Syntax | 
|---|
getPosition | 
| Methods inherited from class java.lang.Object | 
|---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait | 
| Constructor Detail | 
|---|
public If(java.util.List vars,
          MethodSig impl,
          int jp,
          int jpsp,
          int ejp,
          Position pos)
| Method Detail | 
|---|
public boolean hasJoinPoint()
public boolean hasJoinPointStaticPart()
public boolean hasEnclosingJoinPoint()
public int joinPointPos()
public int joinPointStaticPartPos()
public int enclosingJoinPointPos()
public java.util.List getVars()
if condition.
Var objects.public MethodSig getImpl()
if condition.
public java.lang.String toString()
Pointcut
toString in class Pointcut
public Residue matchesAt(WeavingEnv we,
                         SootClass cls,
                         SootMethod method,
                         ShadowMatch sm)
Pointcut
matchesAt in class Pointcut
protected Pointcut inline(java.util.Hashtable renameEnv,
                          java.util.Hashtable typeEnv,
                          Aspect context,
                          int cflowdepth)
Pointcut
inline in class PointcutrenameEnv - A mapping from pointcut names to the Vars 
                    they should be renamed to. If a name isn't in the 
                    map, it doesn't need to be renamed.typeEnv - A mapping from pointcut names to AbcTypes. 
                    Every variable that can appear free in the pointcut 
                    must be listed. The names are those before any
                    renaming takes place.context - The Aspect in which the root pointcut is
                    defined. This is required because references to
                    abstract pointcuts must be resolved to the concrete
                    pointcut using this aspect.cflowdepth - The number of surrounding cflows. 
                    This is required
                    to determine the correct precedence for the 
                    synthetic advice used to implement 
                    cflow.
public void registerSetupAdvice(Aspect context,
                                java.util.Hashtable typeMap)
Pointcut
registerSetupAdvice in class Pointcutcontext - The aspect in which the pointcut is definedtypeMap - A mapping from formal name to AbcType for
                 all the formal parameters to the pointcutpublic void getFreeVars(java.util.Set result)
Pointcut
getFreeVars in class Pointcutresult - The results should be placed in this set
                 (having it as a parameter allows it to be built up
                 incrementally, which is more efficient than 
                 repeatedly taking the union of sets)
public boolean unify(Pointcut otherpc,
                     Unification unification)
PointcutA default implementation is provided, but all subclasses should override this - otherwise cflow CSE will be disabled for cflow that use these pointcuts.
Typical implementations for pointcuts that introduce no free variables are straightforward (see the And pointcut, for example). For pointcuts that introduce free variables, the Var.unify method is used to actually update the renamings (see the Args pointcut).
unify in class Pointcutotherpc - the pointcut that should be unify with thisunification - the Unification that should be set.
AndPointcut.unify example, 
Var.unify, 
Unification
  | 
|||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | ||||||||