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

Reply via email to