// ========================================================================== // Specification : // AdvancedAssert // ========================================================================== // Header file : OXAdvancedAssert.h // Version: 9.3 // This software along with its related components, documentation and files ("The Libraries") // is © 1994-2007 The Code Project (1612916 Ontario Limited) and use of The Libraries is // governed by a software license agreement ("Agreement"). Copies of the Agreement are // available at The Code Project (www.codeproject.com), as part of the package you downloaded // to obtain this file, or directly from our office. For a copy of the license governing // this software, you may contact us at legalaffairs@codeproject.com, or by calling 416-849-8900. #ifndef __AdvancedAssert_h__ #define __AdvancedAssert_h__ #if _MSC_VER >= 1000 #pragma once #endif // _MSC_VER >= 1000 #include "OXDllExt.h" #ifndef OX_ADVANCEDASSERT_NOTE1 #define OX_ADVANCEDASSERT_NOTE1 _T("An unexpected event has just occurred. Please report this event by sending an email. This will help eliminate bugs.") #endif #ifndef OX_ADVANCEDASSERT_NOTE2 #define OX_ADVANCEDASSERT_NOTE2 _T("Any information you can give about the state when this event occurred would be greately appreciated.") #endif ///////////////////////////////////////////////////////////////////////////// // Diagnostic support #if defined(_DEBUG) || defined(BETA) #ifdef ASSERT #undef ASSERT ///////////////////////////////////////////////////////////////////////////// // Desciption : This is an internal function that is used by the ASSERT macro. // using some advanced macro processing, the condition that fails // is converted to a string that is later used in the dialog. // -- In : lpszCondition - Condition to be displayed // lpszFileName - filename of failed condition. // nLine - line number of failed condition. // -- Out : nothing. // -- Returns : Returns TRUE when user selects Retry. // -- Effect : Sends trace message and presents user with Abort, Retry, Ignore, Send dialog. // Note: file names are still ANSI strings (filenames rarely need UNICODE) OX_API_DECL BOOL AFXAPI AdvancedAssertFailedLine(LPCTSTR lpszCondition, LPCSTR lpszFileName, int nLine) ; #ifndef _WIN32 void AfxDebugBreak() ; #endif #define THIS_FILE __FILE__ #define ASSERT(f) \ do \ { \ if ( !(f) && AdvancedAssertFailedLine(_T(#f), THIS_FILE, __LINE__) ) \ AfxDebugBreak() ; \ } \ while (0) \ #endif // ASSERT #ifdef VERIFY #undef VERIFY #define VERIFY(f) ASSERT(f) #endif // VERIFY #endif // _DEBUG || BETA ///////////////////////////////////////////////////////////////////////////// // Desciption : Public access function that allows programmatic override of // global send enable flag. When this flag is FALSE, the Send // button is disabled. // -- In : New send enable state. // -- Out : // -- Returns : Previous send enable state. // -- Effect : Replace the send enable state. OX_API_DECL BOOL AppSetAssertSendState(BOOL bEnable=TRUE) ; ///////////////////////////////////////////////////////////////////////////// // Desciption : Public access function that allows programmer to get global send // enable flag. When this flag is FALSE, the Send button is disabled. // -- In : // -- Out : // -- Returns : send enable state. // -- Effect : OX_API_DECL BOOL AppGetAssertSendState() ; ///////////////////////////////////////////////////////////////////////////// // Desciption : Public access function that allows programmatic override of // global beta email address. // -- In : csEmailAddress - New email address supplied when user selects Send. // -- Out : // -- Returns : Previous beta email address. // -- Effect : Replace the beta email address. OX_API_DECL CString AppSetAssertEmailAddress(CString csEmailAddress) ; ///////////////////////////////////////////////////////////////////////////// // Desciption : This function is used to safely gain access to beta email address. // -- In : // -- Out : // -- Returns : Current beta email address. // -- Effect : OX_API_DECL LPCSTR AppGetAssertEmailAddress() ; ///////////////////////////////////////////////////////////////////////////// // Desciption : Public access function that allowas programmatic override of // global note 1 text. // -- In : csNote - New text used for note 1. // -- Out : // -- Returns : Previous note 1 text. // -- Effect : Replace the global text used for note 1 in the assert dialog. OX_API_DECL CString AppSetAssertNote1(CString csNote) ; ///////////////////////////////////////////////////////////////////////////// // Desciption : Public access function that allows programmer to get text that // displayed at the top of Assert dialog (Note1). // -- In : // -- Out : // -- Returns : Note1 text. // -- Effect : OX_API_DECL CString AppGetAssertNote1() ; ///////////////////////////////////////////////////////////////////////////// // Desciption : Public access function that allowas programmatic override of // global note 2 text. // -- In : csNote - New text used for note 2. // -- Out : // -- Returns : Previous note 2 text. // -- Effect : Replace the global text used for note 2. in the assert dialog. OX_API_DECL CString AppSetAssertNote2(CString csNote) ; ///////////////////////////////////////////////////////////////////////////// // Desciption : Public access function that allows programmer to get text that // displayed at the top of Assert dialog under Note1 (Note2). // -- In : // -- Out : // -- Returns : Note2 text. // -- Effect : OX_API_DECL CString AppGetAssertNote2() ; // You will want to correct the beta address. #define BETA_EMAIL_ADDRESS "Support[SMTP:beta@yourcompany.com]" #endif // __AdvancedAssert_h__ /////////////////////////////////////////////////////////////////////////////