EventLogger.h
资源名称:g.rar [点击查看]
上传用户:laitongbao
上传日期:2021-02-20
资源大小:8176k
文件大小:5k
源码类别:

射击游戏

开发平台:

Visual C++

  1. //copyright Boer
  2. //---------------------------------------------------------- -*- Mode: C++ -*-
  3. // eventlogger.h
  4. //----------------------------------------------------------------------------
  5. #ifndef EVENTLOGGER_H
  6. #define EVENTLOGGER_H
  7. #ifdef _MSC_VER
  8. #pragma once
  9. #endif
  10. // This turns on or off all logging functionality
  11. // Log to disk functionality
  12. #define HTML_OUTPUT
  13. // If logging is not enabled, the system goes away completely
  14. #ifdef LOGGING 
  15. #include "CGLApplication.h"
  16. #include <vector>
  17. #include <map>
  18. #include <stdarg.h>
  19. #include <stdio.h>
  20. #include <assert.h>
  21.     // Actual interface to event logging class
  22. #define FN(var_1)                       EventLogFN obj____unique_name(var_1)
  23.     #define LOG                         g_Log.logEvent
  24.     #define LOG_INIT                    g_Log.init
  25.     #define LOG_UPDATE                  g_Log.update
  26.     #define LOG_TERM                    g_Log.term
  27.     #define LOG_FLUSH                   g_Log.flush
  28.     #define LOG_REGISTER(var_1, var_2)  g_Log.registerDebug(var_1, var_2)
  29.     // Helper function designed to push and pop
  30.     class EventLogFN
  31.     {
  32.     public:
  33.         EventLogFN(const TCHAR* function);
  34.         ~EventLogFN();
  35.     private:
  36.         const TCHAR* m_class;
  37.         const TCHAR* m_function;
  38.     };
  39.     // General text modifier flags
  40.     #define LOG_COLOR_RED           0x00000001
  41.     #define LOG_COLOR_DK_RED        0x00000002
  42.     #define LOG_COLOR_GREEN         0x00000004
  43.     #define LOG_COLOR_DK_GREEN      0x00000008
  44.     #define LOG_COLOR_BLUE          0x00000010
  45.     #define LOG_COLOR_DK_BLUE       0x00000020
  46.     #define LOG_SIZE_LARGE          0x00000040
  47.     #define LOG_SIZE_SMALL          0x00000080
  48.     #define LOG_BOLD                0x00000100
  49.     #define LOG_ITALICS             0x00000200
  50.     #define LOG_UNDERLINE           0x00000400
  51.     // "stack" typedef
  52.     typedef std::vector<const TCHAR*> CharPtrVec;
  53.     //----------------------------------------------------------------------------
  54.     // EventLogger
  55.     //----------------------------------------------------------------------------
  56.     class EventLogger
  57.     {
  58.     public:
  59.         EventLogger();
  60.         // Initialize and shut down the event logging system
  61.         bool init(const TCHAR* logName);
  62.         void term();
  63.         // Is the event logging system initialized?
  64.         bool isInitialized() { return m_initialized; }
  65.         // Log an event (with or without formatting flags)
  66.         void logEvent(unsigned int flags, const TCHAR* format, ...);
  67.         void logEvent(const TCHAR* format, ...);
  68.         // Call once per game tick to update the event logger
  69.         void update();
  70.         // Use this function to force a write of the event logger.  Handy
  71.         // if you've run into an error which will cause a crash.
  72.         void flush();
  73.         // Push a function onto the call stack
  74.         void pushFunction(const TCHAR* name);
  75.         // Pop a function off the call stack
  76.         void popFunction();
  77.     private:
  78.         void logOutput(TCHAR* buffer, unsigned int flags);
  79.         void logCallStack();
  80.         // Debug output function
  81.         void debugUpdate();
  82.         void debugOutput(const TCHAR* buffer, unsigned int flags);
  83. #ifdef HTML_OUTPUT
  84.         // HTML-based disk logging
  85.         void htmlUpdate();
  86.         void htmlOutput(const TCHAR* buffer, unsigned int flags);
  87.         void htmlFunctionStart(const TCHAR* fn);
  88.         void htmlFunctionEnd();
  89.         // HTML output functions writing to disk
  90.         void writeStartParagraph();
  91.         void writeEndParagraph();
  92.         void writeStartUnsortedList();
  93.         void writeEndUnsortedList();
  94.         void writeStartListItem();
  95.         void writeEndListItem();
  96.         void writeStartFont(const TCHAR* fontName, int size, unsigned char red, unsigned char green, unsigned char blue);
  97.         void writeEndFont();
  98.         void writeText(unsigned int flags, const TCHAR* format, ...);
  99.         void writeEndLine();
  100.         void writeIndent();
  101.         
  102. #endif // HTML_OUTPUT
  103. #ifdef HTML_OUTPUT
  104.         FILE*           m_file;
  105. #endif // HTML_OUTPUT
  106.         
  107.         CharPtrVec      m_callStack;
  108.         bool            m_loggedEvent;
  109.         unsigned int    m_previousStackLevel;
  110.         unsigned int    m_updateCount;
  111.         bool            m_initialized;
  112. Timer*          m_timer;
  113.     };
  114. extern EventLogger g_Log;
  115. #else
  116. #define LOG         0 &&
  117. #define FN(x)
  118. #define LOG_INIT(x)
  119. #define LOG_UPDATE()
  120. #define LOG_TERM()
  121. #define LOG_FLUSH()
  122. #define LOG_REGISTER(a, b)
  123. // have to have these because the compiler does see them
  124. #define LOG_COLOR_RED           0
  125. #define LOG_COLOR_DK_RED        0
  126. #define LOG_COLOR_GREEN         0
  127. #define LOG_COLOR_DK_GREEN      0
  128. #define LOG_COLOR_BLUE          0
  129. #define LOG_COLOR_DK_BLUE       0
  130. #define LOG_SIZE_LARGE          0
  131. #define LOG_SIZE_SMALL          0
  132. #define LOG_BOLD                0
  133. #define LOG_ITALICS             0
  134. #define LOG_UNDERLINE           0
  135. #endif // LOGGING
  136. #endif // EVENTLOGGER_H