//=--------------------------------------------------------------------------= // Debug.H //=--------------------------------------------------------------------------= // Copyright 1995 Microsoft Corporation. All Rights Reserved. // // THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF // ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO // THE IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A // PARTICULAR PURPOSE. //=--------------------------------------------------------------------------= // // contains the various macros and the like which are only useful in DEBUG // builds // #ifndef _DEBUG_H_ //=---------------------------------------------------------------------------= // all the things required to handle our ASSERT mechanism //=---------------------------------------------------------------------------= // #ifdef _DEBUG // Function Prototypes // VOID DisplayAssert(LPSTR pszMsg, LPSTR pszAssert, LPSTR pszFile, UINT line); // Macros // // *** Include this macro at the top of any source file using *ASSERT*() macros *** // #define SZTHISFILE static char _szThisFile[] = __FILE__; // our versions of the ASSERT and FAIL macros. // #define ASSERT(fTest, szMsg) \ if (!(fTest)) { \ static char szMsgCode[] = szMsg; \ static char szAssert[] = #fTest; \ DisplayAssert(szMsgCode, szAssert, _szThisFile, __LINE__); \ } #define ASSERT_(fTest) \ if (!(fTest)) { \ static char szMsgCode[] = "Assertion failure"; \ static char szAssert[] = #fTest; \ DisplayAssert(szMsgCode, szAssert, _szThisFile, __LINE__); \ } #define FAIL(szMsg) \ { static char szMsgCode[] = szMsg; \ DisplayAssert(szMsgCode, "FAIL", _szThisFile, __LINE__); } #define ASSERT_POINTER(p, type) \ ASSERT(((p) != NULL) && !IsBadReadPtr((p), sizeof(type)), "Null or bad Pointer") #define ASSERT_NULL_OR_POINTER(p, type) \ ASSERT(((p) == NULL) || !IsBadReadPtr((p), sizeof(type)), "Bad Pointer") #define ASSERT_POINTER_LEN(p, len) \ ASSERT(((p) != NULL) && !IsBadReadPtr((p), len), "Null or bad Pointer") #define ASSERT_POINTER_OCCURS(p, type, occurs) \ ASSERT(((p) != NULL) && !IsBadReadPtr((p), sizeof(type) * occurs), "Null or bad Pointer") // macro that checks a pointer for validity on input // #define CHECK_POINTER(val) if (!(val) || IsBadWritePtr((void *)(val), sizeof(void *))) return E_POINTER // Viaduct 1 #define VD_ASSERTMSG_SEMAPHORECOUNTTOOLOW "Semaphore count too low" #define VD_ASSERTMSG_SEMAPHOREWAITERROR "Semaphore wait failed" #define VD_ASSERTMSG_OUTOFMEMORY "Out of memory" #define VD_ASSERTMSG_BADSTATUS "Bad status" #define VD_ASSERTMSG_UNKNOWNDBTYPE "Unknown DBTYPE" #define VD_ASSERTMSG_BADCOLUMNINDEX "Bad column index" #define VD_ASSERTMSG_INVALIDROWSTATUS "Invalid row status" #define VD_ASSERTMSG_COLALREADYINITIALIZED "CVDColumn already initialized" #define VD_ASSERTMSG_COLCOUNTDOESNTMATCH "Column counts don't match" #define VD_ASSERTMSG_CANTDIVIDEBYZERO "Can't divide by zero" #define VD_ASSERTMSG_CANTFINDRESOURCEDLL "Can't find error string resource dll." // Viaduct 2 #define VD_ASSERTMSG_ROWSRCALREADYINITIALIZED "CVDRowsetSource already initialized" #else // DEBUG #define SZTHISFILE #define ASSERT_POINTER(p, type) #define ASSERT_NULL_OR_POINTER(p, type) #define ASSERT_POINTER_LEN(p, len) #define ASSERT_POINTER_OCCURS(p, type, occurs) #define ASSERT(fTest, err) #define ASSERT_(fTest) #define FAIL(err) #define CHECK_POINTER(val) #define VD_ASSERTMSG_SEMAPHORECOUNTTOOLOW 0 #define VD_ASSERTMSG_SEMAPHOREWAITERROR 0 #define VD_ASSERTMSG_OUTOFMEMORY 0 #define VD_ASSERTMSG_BADSTATUS 0 #define VD_ASSERTMSG_UNKNOWNDBTYPE 0 #define VD_ASSERTMSG_BADCOLUMNINDEX 0 #define VD_ASSERTMSG_INVALIDROWSTATUS 0 #define VD_ASSERTMSG_COLALREADYINITIALIZED 0 #define VD_ASSERTMSG_COLCOUNTDOESNTMATCH 0 #define VD_ASSERTMSG_CANTDIVIDEBYZERO 0 #define VD_ASSERTMSG_CANTFINDRESOURCEDLL 0 #endif // DEBUG #define _DEBUG_H_ #endif // _DEBUG_H_