1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40
|
#ifndef __Action_ah__
#define __Action_ah__
#include <stdio.h>
aspect Action {
advice execution("% A::%(...)") || execution("% b(...)") : around() {
printf("A: before(exec) %s\n", JoinPoint::signature());
printf("that : %p\n" , tjp->that());
printf("target: %p\n" ,tjp->target());
tjp->proceed();
printf("A: after(exec) %s\n", JoinPoint::signature());
}
advice call("% A::%(...)") || call("% b(...)") : around() {
printf("A: before(call) %s\n", JoinPoint::signature());
printf("that : %p\n" , tjp->that());
printf("target: %p\n" ,tjp->target());
tjp->proceed();
printf("A: after(call) %s\n", JoinPoint::signature());
}
};
aspect ActionB {
advice execution("% A::%(...)") || execution("% b(...)") : around() {
printf("B: before(exec) %s\n", JoinPoint::signature());
printf("that : %p\n" , tjp->that());
printf("target: %p\n" ,tjp->target());
tjp->proceed();
printf("B: after(exec) %s\n", JoinPoint::signature());
}
advice call("% A::%(...)") || call("% b(...)") : around() {
printf("B: before(call) %s\n", JoinPoint::signature());
printf("that : %p\n" , tjp->that());
printf("target: %p\n" ,tjp->target());
tjp->proceed();
printf("B: after(call) %s\n", JoinPoint::signature());
}
};
#endif // __Action_ah__
|