Index: src/libchcore/SerializerTrace.h
===================================================================
diff -u -r5693271a6736f524997e3951fc7b7b6323bc6447 -rc8e73b75027d5e17fb8b1e1eb40e64f40fc62547
--- src/libchcore/SerializerTrace.h	(.../SerializerTrace.h)	(revision 5693271a6736f524997e3951fc7b7b6323bc6447)
+++ src/libchcore/SerializerTrace.h	(.../SerializerTrace.h)	(revision c8e73b75027d5e17fb8b1e1eb40e64f40fc62547)
@@ -20,31 +20,81 @@
 #define __SERIALIZERTRACE_H__
 
 #include <atltrace.h>
+#include <atlstr.h>
 
+// enables tracing
+#define ENABLE_TRACE
+
+// general tracking
+#define TRACK_GENERAL
+
+// db-related tracking
 #define TRACK_DB_QUERIES
 //#define TRACK_DB_QUERIES_DETAILED
 
+#ifdef ENABLE_TRACE
+	inline void trace0(PCTSTR pszFmt)
+	{
+		OutputDebugString(pszFmt);
+	}
+
+	template<class T>
+	inline void trace1(PCTSTR pszFmt, const T& tData)
+	{
+		CString strVal;
+		strVal.Format(pszFmt, tData);
+		OutputDebugString((PCTSTR)strVal);
+	}
+
+	template<class T1, class T2>
+	inline void trace2(PCTSTR pszFmt, const T1& tData1, const T2& tData2)
+	{
+		CString strVal;
+		strVal.Format(pszFmt, tData1, tData2);
+		OutputDebugString((PCTSTR)strVal);
+	}
+
+	#define MYTRACE0 trace0
+	#define MYTRACE1 trace1
+	#define MYTRACE2 trace2
+#else
+	#define MYTRACE0(fmt) __noop
+	#define MYTRACE1(fmt, val) __noop
+	#define MYTRACE2(fmt, val1, val2) __noop
+#endif
+
+#ifdef TRACK_GENERAL
+	#define GTRACE0 MYTRACE0
+	#define GTRACE1 MYTRACE1
+	#define GTRACE2 MYTRACE2
+#else
+	#define GTRACE0(fmt) __noop
+	#define GTRACE1(fmt, val) __noop
+	#define GTRACE2(fmt, val1, val2) __noop
+#endif
+
+
 #ifdef TRACK_DB_QUERIES
-	#define DBTRACE(fmt, val) ATLTRACE(fmt, val)
-	#define DBTRACE0(fmt) ATLTRACE(fmt)
-	#define DBTRACE2(fmt, val1, val2) ATLTRACE(fmt, val1, val2)
+	#define DBTRACE0 MYTRACE0
+	#define DBTRACE1 MYTRACE1
+	#define DBTRACE2 MYTRACE2
 
 	#ifdef TRACK_DB_QUERIES_DETAILED
-		#define DBTRACE_D(fmt, val) ATLTRACE(fmt, val)
-		#define DBTRACE0_D(fmt) ATLTRACE(fmt)
-		#define DBTRACE2_D(fmt, val1, val2) ATLTRACE(fmt, val1, val2)
+		#define DBTRACE0_D MYTRACE0
+		#define DBTRACE1_D MYTRACE1
+		#define DBTRACE2_D MYTRACE2
 	#else
-		#define DBTRACE_D(fmt, val) __noop;
 		#define DBTRACE0_D(fmt) __noop
-		#define DBTRACE2_D(fmt, val1, val2) __noop;
+		#define DBTRACE1_D(fmt, val) __noop
+		#define DBTRACE2_D(fmt, val1, val2) __noop
 	#endif
 #else
-	#define DBTRACE(fmt, val) __noop;
 	#define DBTRACE0(fmt) __noop
-	#define DBTRACE2(fmt, val1, val2) __noop;
-	#define DBTRACE_D(fmt, val) __noop;
+	#define DBTRACE1(fmt, val) __noop
+	#define DBTRACE2(fmt, val1, val2) __noop
 	#define DBTRACE0_D(fmt) __noop
-	#define DBTRACE2_D(fmt, val1, val2) __noop;
+	#define DBTRACE1_D(fmt, val) __noop
+	#define DBTRACE2_D(fmt, val1, val2) __noop
 #endif
 
 #endif