TRACES.H
/////////////////////////////////////////////////////////////////////////////// 
// 
//  File Name  
//      TRACES.H 
// 
//  Description 
//      Function declaration for the API's in TRACES.CPP 
// 
//  Author 
//      Irving De la Cruz 
// 
//  Revision: 1.3 
// 
// Written for Microsoft Windows Developer Support 
// Copyright (c) 1994-1996 Microsoft Corporation. All rights reserved. 
// 
 
#ifndef _TRACES_H 
#define _TRACES_H 
 
/////////////////////////////////////////////////////////////////////////////// 
//  Function prototype for the debug functions used to trace and log output  
//  messages 
// 
#include <OBJBASE.H> 
 
#define TRACES_CONSOLE              0x00000001 
#define TRACES_LOG_FILE             0x00000002 
#define TRACES_NO_COM_OUTPUT        0x00000004 
#define TRACES_NO_ASSERTS           0x00000008 
#define TRACES_NO_ASSERT_DIALOG     0x00000010 
 
#ifdef __cplusplus 
extern "C" 
{ 
#endif // __cplusplus 
 
#ifdef ENABLE_DEBUG_OUTPUT 
 
void WINAPI InitTraces (DWORD dwFlags); 
void WINAPI UnInitTraces (); 
 
void WINAPI  TraceFn1 (LPSTR); 
void WINAPI  TraceFn2 (LPSTR, ULONG); 
void WINAPI  TraceFn3 (LPSTR); 
void __cdecl TraceFn4 (BOOL, LPSTR, ...); 
void WINAPI  TraceIO  (ULONG); 
void WINAPI  TraceIO2 (LPSTR, ULONG); 
 
#ifndef TRACES_NO_MAPI 
void WINAPI TraceProp (ULONG); 
#else 
#define TraceProp(a) 
#endif // TRACES_NO_MAPI 
 
#define TraceString1(a,b)           TraceFn4 (FALSE, a, b) 
#define TraceString2(a,b,c)         TraceFn4 (FALSE, a, b, c) 
#define TraceString3(a,b,c,d)       TraceFn4 (FALSE, a, b, c, d) 
#define TraceString4(a,b,c,d,e)     TraceFn4 (FALSE, a, b, c, d, e) 
 
#define TraceMessage(a)             TraceFn1 (a) 
#define TraceMessageIf(a, b)        {if (b) TraceFn1 (a); } 
#define TraceRaw(a)                 TraceFn3 (a) 
 
// These functions will trace only if the error is non-zero 
#define TraceRPCError(a,b)          {if (b) TraceFn4 (FALSE, "%s, RPC error: %d",a, b);} 
#define TraceSysError(a,b)          {if (b) TraceFn4 (FALSE, "%s, Systen Error: %d",a, b);} 
#define TraceResult(a, b)           {if (b) TraceFn2 (a, b);} 
#define TraceDebugger(a,b)          TraceFn4 (TRUE, a, b) 
 
void WINAPI AssertStatement (LPSTR, ULONG); 
void WINAPI AssertStatementWithMsg (LPSTR, LPSTR, ULONG); 
 
#ifndef ASSERT 
#define ASSERT(a)           {if (!(a)) AssertStatement (__FILE__, __LINE__);} 
#endif // ASSERT 
#define ASSERTMSG(a, b)     {if (!(a)) AssertStatementWithMsg (b, __FILE__, __LINE__);} 
 
#ifndef VERIFY 
#define VERIFY(a)       ASSERT(a) 
#endif // VERIFY 
 
#ifdef  DISABLE_INFO_TRACES 
#define TraceInfoMessage(a) 
#else  // DISABLE_INFO_TRACES 
#define TraceInfoMessage(a)     TraceFn1 (a) 
#endif // DISABLE_INFO_TRACES 
 
#else // ENABLE_DEBUG_OUTPUT 
 
#define TraceMessage(a) 
#define TraceMessageIf(a, b) 
#define TraceInfoMessage(a) 
#define TraceResult(a, b) 
#define TraceIO(a)              a 
#define TraceIO2(a, b) 
#define TraceProp(a) 
#define TraceRPCError(a,b) 
#define TraceSysError(a,b) 
#define TraceString1(a,b) 
#define TraceString2(a,b,c) 
#define TraceString3(a,b,c,d) 
#define TraceString4(a,b,c,d,e) 
#define TraceRaw(a) 
#define TraceDebugger(a,b) 
 
#ifndef ASSERT 
#define ASSERT(a) 
#endif // ASSERT 
#define ASSERTMSG(a, b) 
 
#ifndef VERIFY 
#define VERIFY(a)               a 
#endif // VERIFY 
 
#define InitTraces(a) 
#define UnInitTraces() 
 
#endif // ENABLE_DEBUG_OUTPUT 
 
#define AssertSz(a, b)      ASSERTMSG(a, b) 
 
#ifdef __cplusplus 
} 
#endif // __cplusplus 
 
#endif // _TRACES_H 
 
// End of file for TRACES.H