windows-nt/Source/XPSP1/NT/printscan/print/spooler/dbglib/dbgdev.hxx
2020-09-26 16:20:57 +08:00

177 lines
2.4 KiB
C++

/*++
Copyright (c) 1998-1999 Microsoft Corporation
All rights reserved.
Module Name:
dbgdev.hxx
Abstract:
Debug Device interface class. All debug devices
must derive from this class
Author:
Steve Kiraly (SteveKi) 7-Apr-1995
Revision History:
--*/
#ifndef _DBGDEV_HXX_
#define _DBGDEV_HXX_
DEBUG_NS_BEGIN
class TDebugDevice : public TDebugNodeDouble {
public:
enum ECharType
{
kAnsi,
kUnicode,
kUnknown,
};
TDebugDevice::
TDebugDevice(
IN LPCTSTR pszConfiguration,
IN EDebugType eDebugType
);
virtual
TDebugDevice::
~TDebugDevice(
VOID
);
virtual
BOOL
TDebugDevice::
bValid(
VOID
) const;
virtual
BOOL
TDebugDevice::
bOutput (
IN UINT uSize,
IN LPBYTE pBuffer
) = 0;
TDebugDevice::ECharType
TDebugDevice::
eGetCharType(
VOID
) const;
EDebugType
TDebugDevice::
eGetDebugType(
VOID
) const;
LPCTSTR
TDebugDevice::
pszGetConfigurationString(
VOID
) const;
UINT
MapStringTypeToDevice(
IN LPCTSTR pszDeviceString
) const;
protected:
class TIterator {
public:
TIterator(
IN TDebugDevice *DbgDevice
);
~TIterator(
VOID
);
BOOL
bValid(
VOID
) const;
VOID
First(
VOID
);
VOID
Next(
VOID
);
BOOL
IsDone(
VOID
) const;
LPCTSTR
Current(
VOID
) const;
UINT
Index(
VOID
) const;
private:
LPTSTR _pStr;
LPTSTR _pCurrent;
LPTSTR _pEnd;
BOOL _bValid;
UINT _uIndex;
};
friend class TIterator;
private:
struct DeviceMap
{
UINT Id;
LPCTSTR Name;
};
//
// Copying and assignment are not defined.
//
TDebugDevice::
TDebugDevice(
const TDebugDevice &rhs
);
const TDebugDevice &
TDebugDevice::
operator=(
const TDebugDevice &rhs
);
LPTSTR _pszConfiguration;
ECharType _eCharType;
EDebugType _eDebugType;
};
DEBUG_NS_END
#endif