abc.weaving.aspectinfo
Class ThisType
java.lang.Object
abc.weaving.aspectinfo.Syntax
abc.weaving.aspectinfo.Pointcut
abc.weaving.aspectinfo.DynamicValuePointcut
abc.weaving.aspectinfo.ThisAny
abc.weaving.aspectinfo.ThisType
public class ThisType
- extends ThisAny
Handler for this
condition pointcut with a type argument.
- Author:
- Aske Simon Christensen, Ganesh Sittampalam, Damien Sereni
Method Summary |
AbcType |
getType()
Get the type that is matched against this
by this this pointcut. |
protected Residue |
matchesAt(WeavingEnv we,
ContextValue cv)
|
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 java.lang.Object |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait |
ThisType
public ThisType(AbcType type,
Position pos)
getType
public AbcType getType()
- Get the type that is matched against
this
by this this
pointcut.
toString
public java.lang.String toString()
- Description copied from class:
Pointcut
- Subclasses must define toString, for debugging purposes
- Overrides:
toString
in class ThisAny
matchesAt
protected Residue matchesAt(WeavingEnv we,
ContextValue cv)
- Overrides:
matchesAt
in class ThisAny
unify
public boolean unify(Pointcut otherpc,
Unification unification)
- Description copied from class:
Pointcut
- 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. There are
two cases for unification: if unification.unifyWithFirst()
is true, then the unification should only succeed if this
pc can be renamed to pc', with the unification pointcut equal
to this. Otherwise, the unification pointcut can be anything,
as long as it can be renamed both to this and pc'.
A 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).
- Overrides:
unify
in class ThisAny
- Parameters:
otherpc
- the pointcut that should be unify with thisunification
- the Unification that should be set.
- Returns:
- true iff the unification is succesful. If true is returned,
then Unification.setPointcut(the unified pointcut) must have been
called in the body of unify().
- See Also:
AndPointcut.unify example
,
Var.unify
,
Unification