TKCore.h
上传用户:hygd004
上传日期:2022-02-04
资源大小:1841k
文件大小:3k
源码类别:

DirextX编程

开发平台:

Visual C++

  1. #if !defined(GENRS_Asserter_H_)
  2. #define GENRS_Asserter_H_
  3. // ----------  System Includes  ----------------- 
  4. #include <crtdbg.h>
  5. #include <fstream>
  6. #include <stdarg.h>
  7. #include <time.h>
  8. using namespace std;
  9. class GENRS_Asserter 
  10. {
  11. // -----------------------------------------------------------------------
  12. // Public Methods
  13. // -----------------------------------------------------------------------
  14. public:
  15. CRITICAL_SECTION m_lock;
  16. GENRS_Asserter ()
  17. {
  18. InitializeCriticalSection(&m_lock);
  19. };
  20. ~GENRS_Asserter ()
  21. {
  22. DeleteCriticalSection(&m_lock);
  23. }
  24.     void operator ()(
  25.         const char* testName,
  26.         const char* fileName,
  27.         const int& lineNum)
  28.     {
  29.         
  30.             
  31. //#ifdef _DEBUG     
  32. EnterCriticalSection(&m_lock);
  33.             static ofstream m_genrsErr;
  34.             
  35.             if(0==m_genrsErr.is_open())
  36.             {
  37.                 m_genrsErr.open("c:\core", ios::out|ios::ate|ios::app);
  38.             }
  39. char time[15];
  40. char date[15];
  41. //Get current time and data.
  42. _strtime(time);
  43. _strdate(date);
  44.             m_genrsErr << testName <<", " << fileName<< ", " << lineNum << 
  45. ", TIME:" << time << ", DATE:" << date << endl;
  46.             m_genrsErr.close();
  47. LeaveCriticalSection(&m_lock);
  48. //#endif            
  49.           
  50.         
  51.     };
  52. void operator()(const char* fileName,
  53. const int& lineNum,
  54. char* pFmt,
  55. ...)
  56. {
  57. //#ifdef _DEBUG
  58. EnterCriticalSection(&m_lock);
  59.  static ofstream m_genrsErr;
  60.             
  61.             if(0==m_genrsErr.is_open())
  62.             {
  63.                 m_genrsErr.open("c:\core", ios::out|ios::ate|ios::app);
  64.             }
  65. char Msg[500];
  66. va_list pArg;
  67. va_start(pArg, pFmt);
  68. vsprintf(Msg, pFmt, pArg);
  69. va_end(pArg);
  70. //strcat(Msg,"n");
  71. char time[15];
  72. char date[15];
  73. //Get current time and data.
  74. _strtime(time);
  75. _strdate(date);
  76.             m_genrsErr << Msg <<", " << fileName<< ", " << lineNum << 
  77. ", TIME:" << time << ", DATE:" << date << endl;
  78.             m_genrsErr.close();
  79. LeaveCriticalSection(&m_lock);
  80. //#endif
  81.   }
  82. }; 
  83. inline void TKL_Trace(char * pFormat,...)
  84. {
  85. #ifdef _DEBUG
  86.     char Msg[500];
  87.     va_list pArg;
  88.     va_start(pArg, pFormat);
  89.     vsprintf(Msg, pFormat, pArg);
  90.     va_end(pArg);
  91.     strcat(Msg,"n");
  92.     OutputDebugString(Msg);
  93. #endif
  94. }
  95. #define NOTE(name)
  96.         GENRS_Asserter()(name, __FILE__, __LINE__)
  97. #define NOTE1(name,nval)
  98. GENRS_Asserter()( __FILE__, __LINE__,name,nval)
  99. #define NOTE2(name,nval1,nval2)
  100. GENRS_Asserter()(__FILE__, __LINE__,name,nval1,nval2)
  101. #define NOTE3(name,nval1,nval2,nval3)
  102. GENRS_Asserter()(__FILE__, __LINE__,name,nval1,nval2,nval3)
  103. #endif //GENRS_Asserter_H_