/*++

   Copyright    (c)    1994-1998    Microsoft Corporation

   Module  Name :

        debugafx.h

   Abstract:

        Debugging routines using AFX/MFC extensions

   Author:

        Ronald Meijer (ronaldm)

   Project:

        Internet Services Manager

   Revision History:

--*/

#ifndef _DEBUGAFX_H
#define _DEBUGAFX_H

//
// ENUM for special debug output control tokens
//
enum ENUM_DEBUG_AFX 
{ 
    EDBUG_AFX_EOL = -1 
};

//
// Debug Formatting Macros
//
#if defined(_DEBUG)

   #define TRACEFMTPGM        DbgFmtPgm( THIS_FILE, __LINE__ )
   #define TRACEOUT(x)        { afxDump << x; }
   #define TRACEEOL(x)        { afxDump << x << EDBUG_AFX_EOL; }
   #define TRACEEOLID(x)      { afxDump << TRACEFMTPGM << x << EDBUG_AFX_EOL; }
   #define TRACEEOLERR(err,x) { if (err) TRACEEOLID(x) }

#else

   #define TRACEOUT(x)        { ; }
   #define TRACEEOL(x)        { ; }
   #define TRACEEOLID(x)      { ; }
   #define TRACEEOLERR(err,x) { ; }

#endif

//
// Append an EOL onto the debug output stream
//
COMDLL CDumpContext & operator <<(
    IN CDumpContext & out,
    IN ENUM_DEBUG_AFX edAfx
    );

#ifndef UNICODE

COMDLL CDumpContext & operator <<(
    IN CDumpContext & out,
    IN LPCWSTR pwchStr
    );

#endif UNICODE

//
// Format a program name and line number for output (removes the path info)
//
COMDLL extern LPCSTR
DbgFmtPgm (
    IN LPCSTR szFn,
    IN int line
    );

COMDLL CDumpContext & operator <<(
    IN CDumpContext & out,
    IN const GUID & guid
    );

#endif // _DEBUGAFX_H