Team Fortress 2 Source Code as on 22/4/2020
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
//========= Copyright Valve Corporation, All rights reserved. ============//
//
// Purpose:
//
// $NoKeywords: $
//
//=============================================================================//
#include "stdafx.h"
#ifdef _PSEUDO_DEBUG // entire file
#ifdef _PSEUDO_DEBUG
#undef THIS_FILE
static char THIS_FILE[] = __FILE__; #endif
LONG AssertBusy = -1; LONG AssertReallyBusy = -1;
BOOL AssertFailedLine(LPCSTR lpszFileName, int nLine) { TCHAR szMessage[_MAX_PATH*2];
InterlockedDecrement(&AssertReallyBusy);
// format message into buffer
wsprintf(szMessage, _T("File %hs, Line %d"), lpszFileName, nLine);
TCHAR szT[_MAX_PATH*2 + 20]; wsprintf(szT, _T("Assertion Failed: %s\n"), szMessage); OutputDebugString(szT);
if (InterlockedIncrement(&AssertBusy) > 0) { InterlockedDecrement(&AssertBusy);
// assert within assert (examine call stack to determine first one)
DebugBreak(); return FALSE; }
// active popup window for the current thread
HWND hWndParent = GetActiveWindow(); if (hWndParent != NULL) hWndParent = GetLastActivePopup(hWndParent);
// display the assert
int nCode = ::MessageBox(hWndParent, szMessage, _T("Assertion Failed!"), MB_TASKMODAL|MB_ICONHAND|MB_ABORTRETRYIGNORE|MB_SETFOREGROUND);
// cleanup
InterlockedDecrement(&AssertBusy);
if (nCode == IDIGNORE) return FALSE; // ignore
if (nCode == IDRETRY) return TRUE; // will cause DebugBreak
AfxAbort(); // should not return (but otherwise DebugBreak)
return TRUE; }
void Trace(LPCTSTR lpszFormat, ...) { va_list args; va_start(args, lpszFormat);
int nBuf; TCHAR szBuffer[512];
nBuf = _vstprintf(szBuffer, lpszFormat, args); ASSERT(nBuf < (sizeof(szBuffer)/sizeof(szBuffer[0])));
CString strMessage;
if (AfxGetApp() != NULL) strMessage = ((CString) (AfxGetApp()->m_pszExeName)) + _T(": "); strMessage += szBuffer; OutputDebugString(strMessage);
va_end(args); }
#endif // _PSEUDO_DEBUG
|