1
#ifndef __PointerTracker_ah__
2
#define __PointerTracker_ah__
6
aspect PointerTracker {
7
advice call ("% ...::%(...)") && result("% *") : before () {
8
printf (" call to '%s'\n", tjp->signature ());
11
advice execution ("% ...::%(...)") && result("% *") : after () {
12
printf (" executed '%s' -> 0x%lu\n", tjp->signature (),
13
(unsigned long)*(void**)tjp->result ());
16
advice call ("% %(...)") && result(res) : after (long **res) {
17
printf (" result after call: 0x%lu\n", (unsigned long)res);
21
aspect ResultManipulator {
22
advice call ("% select_v()") && result ("int &") : after () {
23
static int new_result = 815;
24
JoinPoint::Result * result = tjp->result ();
25
printf (" changing result! now: %d\n", **result);
26
*result = &new_result;
30
#endif // __PointerTracker_ah__