home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
DOS/V Power Report 2000 January
/
VPR0001A.ISO
/
OLS
/
magdb142
/
magdb142.lzh
/
MagaDbg.h
< prev
next >
Wrap
C/C++ Source or Header
|
1999-10-06
|
6KB
|
230 lines
/*
MagaDebug32 デバッグツール Ver1.41
ヘッダーファイル
(C/C++共通)
*/
#if !defined(___MAGADBGCLASS_H)
#define ___MAGADBGCLASS_H
/*
VisualC++ と BolandC++ に対応
*/
#if !defined(_MSC_VER) && !defined(__BORLANDC__)
#error This debug tool is much with VisualC++ and BorlandC++ only.
#endif
#if defined(__BORLANDC__) && defined(__MT__)
#define _MT
#endif
/*
コード生成をデバッグモードに強制 VC++ Only
(Ver1.41 以降は Release専用lib にて緩和)
#if defined(_MSC_VER) && !defined(_DEBUG)
#error This condition requires that the RuntimeLibrary for debug version should be designated.
#endif
*/
#include <windows.h>
/* MagaDbg クラス名 (メッセージを受け取るプログラム) */
#if !defined(MAGADBGNAME)
#define MAGADBGNAME "MagaDbg"
#endif
/* ユーザ使用フラグ (C/C++共用)*/
#define DBG_NOHEADERDUMP 0x0001 /* ダンプヘッダー非表示 */
#define DBG_OCTDUMP 0x0002 /* 8バイトづつ */
#define DBG_NOADDRESSDUMP 0x0004 /* アドレス非表示 */
#define DBG_NOCHRDUMP 0x0008 /* キャラクタ非表示 */
#if defined(__cplusplus)
// Aliase of class name
#if defined(_DEBUG)
#if defined(_MT)
#if !defined(_DLL)
#define CMagaDbg CMagaDbg_MT
#define CMagaDbgFile CMagaDbgFile_MT
#define g_MagaDbgMapNumber g_MagaDbgMapNumber_MT
#else
#define CMagaDbg CMagaDbg_MD
#define CMagaDbgFile CMagaDbgFile_MD
#define g_MagaDbgMapNumber g_MagaDbgMapNumber_MD
#endif
#endif
#else // Release
#if defined(_MT)
#if !defined(_DLL)
#define CMagaDbg CMagaDbg_MTR
#define CMagaDbgFile CMagaDbgFile_MTR
#define g_MagaDbgMapNumber g_MagaDbgMapNumber_MTR
#else
#define CMagaDbg CMagaDbg_MDR
#define CMagaDbgFile CMagaDbgFile_MDR
#define g_MagaDbgMapNumber g_MagaDbgMapNumber_MDR
#endif
#else
#define CMagaDbg CMagaDbg_R
#define CMagaDbgFile CMagaDbgFile_R
#define g_MagaDbgMapNumber g_MagaDbgMapNumber_R
#endif
#endif
// ユーザ使用フラグ (C++のみ)
const BOOL CR = TRUE; // 表示後改行
const BOOL CRNO = FALSE; // 表示後非改行
enum dbgColor
{DBG_BLACK = 0, DBG_BLUE, DBG_GREEN, DBG_CYAN,
DBG_RED, DBG_MAGENTA, DBG_YELLOW, DBG_WHITE};
// 表示色
//
// 基本デバッグクラス宣言
// ------------------------------
class CMagaDbg {
private:
char* m_lpszHead; // 送信の度に付けるメッセージヘッダ
int m_iHeadLen; // その文字長
BOOL m_fSep; // 破棄されるときに区切り文字を入れるか
int m_iColor; // 表示色(int型で保持)
DWORD m_nInterval; // 表示後のインターバル
COPYDATASTRUCT m_cds; // 送信用構造体
LONG m_nMapNumber; // DebugMessage MappingSeq No.
HANDLE m_hDbgMap; // DebugMessage MemoryMappedFile Handle
LPSTR m_lpDbgMap; // DebugMessage Mapping Pointer
private:
void CMagaDbgInit(char*, BOOL, dbgColor, DWORD = 0);
protected:
void SetHeader(char*, CMagaDbg*);
int AddHeader(char**, char*);
HWND MagaDbgFind(void) {
return (FindWindow(MAGADBGNAME, NULL));
}
BOOL GetSeparator(void) {
return m_fSep;
}
DWORD GetInterval(void) {
return m_nInterval;
}
public:
CMagaDbg(void);
CMagaDbg(char*, BOOL = FALSE, dbgColor = DBG_BLACK, DWORD = 0);
CMagaDbg(char*, dbgColor);
CMagaDbg(char*, BOOL);
CMagaDbg(BOOL);
CMagaDbg(dbgColor);
CMagaDbg(BOOL, dbgColor);
virtual ~CMagaDbg();
public:
virtual void print(char*, BOOL = CR); // 127文字以内の文字列を表示
void printf(char*, ...); // 127文字以内の任意文字列表示
void printStruct(LPRECT, char* = NULL); // よく使う構造体メンバの表示
void printStruct(LPSIZE, char* = NULL);
void printStruct(LPPOINT, char* = NULL);
void dump(LPVOID, UINT, DWORD = 0); // ダンプ表示
BOOL scanf(char*, char* = NULL); // 任意文字列入力
void SetInterval(DWORD n) {
m_nInterval = n;
}
};
#define printRect(LPRECT) printStruct(LPRECT)
#define printSize(LPSIZE) printStruct(LPSIZE)
#define printPoint(LPPOINT) printStruct(LPPOINT)
// CMagaDbgFile用 オプション設定構造体
// ------------------------------
struct MAGADBGOPT {
char* lpszFilename; // ログファイル名
BOOL fOverwrite; // 上書:TRUE,追加:FALSE
BOOL fDisplay; // 表示も:TRUE,ファイル出力のみ:FALSE
char* lpHead; // 以下基本コンストラクタと同じ
BOOL fSeparator;
dbgColor eColor;
DWORD nInterval;
};
#define LPMAGADBGOPT MAGADBGOPT*
//
// 派生デバッグクラス宣言
// ------------------------------
class CMagaDbgFile : public CMagaDbg {
private:
void CMagaDbgFileInit(LPMAGADBGOPT);
void ErrorMsg(char*, DWORD);
private:
HANDLE m_hFile; // LogFile Handle
BOOL m_fDisplay; // 表示も行うかどうか
public:
CMagaDbgFile(LPMAGADBGOPT);
CMagaDbgFile(char*, BOOL = TRUE, BOOL = TRUE, char* = NULL, BOOL = FALSE, dbgColor = DBG_BLACK, DWORD = 0);
~CMagaDbgFile();
public:
void print(char*, BOOL = CR); // オーバーライド
};
// End of C++ only
#endif
/* Aliase of function name */
#if defined(_DEBUG)
#if defined(_MT)
#if !defined(_DLL)
#define Dbg_printf Dbg_printf_MT
#define Dbg_sep Dbg_sep_MT
#define Dbg_scanf Dbg_scanf_MT
#define Dbg_dump Dbg_dump_MT
#else
#define Dbg_printf Dbg_printf_MD
#define Dbg_sep Dbg_sep_MD
#define Dbg_scanf Dbg_scanf_MD
#define Dbg_dump Dbg_dump_MD
#endif
#endif
#else /* Release */
#if defined(_MT)
#if !defined(_DLL)
#define Dbg_printf Dbg_printf_MTR
#define Dbg_sep Dbg_sep_MTR
#define Dbg_scanf Dbg_scanf_MTR
#define Dbg_dump Dbg_dump_MTR
#else
#define Dbg_printf Dbg_printf_MDR
#define Dbg_sep Dbg_sep_MDR
#define Dbg_scanf Dbg_scanf_MDR
#define Dbg_dump Dbg_dump_MDR
#endif
#else
#define Dbg_printf Dbg_printf_R
#define Dbg_sep Dbg_sep_R
#define Dbg_scanf Dbg_scanf_R
#define Dbg_dump Dbg_dump_R
#endif
#endif
#if defined(__cplusplus)
extern "C" {
#endif
void Dbg_printf(char *, ...);
void Dbg_sep(void);
BOOL Dbg_scanf(char *, char *);
void Dbg_dump(void *, UINT, DWORD);
#if defined(__cplusplus)
}
#endif
#endif