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.

Reply via email to