File: CFlow.ah

package info (click to toggle)
aspectc%2B%2B 1.0pre4~svn.20090918-1
  • links: PTS, VCS
  • area: main
  • in suites: squeeze
  • size: 117,308 kB
  • ctags: 410,601
  • sloc: cpp: 1,883,007; ansic: 17,279; sh: 2,190; makefile: 1,088
file content (25 lines) | stat: -rw-r--r-- 665 bytes parent folder | download | duplicates (3)
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
#ifndef __CFlow_ah__
#define __CFlow_ah__

#include <stdio.h>

aspect CFlow { 
  pointcut methods(int i) = args(i) && execution ("void Base::b1(...)") && 
    (cflow(execution("void %::b2()"))||cflow(execution("void %::b3()")));
  
public:
  
  advice methods (i) : before (int i) {
    printf ("before \"%s\": %d\n", tjp->signature (), i);
  }

  advice execution("% %::b%(...)") && (cflow(execution("void %::b2()"))||
                                       cflow(call("void f()"))) :
    around () {
    printf ("before %s under b2\n", tjp->signature ());
    tjp->proceed ();
    printf ("after %s under b2\n", tjp->signature ());
  }
};

#endif // __CFlow_ah__