mirror of https://github.com/tongzx/nt5src
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.
685 lines
17 KiB
685 lines
17 KiB
//+---------------------------------------------------------------------------
|
|
// Copyright (C) 1991, Microsoft Corporation.
|
|
//
|
|
// File: DEBNOT.h
|
|
//
|
|
// Contents: Private project-wide Win 4 definitions
|
|
//
|
|
// History: 23-Jul-91 KyleP Created.
|
|
// 15-Oct-91 KevinRo Major changes and comments added
|
|
// 18-Oct-91 vich Consolidated win4p.hxx
|
|
// 22-Oct-91 SatoNa Added SHLSTRICT
|
|
// 29-Apr-92 BartoszM Moved from win4p.h
|
|
// 3-Jun-92 BruceFo Added SMUISTRICT
|
|
// 17-Dec-92 AlexT Moved UN..._PARM out of DEVL==1
|
|
// 30-Sep-93 KyleP DEVL obsolete
|
|
//
|
|
//----------------------------------------------------------------------------
|
|
|
|
#ifndef __DEBNOT_H__
|
|
#define __DEBNOT_H__
|
|
|
|
#include <stdarg.h>
|
|
|
|
//----------------------------------------------------------------------------
|
|
// Parameter Macros
|
|
//
|
|
// To avoid compiler warnings for unimplemented functions, use
|
|
// UNIMPLEMENTED_PARM(x) for each unreferenced parameter. This will
|
|
// later be defined to nul to reveal functions that we forgot to implement.
|
|
//
|
|
// For functions which will never use a parameter, use
|
|
// UNREFERENCED_PARM(x).
|
|
//
|
|
|
|
#define UNIMPLEMENTED_PARM(x) (x)
|
|
|
|
#define UNREFERENCED_PARM(x) (x)
|
|
|
|
//----------------------------------------------------------------------------
|
|
//
|
|
// New STRICT defines should be added in two places below:
|
|
//
|
|
// 1) Add the following within the ifdef ALLSTRICT/endif:
|
|
//
|
|
// #ifndef xxSTRICT
|
|
// # define xxSTRICT
|
|
// #endif
|
|
//
|
|
// These entries are in alphabetical order.
|
|
//
|
|
// 2) Add the following to the #if clause that defines ANYSTRICT:
|
|
//
|
|
// #if ... || defined(xxSTRICT) || ...
|
|
//
|
|
// so that ANYSTRICT is defined if any of the STRICT defines are.
|
|
//
|
|
|
|
#if (DBG == 1) || (OFSDBG == 1)
|
|
|
|
# ifndef CATSTRICT
|
|
# define CATSTRICT
|
|
# endif
|
|
|
|
# ifndef CISTRICT
|
|
# define CISTRICT
|
|
# endif
|
|
|
|
# ifndef CMSSTRICT
|
|
# define CMSSTRICT
|
|
# endif
|
|
|
|
# ifndef DLOSSTRICT
|
|
# define DLOSSTRICT
|
|
# endif
|
|
|
|
# ifndef EVSTRICT
|
|
# define EVSTRICT
|
|
# endif
|
|
|
|
# ifndef ICLSTRICT
|
|
# define ICLSTRICT
|
|
# endif
|
|
|
|
# ifndef INSSTRICT
|
|
# define INSSTRICT
|
|
# endif
|
|
|
|
# ifndef JWSTRICT
|
|
# define JWSTRICT
|
|
# endif
|
|
|
|
# ifndef NSSTRICT
|
|
# define NSSTRICT
|
|
# endif
|
|
|
|
# ifndef OLSTRICT
|
|
# define OLSTRICT
|
|
# endif
|
|
|
|
# ifndef OMSTRICT
|
|
# define OMSTRICT
|
|
# endif
|
|
|
|
# ifndef REPLSTRICT
|
|
# define REPLSTRICT
|
|
# endif
|
|
|
|
# ifndef SHLSTRICT
|
|
# define SHLSTRICT
|
|
# endif
|
|
|
|
# ifndef SLSTRICT
|
|
# define SLSTRICT
|
|
# endif
|
|
|
|
# ifndef SMUISTRICT
|
|
# define SMUISTRICT
|
|
# endif
|
|
|
|
# ifndef SOMSTRICT
|
|
# define SOMSTRICT
|
|
# endif
|
|
|
|
# ifndef VCSTRICT
|
|
# define VCSTRICT
|
|
# endif
|
|
|
|
# ifndef VQSTRICT
|
|
# define VQSTRICT
|
|
# endif
|
|
|
|
# ifndef WMASTRICT
|
|
# define WMASTRICT
|
|
# endif
|
|
|
|
|
|
#endif // (DBG == 1) || (OFSDBG == 1)
|
|
|
|
//
|
|
// ANYSTRICT
|
|
//
|
|
|
|
#if defined(CATSTRICT) || \
|
|
defined(CISTRICT) || \
|
|
defined(CMSSTRICT) || \
|
|
defined(DLOSSTRICT)|| \
|
|
defined(ICLSTRICT) || \
|
|
defined(INSSTRICT) || \
|
|
defined(JWSTRICT) || \
|
|
defined(NSSTRICT) || \
|
|
defined(OLSTRICT) || \
|
|
defined(OMSTRICT) || \
|
|
defined(REPLSTRICT)|| \
|
|
defined(SHLSTRICT) || \
|
|
defined(SLSTRICT) || \
|
|
defined(SMUISTRICT)|| \
|
|
defined(SOMSTRICT) || \
|
|
defined(VCSTRICT) || \
|
|
defined(VQSTRICT) || \
|
|
defined(WMASTRICT)
|
|
|
|
# define ANYSTRICT
|
|
|
|
#endif
|
|
|
|
#if (DBG != 1 && OFSDBG != 1) && defined(ANYSTRICT)
|
|
#pragma message BUGBUG: Asserts are defined in a RETAIL build...
|
|
#endif
|
|
|
|
|
|
#if defined(WIN32)
|
|
#ifndef DEBFAR
|
|
#define DEBFAR
|
|
#endif
|
|
#include <windef.h>
|
|
#if WIN32 > 200
|
|
#include <winnot.h>
|
|
#endif
|
|
#else
|
|
#ifndef DEBFAR
|
|
#define DEBFAR __far
|
|
#endif
|
|
#endif
|
|
|
|
#ifndef EXPORTDEF
|
|
#define EXPORTDEF
|
|
#endif
|
|
#ifndef EXPORTIMP
|
|
#define EXPORTIMP
|
|
#endif
|
|
#ifndef EXPORTED
|
|
#define EXPORTED _cdecl
|
|
#endif
|
|
#ifndef APINOT
|
|
#ifdef _X86_
|
|
#define APINOT _stdcall
|
|
#else
|
|
#define APINOT _cdecl
|
|
#endif
|
|
#endif
|
|
|
|
//
|
|
// DEBUG -- DEBUG -- DEBUG -- DEBUG -- DEBUG
|
|
//
|
|
|
|
#if (DBG == 1) || (OFSDBG == 1)
|
|
|
|
//
|
|
// Debug print functions.
|
|
//
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
# define EXTRNC "C"
|
|
#else
|
|
# define EXTRNC
|
|
#endif
|
|
|
|
|
|
|
|
// vdprintf should only be called from xxDebugOut()
|
|
|
|
EXPORTDEF void APINOT
|
|
vdprintf(
|
|
unsigned long ulCompMask,
|
|
char const DEBFAR *pszComp,
|
|
char const DEBFAR *ppszfmt,
|
|
va_list ArgList);
|
|
|
|
#define _Win4Assert Win4AssertEx
|
|
|
|
EXPORTDEF void APINOT
|
|
Win4AssertEx(
|
|
char const DEBFAR *pszFile,
|
|
int iLine,
|
|
char const DEBFAR *pszMsg);
|
|
|
|
EXPORTDEF int APINOT
|
|
PopUpError(
|
|
char const DEBFAR *pszMsg,
|
|
int iLine,
|
|
char const DEBFAR *pszFile);
|
|
|
|
#define _SetWin4InfoLevel SetWin4InfoLevel
|
|
|
|
EXPORTDEF unsigned long APINOT
|
|
SetWin4InfoLevel(
|
|
unsigned long ulNewLevel);
|
|
|
|
EXPORTDEF unsigned long APINOT
|
|
SetWin4InfoMask(
|
|
unsigned long ulNewMask);
|
|
|
|
#define _SetWin4AssertLevel SetWin4AssertLevel
|
|
|
|
EXPORTDEF unsigned long APINOT
|
|
SetWin4AssertLevel(
|
|
unsigned long ulNewLevel);
|
|
|
|
EXPORTDEF unsigned long APINOT
|
|
SetWin4ExceptionLevel(
|
|
unsigned long ulNewLevel);
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif // __cplusplus
|
|
|
|
# define EXSTRICT // (EXception STRICT) - Enabled if ANYSTRICT is enabled
|
|
|
|
# define Win4Assert(x) if ( !(x) ) \
|
|
Win4AssertEx ( __FILE__, __LINE__, #x );
|
|
|
|
|
|
//
|
|
// Debug print macros
|
|
//
|
|
|
|
# define DEB_ERROR 0x00000001 // exported error paths
|
|
# define DEB_WARN 0x00000002 // exported warnings
|
|
# define DEB_TRACE 0x00000004 // exported trace messages
|
|
|
|
# define DEB_DBGOUT 0x00000010 // Output to debugger
|
|
# define DEB_STDOUT 0x00000020 // Output to stdout
|
|
|
|
# define DEB_IERROR 0x00000100 // internal error paths
|
|
# define DEB_IWARN 0x00000200 // internal warnings
|
|
# define DEB_ITRACE 0x00000400 // internal trace messages
|
|
|
|
# define DEB_USER1 0x00010000 // User defined
|
|
# define DEB_USER2 0x00020000 // User defined
|
|
# define DEB_USER3 0x00040000 // User defined
|
|
# define DEB_USER4 0x00080000 // User defined
|
|
# define DEB_USER5 0x00100000 // User defined
|
|
# define DEB_USER6 0x00200000 // User defined
|
|
# define DEB_USER7 0x00400000 // User defined
|
|
# define DEB_USER8 0x00800000 // User defined
|
|
# define DEB_USER9 0x01000000 // User defined
|
|
# define DEB_USER10 0x02000000 // User defined
|
|
# define DEB_USER11 0x04000000 // User defined
|
|
# define DEB_USER12 0x08000000 // User defined
|
|
# define DEB_USER13 0x10000000 // User defined
|
|
# define DEB_USER14 0x20000000 // User defined
|
|
# define DEB_USER15 0x40000000 // User defined
|
|
|
|
# define DEB_NOCOMPNAME 0x80000000 // suppress component name
|
|
|
|
# define DEB_FORCE 0x7fffffff // force message
|
|
|
|
# define ASSRT_MESSAGE 0x00000001 // Output a message
|
|
# define ASSRT_BREAK 0x00000002 // Int 3 on assertion
|
|
# define ASSRT_POPUP 0x00000004 // And popup message
|
|
|
|
# define EXCEPT_MESSAGE 0x00000001 // Output a message
|
|
# define EXCEPT_BREAK 0x00000002 // Int 3 on exception
|
|
# define EXCEPT_POPUP 0x00000004 // Popup message
|
|
# define EXCEPT_FAULT 0x00000008 // generate int 3 on access violation
|
|
|
|
|
|
//+----------------------------------------------------------------------
|
|
//
|
|
// DECLARE_DEBUG(comp)
|
|
// DECLARE_INFOLEVEL(comp)
|
|
//
|
|
// This macro defines xxDebugOut where xx is the component prefix
|
|
// to be defined. This declares a static variable 'xxInfoLevel', which
|
|
// can be used to control the type of xxDebugOut messages printed to
|
|
// the terminal. For example, xxInfoLevel may be set at the debug terminal.
|
|
// This will enable the user to turn debugging messages on or off, based
|
|
// on the type desired. The predefined types are defined below. Component
|
|
// specific values should use the upper 24 bits
|
|
//
|
|
// To Use:
|
|
//
|
|
// 1) In your components main include file, include the line
|
|
// DECLARE_DEBUG(comp)
|
|
// where comp is your component prefix
|
|
//
|
|
// 2) In one of your components source files, include the line
|
|
// DECLARE_INFOLEVEL(comp)
|
|
// where comp is your component prefix. This will define the
|
|
// global variable that will control output.
|
|
//
|
|
// It is suggested that any component define bits be combined with
|
|
// existing bits. For example, if you had a specific error path that you
|
|
// wanted, you might define DEB_<comp>_ERRORxxx as being
|
|
//
|
|
// (0x100 | DEB_ERROR)
|
|
//
|
|
// This way, we can turn on DEB_ERROR and get the error, or just 0x100
|
|
// and get only your error.
|
|
//
|
|
// Define values that are specific to your xxInfoLevel variable in your
|
|
// own file, like ciquery.hxx.
|
|
//
|
|
//-----------------------------------------------------------------------
|
|
|
|
# ifndef DEF_INFOLEVEL
|
|
# define DEF_INFOLEVEL (DEB_ERROR | DEB_WARN)
|
|
# endif
|
|
|
|
|
|
# if (WIN32 > 200) && defined(WIN32) && defined(__cplusplus) && !defined(KERNEL)
|
|
# include <dbgpoint.hxx>
|
|
# endif
|
|
|
|
//+----------------------------------------------------------------------
|
|
//
|
|
// This next section makes for some really dense reading! Most of it is
|
|
// used for the debugging window. It defines some macros that make it
|
|
// easier to define debug groups and debug break points, since the macros
|
|
// expand to nothing if DEVL != 1. Check out dbgpoint.hxx for more info.
|
|
//
|
|
//
|
|
// The following macros allow you to do things like this
|
|
//
|
|
// DECLARE_GROUP(FooDebugingGroup)
|
|
//
|
|
// DECLARE_BREAKPOINT(FooBreakPoint,FooDebuggingGroup,FALSE)
|
|
//
|
|
// foo()
|
|
// {
|
|
// TEST_BREAKPOINT(FooBreakPoint);
|
|
// }
|
|
//
|
|
//
|
|
//-----------------------------------------------------------------------
|
|
|
|
# if (WIN32 > 200) && defined(__cplusplus) && defined(WIN32) && !defined(KERNEL)
|
|
|
|
//
|
|
// The following class is used to register debug groups as static
|
|
// members. Its only needed when DBG is set.
|
|
//
|
|
//
|
|
// The easy way to declare a group, and have it registered for you
|
|
//
|
|
# define DECLARE_GROUP(grpName) \
|
|
CDebugGroupClass grpName ((L#grpName));
|
|
|
|
//
|
|
// The easy way to define a group in a header file for use cross module
|
|
//
|
|
# define DEFINE_GROUP(grpName) extern CDebugGroupClass grpName;
|
|
|
|
//
|
|
// The easy way to declare a breakpoint is with the following macro.
|
|
//
|
|
# define DECLARE_BREAKPOINT(Name,hGroup,fEnabled) \
|
|
CDebugBreakPoint Name((L#Name),hGroup,fEnabled)
|
|
|
|
//
|
|
// If you need to have global access to a break point, use this in
|
|
// an include file
|
|
//
|
|
|
|
# define DEFINE_BREAKPOINT(Name) \
|
|
extern CDebugBreakPoint Name;
|
|
|
|
|
|
//
|
|
// A debug value is a class that allows you to wrap the contents of any
|
|
// integer value, and publish it in the debug window. The actual debug
|
|
// value keeps a reference to the actual value. Therefore, you can attach
|
|
// it to any long in the program.
|
|
//
|
|
// If you use the CDebugValue::SetValue() to change it, the change will
|
|
// be reflected in the window immediately.
|
|
//
|
|
// DECLARE_DEBUGVALUE( Name of Debug Value, Group, Reference to data object)
|
|
//
|
|
# define DECLARE_DEBUGVALUE(Name,hGroup,Value) \
|
|
CDebugValue Name((L#Name),hGroup,Value)
|
|
|
|
# define DEFINE_DEBUGVALUE(Name) \
|
|
extern CDebugValue Name;
|
|
|
|
|
|
//
|
|
// This is the same as above, only you can specify your own title for the
|
|
// debug value.
|
|
//
|
|
// DECLARE_DEBUGVALUEEX( Name of Debug Value, Title, Group, Reference to data object)
|
|
//
|
|
# define DECLARE_DEBUGVALUEEX(Name,Title,hGroup,Value) \
|
|
CDebugValue Name(Title,hGroup,Value)
|
|
|
|
//
|
|
// If you need to have global access to a break point, use this in
|
|
// an include file
|
|
//
|
|
|
|
# define DEFINE_BREAKPOINT(Name) \
|
|
extern CDebugBreakPoint Name;
|
|
|
|
|
|
//
|
|
// This test uses a default value for the HRESULT in the window. Use it
|
|
// when you don't have one. If you have an HRESULT you could display,
|
|
// please use TEST_BREAKPOINTHR
|
|
//
|
|
|
|
# define TEST_BREAKPOINT(x) if( (x).BreakPointTest() && \
|
|
(x).BreakPointMessage(__FILE__,__LINE__) )\
|
|
{ DebugBreak(); }
|
|
|
|
//
|
|
// This test includes an HRESULT as a parameter. You should use this one
|
|
//
|
|
# define TEST_BREAKPOINTHR(x,hr) if( (x).BreakPointTest() && \
|
|
(x).BreakPointMessage(__FILE__,__LINE__,hr) )\
|
|
{ DebugBreak(); }
|
|
|
|
|
|
# define MAKE_CINFOLEVEL(comp) \
|
|
CInfoLevel comp##CInfoLevel((L#comp),comp##InfoLevel);
|
|
|
|
# else // (WIN32 > 200) && defined(__cplusplus) && defined(WIN32) && !defined(KERNEL)
|
|
|
|
|
|
//
|
|
// In the non debug version or C version, don't define these
|
|
//
|
|
|
|
# define MAKE_CINFOLEVEL(comp)
|
|
# define DECLARE_GROUP(Name)
|
|
# define DEFINE_GROUP(Name)
|
|
# define DEFINE_BREAKPOINT(Name)
|
|
# define DECLARE_BREAKPOINT(Name,hGroup,fEnabled)
|
|
# define TEST_BREAKPOINT(x)
|
|
# define TEST_BREAKPOINTHR(x,hr)
|
|
# define DECLARE_DEBUGVALUE(Name,hGroup,Value)
|
|
# define DECLARE_DEBUGVALUEEX(Name,Title,hGroup,Value)
|
|
# define DEFINE_DEBUGVALUE(Name)
|
|
|
|
# endif // #if (WIN32 > 200) && defined(__cplusplus) && defined(WIN32) && !defined(KERNEL)
|
|
|
|
|
|
//
|
|
// Back to the info level stuff.
|
|
//
|
|
|
|
# ifdef __cplusplus
|
|
extern "C" {
|
|
# endif // __cplusplus
|
|
|
|
# define DECLARE_INFOLEVEL(comp) \
|
|
extern EXTRNC unsigned long comp##InfoLevel = DEF_INFOLEVEL;\
|
|
extern EXTRNC char *comp##InfoLevelString = #comp;\
|
|
MAKE_CINFOLEVEL(comp)
|
|
|
|
# ifdef __cplusplus
|
|
}
|
|
# endif
|
|
|
|
# ifdef __cplusplus
|
|
|
|
# define DECLARE_DEBUG(comp) \
|
|
extern EXTRNC unsigned long comp##InfoLevel; \
|
|
extern EXTRNC char *comp##InfoLevelString; \
|
|
_inline void \
|
|
comp##InlineDebugOut(unsigned long fDebugMask, char const DEBFAR *pszfmt, ...) \
|
|
{ \
|
|
if (comp##InfoLevel & fDebugMask) \
|
|
{ \
|
|
va_list va; \
|
|
va_start (va, pszfmt); \
|
|
vdprintf(fDebugMask, comp##InfoLevelString, pszfmt, va);\
|
|
va_end(va); \
|
|
} \
|
|
} \
|
|
\
|
|
class comp##CDbgTrace\
|
|
{\
|
|
private:\
|
|
unsigned long _ulFlags;\
|
|
char const DEBFAR * const _pszName;\
|
|
public:\
|
|
comp##CDbgTrace(unsigned long ulFlags, char const DEBFAR * const pszName);\
|
|
~comp##CDbgTrace();\
|
|
};\
|
|
\
|
|
inline comp##CDbgTrace::comp##CDbgTrace(\
|
|
unsigned long ulFlags,\
|
|
char const DEBFAR * const pszName)\
|
|
: _ulFlags(ulFlags), _pszName(pszName)\
|
|
{\
|
|
comp##InlineDebugOut(_ulFlags, "Entering %s\n", _pszName);\
|
|
}\
|
|
\
|
|
inline comp##CDbgTrace::~comp##CDbgTrace()\
|
|
{\
|
|
comp##InlineDebugOut(_ulFlags, "Exiting %s\n", _pszName);\
|
|
}
|
|
|
|
# else // ! __cplusplus
|
|
|
|
# define DECLARE_DEBUG(comp) \
|
|
extern EXTRNC unsigned long comp##InfoLevel; \
|
|
extern EXTRNC char *comp##InfoLevelString; \
|
|
_inline void \
|
|
comp##InlineDebugOut(unsigned long fDebugMask, char const DEBFAR *pszfmt, ...) \
|
|
{ \
|
|
if (comp##InfoLevel & fDebugMask) \
|
|
{ \
|
|
va_list va; \
|
|
va_start (va, pszfmt); \
|
|
vdprintf(fDebugMask, comp##InfoLevelString, pszfmt, va);\
|
|
va_end(va); \
|
|
} \
|
|
}
|
|
|
|
# endif // ! __cplusplus
|
|
|
|
#else // DBG == 0
|
|
|
|
//
|
|
// NO DEBUG -- NO DEBUG -- NO DEBUG -- NO DEBUG -- NO DEBUG
|
|
//
|
|
|
|
# define Win4Assert(x)
|
|
# define Assert(x) // OBSOLETE!
|
|
# define Verify(x) (x) // OBSOLETE!
|
|
|
|
# define MAKE_CINFOLEVEL(comp)
|
|
# define DECLARE_GROUP(Name)
|
|
# define DEFINE_GROUP(Name)
|
|
# define DEFINE_BREAKPOINT(Name)
|
|
# define DECLARE_BREAKPOINT(Name,hGroup,fEnabled)
|
|
# define TEST_BREAKPOINT(x)
|
|
# define TEST_BREAKPOINTHR(x,hr)
|
|
# define DECLARE_DEBUGVALUE(Name,hGroup,Value)
|
|
# define DECLARE_DEBUGVALUEEX(Name,Title,hGroup,Value)
|
|
# define DEFINE_DEBUGVALUE(Name)
|
|
# define DECLARE_DEBUG(comp)
|
|
# define DECLARE_INFOLEVEL(comp)
|
|
|
|
#endif // DBG == 0
|
|
|
|
|
|
//
|
|
// The following section adds the API's used for the performance snapshots
|
|
//
|
|
|
|
|
|
#if PERFSNAP == 1
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
void _stdcall InitPerformanceMetering(char const DEBFAR * const);
|
|
void _stdcall Perfon(char const DEBFAR * const);
|
|
void _stdcall Perfsnap(char const DEBFAR * const, int const);
|
|
void _stdcall Perfcomment(char const DEBFAR * const s);
|
|
void _stdcall Perfdelta(char const DEBFAR * const, int const);
|
|
void _stdcall Perfoff(char const DEBFAR * const);
|
|
void _stdcall EndPerformanceMetering(char const DEBFAR * const);
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
|
|
#define PSNAPINIT(pszFileKey) InitPerformanceMetering(pszFileKey)
|
|
#define PSNAPEND() EndPerformanceMetering(NULL)
|
|
#define PSNAP(s) Perfsnap(s,0)
|
|
#define PSNAPL(s,l) Perfsnap(s,l)
|
|
#define PSNAPC(s) Perfcomment(s)
|
|
#define PSNAPDELTA(s) Perfdelta(s,0)
|
|
#define PSNAPDELTAL(s,l) Perfdelta(s,l)
|
|
#define PSNAPON(s) Perfon(s)
|
|
#define PSNAPOFF(s) Perfoff(s)
|
|
|
|
#else // PERFSNAP == 1
|
|
|
|
#define InitPerformanceMetering(x)
|
|
#define Perfon(x)
|
|
#define Perfsnap(x,y)
|
|
#define Perfcomment(x)
|
|
#define Perfdelta(x,y)
|
|
#define Perfoff(x)
|
|
#define EndPerformanceMetering(x)
|
|
|
|
#define PSNAPINIT(pszFileKey)
|
|
#define PSNAPEND()
|
|
#define PSNAP(s)
|
|
#define PSNAPL(s,l)
|
|
#define PSNAPC(s)
|
|
#define PSNAPDELTA(s)
|
|
#define PSNAPDELTAL(s,l)
|
|
#define PSNAPON(s)
|
|
#define PSNAPOFF(s)
|
|
|
|
#endif
|
|
|
|
|
|
//
|
|
// If the sampling profiler is to be used, then here are its includes
|
|
//
|
|
//
|
|
|
|
#ifdef WIN32
|
|
#if (DBG == 1) || (RTLPROFILE == 1)
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
void _stdcall InitSamplingProfiler(void);
|
|
void _stdcall EndSamplingProfiler(void);
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
|
|
|
|
#define INITSAMPLINGPROFILER InitSamplingProfiler()
|
|
#define ENDSAMPLINGPROFILER EndSamplingProfiler()
|
|
|
|
#else // RTLPROFILE == 1
|
|
|
|
#define INITSAMPLINGPROFILER
|
|
#define ENDSAMPLINGPROFILER
|
|
|
|
#endif // RTLPROFILE == 1
|
|
#endif // WIN32
|
|
|
|
#endif // __DEBNOT_H__
|