DBGOUT.H

/* 
* DBGOUT.H
*
* Useful debugging output macros that compile to nothing and
* eliminate ugly #ifdef DEBUGs from source code. Note that
* string literals do not need TEXT() around them as this file
* includes them.
*
* Copyright (c)1994-1996 Microsoft Corporation, All Rights Reserved
*
* Kraig Brockschmidt, Software Design Engineer
* Microsoft Systems Developer Relations
*
* Internet : kraigb@microsoft.com
* Compuserve: INTERNET>kraigb@microsoft.com
*/

#ifndef _DBGOUT_H
#define _DBGOUT_H

#ifdef DEBUG

//Basic debug macros
#define D(x) {x;}

#define ODS(x) \
{\
TCHAR szDebug[128];\
OutputDebugString(TEXT(x));\
wsprintf(szDebug, TEXT(" [%s, %u]\r\n"), (LPTSTR)__FILE__, __LINE__);\
OutputDebugString(szDebug);\
}

#define ODSsz(f, s) \
{\
TCHAR szDebug[128];\
wsprintf(szDebug, TEXT(f), (LPTSTR)s);\
OutputDebugString(szDebug);\
wsprintf(szDebug, TEXT(" [%s, %u]\r\n"), (LPTSTR)__FILE__, __LINE__);\
OutputDebugString(szDebug);\
}


#define ODSu(f, u) \
{\
TCHAR szDebug[128];\
wsprintf(szDebug, TEXT(f), (UINT)u);\
OutputDebugString(szDebug);\
wsprintf(szDebug, TEXT(" [%s, %u]\r\n"), (LPTSTR)__FILE__, __LINE__);\
OutputDebugString(szDebug);\
}


#define ODSlu(f, lu) \
{\
TCHAR szDebug[128];\
wsprintf(szDebug, TEXT(f), (DWORD)lu);\
OutputDebugString(szDebug);\
wsprintf(szDebug, TEXT(" [%s, %u]\r\n"), (LPTSTR)__FILE__, __LINE__);\
OutputDebugString(szDebug);\
}

#define ODSlulu(f, lu1, lu2) \
{\
TCHAR szDebug[128];\
wsprintf(szDebug, TEXT(f), (DWORD)lu1, (DWORD)lu1);\
OutputDebugString(szDebug);\
wsprintf(szDebug, TEXT(" [%s, %u]\r\n"), (LPTSTR)__FILE__, __LINE__);\
OutputDebugString(szDebug);\
}

#define ODSszu(f, s, u) \
{\
TCHAR szDebug[128];\
wsprintf(szDebug, TEXT(f), (LPTSTR)s, (UINT)u);\
OutputDebugString(szDebug);\
wsprintf(szDebug, TEXT(" [%s, %u]\r\n"), (LPTSTR)__FILE__, __LINE__);\
OutputDebugString(szDebug);\
}


#define ODSszlu(f, s, lu) \
{\
TCHAR szDebug[128];\
wsprintf(szDebug, TEXT(f), (LPTSTR)s, (DWORD)lu);\
OutputDebugString(szDebug);\
wsprintf(szDebug, TEXT(" [%s, %u]\r\n"), (LPTSTR)__FILE__, __LINE__);\
OutputDebugString(szDebug);\
}

#else //NO DEBUG

#define D(x)
#define ODS(x)

#define ODSsz(f, s)
#define ODSu(f, u)
#define ODSlu(f, lu)
#define ODSszu(f, s, u)
#define ODSszlu(f, s, lu)


#endif //DEBUG

#endif //_DBGOUT_H