]> git.saurik.com Git - wxWidgets.git/blobdiff - src/iodbc/itrace.h
added ODBC support
[wxWidgets.git] / src / iodbc / itrace.h
diff --git a/src/iodbc/itrace.h b/src/iodbc/itrace.h
new file mode 100644 (file)
index 0000000..6b4e850
--- /dev/null
@@ -0,0 +1,97 @@
+#ifndef        _ITRACE_H
+# define _ITRACE_H
+
+# ifdef        DEBUG
+#  ifndef NO_TRACE
+#   define NO_TRACE
+#  endif
+# endif
+
+# define TRACE_TYPE_APP2DM     1
+# define TRACE_TYPE_DM2DRV     2
+# define TRACE_TYPE_DRV2DM     3
+
+# define TRACE_TYPE_RETURN     4
+
+extern HPROC   _iodbcdm_gettrproc(void FAR* stm, int procid, int type);
+
+# ifdef NO_TRACE
+#  define TRACE_CALL( stm, trace_on, procid, plist )   
+# else
+#  define TRACE_CALL( stm, trace_on, plist )\
+       {\
+               if( trace_on)\
+               {\
+                       HPROC   hproc;\
+\
+                       hproc = _iodbcdm_gettrproc(stm, procid, TRACE_TYPE_APP2DM);\
+\
+                       if( hproc )\
+                               hproc plist;\
+               }\
+       }
+# endif
+
+# ifdef NO_TRACE
+#  define TRACE_DM2DRV( stm, procid, plist )
+# else
+#  define TRACE_DM2DRV( stm, procid, plist )\
+       {\
+               HPROC   hproc;\
+\
+               hproc = _iodbcdm_gettrproc(stm, procid, TRACE_TYPE_DM2DRV);\
+\
+               if( hproc )\
+                       hproc plist;\
+       }
+# endif
+
+# ifdef NO_TRACE
+#  define TRACE_DRV2DM( stm, procid, plist )
+# else
+#  define TRACE_DRV2DM( stm, procid, plist ) \
+       {\
+               HPROC   hproc;\
+\
+               hproc = _iodbcdm_gettrproc( stm, procid, TRACE_TYPE_DRV2DM);\
+\
+               if( hproc )\
+                               hproc plist;\
+       }
+# endif
+
+# ifdef NO_TRACE
+#  define TRACE_RETURN( stm, trace_on, ret )
+# else
+#  define TRACE_RETURN( stm, trace_on, ret )\
+       {\
+               if( trace_on ) {\
+                       HPROC hproc;\
+\
+                       hproc = _iodbcdm_gettrproc( stm, 0, TRACE_TYPE_RETURN);\
+\
+                       if( hproc )\
+                               hproc( stm, ret );\
+               }\
+       }
+# endif
+
+# ifdef        NO_TRACE 
+#  define CALL_DRIVER( hdbc, ret, proc, procid, plist )        { ret = proc plist; }
+# else
+#  define CALL_DRIVER( hdbc, ret, proc, procid, plist )\
+       {\
+               DBC_t FAR*      pdbc = (DBC_t FAR*)(hdbc);\
+\
+               if( pdbc->trace ) {\
+                       TRACE_DM2DRV( pdbc->tstm, procid, plist )\
+                       ret = proc plist;\
+                       TRACE_DRV2DM( pdbc->tstm, procid, plist )\
+                       TRACE_RETURN( pdbc->tstm, 1, ret )\
+               }\
+               else\
+                       ret = proc plist;\
+       }
+# endif
+
+#endif