abc.weaving.aspectinfo
Class ClassInitialization
java.lang.Object
abc.weaving.aspectinfo.Syntax
abc.weaving.aspectinfo.Pointcut
abc.weaving.aspectinfo.ShadowPointcut
abc.weaving.aspectinfo.ClassInitialization
public class ClassInitialization
- extends ShadowPointcut
Handler for initialization
shadow pointcut.
- Author:
- Aske Simon Christensen, Ganesh Sittampalam, Damien Sereni
Method Summary |
protected Residue |
matchesAt(ShadowMatch sm)
Shadow pointcuts just need to know the ShadowMatch |
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 |
ClassInitialization
public ClassInitialization(Position pos)
matchesAt
protected Residue matchesAt(ShadowMatch sm)
- Description copied from class:
ShadowPointcut
- Shadow pointcuts just need to know the ShadowMatch
- Specified by:
matchesAt
in class ShadowPointcut
toString
public java.lang.String toString()
- Description copied from class:
Pointcut
- Subclasses must define toString, for debugging purposes
- Specified by:
toString
in class Pointcut
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 Pointcut
- 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