2025-11-27 16:46:48 +09:00

155 lines
6.0 KiB
C

// ==========================================================================
// 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__
/////////////////////////////////////////////////////////////////////////////