Jeremie Pelletier Wrote:
> Sjoerd van Leent Wrote:
>
> > OK, to make matters worse.
> >
> > As I was reading so many things about properties, keywords and a bunch of
> > other interesting things, perhaps triggers.
> >
> > Triggers are, in my opinion, functions that act as delegates, and are
> > called before or after one or more other functions. Maybe we can do
> > something with this? It would introduce some aspect programming to D.
> >
> > file 1:
> >
> > class Foo
> > {
> > int mybar;
> > int myother;
> >
> > void bar(int i)
> > {
> > mybar = i;
> > }
> >
> >
> > void other(int i)
> > {
> > myother = i;
> > }
> > }
> >
> >
> > file 2:
> >
> > trigger(before) : "*.void * (int *)"
> > {
> > writefln("calling ", this.currentFunctionName);
> > }
> >
> > trigger(after) : "*.void * (int *)"
> > {
> > writefln("called ", this.currentFunctionName);
> > }
> >
> >
> > This might be something for D3 though...
>
> You can already do something like that, although very hackish: turn on trace
> profiling and override the prolog/epilog code from druntime (I think these
> are called _trace_pro_n and _trace_epi_n, just grep the source for their
> syntax).
>
> Just make *very* sure to use only naked declarations in these and any routine
> they may call, or else you will just call back into _trace_pro_n until you
> get a stack overflow.
There comes "AspectD" :-)
Sjoerd