windows-nt/Source/XPSP1/NT/admin/admt/profext/mcsdbgu.h

115 lines
2.9 KiB
C
Raw Normal View History

2020-09-26 03:20:57 -05:00
//---------------------------------------------------------------------------
// McsDebugUtil.h
//
// The MCS Debug utility classes are declared in this file.
// The utility classes are:
//
// McsDebugException:
// This class is the exception class that is thrown by
// MCSEXCEPTION(SZ) macros and MCSASSERT(SZ) macros in
// test mode.
//
// McsDebugCritSec:
// Critical section class to support multi-threaded calls
// to the logger classes.
//
// McsDebugLog:
// Writes to ostream object.
//
//
// (c) Copyright 1995-1998, Mission Critical Software, Inc., All Rights Reserved
//
// Proprietary and confidential to Mission Critical Software, Inc.
//---------------------------------------------------------------------------
#ifndef MCSINC_McsDebugUtil_h
#define MCSINC_McsDebugUtil_h
#ifdef __cplusplus /* C++ */
#ifndef WIN16_VERSION /* Not WIN16_VERSION */
#include <iostream.h>
#include <fstream.h>
namespace McsDebugUtil {
// ---------------
// McsDebugCritSec
// ---------------
class McsDebugCritSec {
public:
McsDebugCritSec (void);
~McsDebugCritSec (void);
void enter (void);
void leave (void);
private:
McsDebugCritSec (const McsDebugCritSec&);
McsDebugCritSec& operator= (const McsDebugCritSec&);
private:
CRITICAL_SECTION m_section;
};
// -----------
// McsDebugLog
// -----------
class McsDebugLog {
public:
McsDebugLog (void);
~McsDebugLog (void);
bool isLogSet (void) const;
void changeLog (ostream *outStreamIn);
void write (const char *messageIn);
private:
// Do not allow copy ctor & operator=.
McsDebugLog (const McsDebugLog&);
McsDebugLog& operator= (const McsDebugLog&);
private:
ostream *m_outStream;
};
// --- INLINES ---
// ---------------------
// McsDebugCritSec
// ---------------------
inline McsDebugCritSec::McsDebugCritSec (void){
::InitializeCriticalSection (&m_section);
}
inline McsDebugCritSec::~McsDebugCritSec (void) {
::DeleteCriticalSection (&m_section);
}
inline void McsDebugCritSec::enter (void) {
::EnterCriticalSection (&m_section);
}
inline void McsDebugCritSec::leave (void) {
::LeaveCriticalSection (&m_section);
}
// -----------
// McsDebugLog
// -----------
inline McsDebugLog::McsDebugLog (void)
: m_outStream (NULL)
{ /* EMPTY */ }
// outStream object is set and owned by the
// user of this class do not delete.
inline McsDebugLog::~McsDebugLog (void) { /* EMPTY */ }
inline bool McsDebugLog::isLogSet (void) const
{ return m_outStream != NULL; }
inline void McsDebugLog::changeLog
(ostream *outStreamIn) {
m_outStream = outStreamIn;
}
}
#endif /* Not WIN16_VERSION */
#endif /* C++ */
#endif /* MCSINC_Mcs_Debug_Util_h */