132
|
1 import tango.core.Exception;
|
|
2 import cn.kuehne.flectioned;
|
|
3
|
|
4
|
|
5 TracedExceptionInfo traceHandler( void* ptr = null )
|
|
6 {
|
|
7 class FlectionedTrace :
|
|
8 TracedExceptionInfo
|
|
9 {
|
|
10 this( void* ptr = null )
|
|
11 {
|
|
12 if( ptr )
|
|
13 m_trace = Trace.getTrace( cast(size_t) ptr );
|
|
14 else
|
|
15 m_trace = Trace.getTrace();
|
|
16 }
|
|
17
|
|
18 int opApply( int delegate( inout char[] ) dg )
|
|
19 {
|
|
20 int ret = 0;
|
|
21 foreach( t; m_trace )
|
|
22 {
|
|
23 char[] buf = t.toString;
|
|
24 ret = dg( buf );
|
|
25 if( ret != 0 )
|
|
26 break;
|
|
27 }
|
|
28 return ret;
|
|
29 }
|
|
30
|
|
31 private:
|
|
32 Trace[] m_trace;
|
|
33 }
|
|
34
|
|
35 return new FlectionedTrace( ptr );
|
|
36 }
|
|
37
|
|
38
|
|
39 static this()
|
|
40 {
|
|
41 setTraceHandler( &traceHandler );
|
|
42 }
|