]> git.saurik.com Git - wxWidgets.git/blob - src/iodbc/itrace.h
4c84a4caf1eb08b8f569fe48def0ef0bf95bfe40
[wxWidgets.git] / src / iodbc / itrace.h
1 #ifndef _ITRACE_H
2 # define _ITRACE_H
3
4 # ifdef DEBUG
5 # ifndef NO_TRACE
6 # define NO_TRACE
7 # endif
8 # endif
9
10 /* never trace, Robert Roebling */
11
12 #ifndef NO_TRACE
13 #define NO_TRACE
14 #endif
15
16 # define TRACE_TYPE_APP2DM 1
17 # define TRACE_TYPE_DM2DRV 2
18 # define TRACE_TYPE_DRV2DM 3
19
20 # define TRACE_TYPE_RETURN 4
21
22 extern HPROC _iodbcdm_gettrproc(void FAR* stm, int procid, int type);
23
24 # ifdef NO_TRACE
25 # define TRACE_CALL( stm, trace_on, procid, plist )
26 # else
27 # define TRACE_CALL( stm, trace_on, plist )\
28 {\
29 if( trace_on)\
30 {\
31 HPROC hproc;\
32 \
33 hproc = _iodbcdm_gettrproc(stm, procid, TRACE_TYPE_APP2DM);\
34 \
35 if( hproc )\
36 hproc plist;\
37 }\
38 }
39 # endif
40
41 # ifdef NO_TRACE
42 # define TRACE_DM2DRV( stm, procid, plist )
43 # else
44 # define TRACE_DM2DRV( stm, procid, plist )\
45 {\
46 HPROC hproc;\
47 \
48 hproc = _iodbcdm_gettrproc(stm, procid, TRACE_TYPE_DM2DRV);\
49 \
50 if( hproc )\
51 hproc plist;\
52 }
53 # endif
54
55 # ifdef NO_TRACE
56 # define TRACE_DRV2DM( stm, procid, plist )
57 # else
58 # define TRACE_DRV2DM( stm, procid, plist ) \
59 {\
60 HPROC hproc;\
61 \
62 hproc = _iodbcdm_gettrproc( stm, procid, TRACE_TYPE_DRV2DM);\
63 \
64 if( hproc )\
65 hproc plist;\
66 }
67 # endif
68
69 # ifdef NO_TRACE
70 # define TRACE_RETURN( stm, trace_on, ret )
71 # else
72 # define TRACE_RETURN( stm, trace_on, ret )\
73 {\
74 if( trace_on ) {\
75 HPROC hproc;\
76 \
77 hproc = _iodbcdm_gettrproc( stm, 0, TRACE_TYPE_RETURN);\
78 \
79 if( hproc )\
80 hproc( stm, ret );\
81 }\
82 }
83 # endif
84
85 # ifdef NO_TRACE
86 # define CALL_DRIVER( hdbc, ret, proc, procid, plist ) { ret = proc plist; }
87 # else
88 # define CALL_DRIVER( hdbc, ret, proc, procid, plist )\
89 {\
90 DBC_t FAR* pdbc = (DBC_t FAR*)(hdbc);\
91 \
92 if( pdbc->trace ) {\
93 TRACE_DM2DRV( pdbc->tstm, procid, plist )\
94 ret = proc plist;\
95 TRACE_DRV2DM( pdbc->tstm, procid, plist )\
96 TRACE_RETURN( pdbc->tstm, 1, ret )\
97 }\
98 else\
99 ret = proc plist;\
100 }
101 # endif
102
103 #endif