File: main.cc

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 (36 lines) | stat: -rw-r--r-- 925 bytes parent folder | download | duplicates (4)
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
#include <stdio.h>

struct Complex {
  double r;
  double i;
};

class Test {
  const char *_name;
public:
  Test (const char *n) : _name (n) {}
  const char *name () const { return _name; }
  void f (int i, Complex c) {}
  void run () {
    Complex c = { 2.0, .5 };
    f (10, c);
  }
};

aspect ContextTest {
  advice args (i, c) && that (obj) : before (int i, Test *obj, Complex c) {
    printf ("that: %s, int %d, Complex(%lf,%lf)\n", obj->name (), i, c.r, c.i);
  }
  advice args (i, c) && that (obj) : before (Test *obj, Complex c, int i) {
    printf ("that: %s, int %d, Complex(%lf,%lf)\n", obj->name (), i, c.r, c.i);
  }
};


int main () {
  Test t ("main()::t");
  printf ("Context information is requested by advice in arbitrary order:\n");
  printf ("==============================================================\n");
  t.run ();
  printf ("==============================================================\n");
}