home *** CD-ROM | disk | FTP | other *** search
/ s-gikan2.maizuru-ct.ac.jp / s-gikan2.maizuru-ct.ac.jp.zip / s-gikan2.maizuru-ct.ac.jp / pub / source / old / magdb140su.lzh / MagaDbg.h < prev    next >
C/C++ Source or Header  |  1999-07-16  |  5KB  |  192 lines

  1. /*
  2.     MagaDebug32 âfâoâbâOâcü[âï Ver1.40
  3.     âwâbâ_ü[âtâ@âCâï
  4.     üiébü^ébü{ü{ïñÆ╩üj
  5. */
  6. #if !defined(___MAGADBGCLASS_H)
  7. #define    ___MAGADBGCLASS_H
  8.  
  9. /*
  10.     VisualC++ é╞ BolandC++ é╔æ╬ë₧
  11. */
  12. #if !defined(_MSC_VER) && !defined(__BORLANDC__)
  13. #error This debug tool is much with VisualC++ and BorlandC++ only.
  14. #endif
  15. #if defined(__BORLANDC__) && defined(__MT__)
  16. #define _MT
  17. #endif
  18.  
  19. /*
  20.     ║░─▐É╢ɼé≡├▐╩▐»╕▐╙░─▐é╔ï¡Éº
  21.     VC++ Only
  22.     (Ver1.4x ê╚ì~é═ ReleaseÉΩùplib é╔é─è╔ÿaé╠ù\ÆΦ)
  23. */
  24. #if defined(_MSC_VER) && !defined(_DEBUG)
  25. #error This condition requires that the RuntimeLibrary for debug version should be designated.
  26. #endif
  27.  
  28. #include <windows.h>
  29.  
  30. /* MagaDbg ╕╫╜û╝ (╥»╛░╝▐é≡Ä≤é»ÄµéΘ╠▀█╕▐╫╤) */
  31. #if !defined(MAGADBGNAME)
  32. #define MAGADBGNAME         "MagaDbg"
  33. #endif
  34.  
  35. /* ╒░╗▐Ägùp╠╫╕▐ (C/C++ïñùp)*/
  36. #define DBG_NOHEADERDUMP    0x0001    /* └▐▌╠▀═»└▐░ö±ò\Ī */
  37. #define DBG_OCTDUMP            0x0002    /* 8╩▐▓─é├é┬ */
  38. #define DBG_NOADDRESSDUMP    0x0004    /* ▒─▐┌╜ö±ò\Ī */
  39. #define    DBG_NOCHRDUMP        0x0008    /* ╖¼╫╕└ö±ò\Ī */
  40.  
  41.  
  42. #if defined(__cplusplus)
  43.  
  44. // Aliase of class name
  45. #if defined(_MT)
  46.     #if !defined(_DLL)
  47.         #define CMagaDbg            CMagaDbg_MT
  48.         #define CMagaDbgFile        CMagaDbgFile_MT
  49.         #define g_MagaDbgMapNumber    g_MagaDbgMapNumber_MT
  50.     #else
  51.         #define CMagaDbg            CMagaDbg_MD
  52.         #define CMagaDbgFile        CMagaDbgFile_MD
  53.         #define g_MagaDbgMapNumber    g_MagaDbgMapNumber_MD
  54.     #endif
  55. #endif
  56.  
  57. // ╒░╗▐Ägùp╠╫╕▐ (C++é╠é▌)
  58. const    BOOL    CR = TRUE;        // ò\Īîπëⁿìs
  59. const    BOOL    CRNO = FALSE;    // ò\Īîπö±ëⁿìs
  60. enum    dbgColor
  61.         {DBG_BLACK = 0, DBG_BLUE, DBG_GREEN, DBG_CYAN,
  62.         DBG_RED, DBG_MAGENTA, DBG_YELLOW, DBG_WHITE};
  63.                                 // ò\ĪÉF
  64. //
  65. // èεû{âfâoâbâOâNâëâXÉΘî╛
  66. // ------------------------------
  67. class CMagaDbg {
  68.  
  69. private:
  70.     char*    m_lpszHead;        // æùÉMé╠ôxé╔òté»éΘâüâbâZü[âWâwâbâ_
  71.     int        m_iHeadLen;        // é╗é╠ò╢ÄÜÆ╖
  72.     BOOL    m_fSep;            // öjèⁿé│éΩéΘé╞é½é╔ïµÉ╪éΦò╢ÄÜé≡ôⁿéΩéΘé⌐
  73.     int        m_iColor;        // ò\ĪÉF(intî^é┼ò█Ä¥)
  74.     DWORD    m_nInterval;    // ò\Īîπé╠âCâôâ^ü[âoâï
  75.  
  76.     COPYDATASTRUCT    m_cds;            // æùÉMùpì\æóæ╠
  77.     LONG            m_nMapNumber;    // DebugMessage MappingSeq No.
  78.     HANDLE            m_hDbgMap;        // DebugMessage MemoryMappedFile Handle
  79.     LPSTR            m_lpDbgMap;        // DebugMessage Mapping Pointer
  80. private:
  81.     void    CMagaDbgInit(char*, BOOL, dbgColor, DWORD = 0);
  82.  
  83. protected:
  84.     void    SetHeader(char*, CMagaDbg*);
  85.     int        AddHeader(char**, char*);
  86.     HWND    MagaDbgFind(void) {
  87.         return (FindWindow(MAGADBGNAME, NULL));
  88.     }
  89.     BOOL    GetSeparator(void) {
  90.         return m_fSep;
  91.     }
  92.     DWORD    GetInterval(void) {
  93.         return m_nInterval;
  94.     }
  95.  
  96. public:
  97.     CMagaDbg(void);
  98.     CMagaDbg(char*, BOOL = FALSE, dbgColor = DBG_BLACK, DWORD = 0);
  99.     CMagaDbg(char*, dbgColor);
  100.     CMagaDbg(char*, BOOL);
  101.     CMagaDbg(BOOL);
  102.     CMagaDbg(dbgColor);
  103.     CMagaDbg(BOOL, dbgColor);
  104.     virtual    ~CMagaDbg();
  105.  
  106. public:
  107.     virtual    void print(char*,    BOOL = CR);        // 127ò╢ÄÜê╚ôαé╠ò╢ÄÜù±é≡ò\Ī
  108.     void    printf(char*, ...);                    // 127ò╢ÄÜê╚ôαé╠öCê╙ò╢ÄÜù±ò\Ī
  109.     void    printStruct(LPRECT, char* = NULL);    // éµé¡Ägéñì\æóæ╠âüâôâoé╠ò\Ī
  110.     void    printStruct(LPSIZE, char* = NULL);
  111.     void    printStruct(LPPOINT, char* = NULL);
  112.     void    dump(LPVOID, UINT, DWORD = 0);        // â_âôâvò\Ī
  113.     BOOL    scanf(char*, char* = NULL);            // öCê╙ò╢ÄÜù±ôⁿù═
  114.     void    SetInterval(DWORD n) {
  115.         m_nInterval = n;
  116.     }
  117. };
  118.  
  119. #define    printRect(LPRECT)        printStruct(LPRECT)
  120. #define    printSize(LPSIZE)        printStruct(LPSIZE)
  121. #define    printPoint(LPPOINT)        printStruct(LPPOINT)
  122.  
  123.  
  124. // CMagaDbgFileùp âIâvâVâçâôÉ▌ÆΦì\æóæ╠
  125. // ------------------------------
  126. struct MAGADBGOPT {
  127.     char*        lpszFilename;    // âìâOâtâ@âCâïû╝
  128.     BOOL        fOverwrite;        // ÅπÅæ:TRUEüCÆ╟ë┴:FALSE
  129.     BOOL        fDisplay;        // ò\Īéα:TRUEüCâtâ@âCâïÅoù═é╠é▌:FALSE
  130.     char*        lpHead;            // ê╚ë║èεû{║▌╜─╫╕└é╞ô»é╢
  131.     BOOL        fSeparator;
  132.     dbgColor    eColor;
  133.     DWORD        nInterval;
  134. };
  135. #define    LPMAGADBGOPT    MAGADBGOPT*
  136.  
  137. //
  138. // öhÉ╢âfâoâbâOâNâëâXÉΘî╛
  139. // ------------------------------
  140. class CMagaDbgFile : public CMagaDbg {
  141.  
  142. private:
  143.     void    CMagaDbgFileInit(LPMAGADBGOPT);
  144.     void    ErrorMsg(char*, DWORD);
  145.  
  146. private:
  147.     HANDLE    m_hFile;        // LogFile Handle
  148.     BOOL    m_fDisplay;        // ò\Īéαìséñé⌐é╟éñé⌐
  149.  
  150. public:
  151.     CMagaDbgFile(LPMAGADBGOPT);
  152.     CMagaDbgFile(char*, BOOL = TRUE, BOOL = TRUE, char* = NULL, BOOL = FALSE, dbgColor = DBG_BLACK, DWORD = 0);
  153.     ~CMagaDbgFile();
  154.  
  155. public:
  156.     void print(char*,    BOOL = CR);    // ╡░╩▐░╫▓─▐
  157. };
  158.  
  159.     // End of C++ only
  160. #endif
  161.  
  162.  
  163. #if defined(__cplusplus)
  164. extern "C" {
  165. #endif
  166.  
  167. // Aliase of function name
  168. #if defined(_MT)
  169.     #if !defined(_DLL)
  170.         #define Dbg_printf    Dbg_printf_MT
  171.         #define Dbg_sep        Dbg_sep_MT
  172.         #define Dbg_scanf    Dbg_scanf_MT
  173.         #define Dbg_dump    Dbg_dump_MT
  174.     #else
  175.         #define Dbg_printf    Dbg_printf_MD
  176.         #define Dbg_sep        Dbg_sep_MD
  177.         #define Dbg_scanf    Dbg_scanf_MD
  178.         #define Dbg_dump    Dbg_dump_MD
  179.     #endif
  180. #endif
  181.  
  182. void Dbg_printf(char *, ...);
  183. void Dbg_sep(void);
  184. BOOL Dbg_scanf(char *, char *);
  185. void Dbg_dump(void *, UINT, DWORD);
  186.  
  187. #if defined(__cplusplus)
  188. }
  189. #endif
  190.  
  191. #endif
  192.