⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 simplelogger.cpp

📁 Open VXI. This is a open source.
💻 CPP
字号:
/****************License************************************************ * * Copyright 2000-2001.  SpeechWorks International, Inc.     * * Use of this software is subject to notices and obligations set forth * in the SpeechWorks Public License - Software Version 1.1 which is * included with this software. * * SpeechWorks is a registered trademark, and SpeechWorks Here, * DialogModules and the SpeechWorks logo are trademarks of SpeechWorks * International, Inc. in the United States and other countries. * *********************************************************************** * * Error message logging to files. * ***********************************************************************/#include "SimpleLogger.hpp"#include "VXIlog.h"#include <sstream>static unsigned int MESSAGE_BASE;static const VXIchar * const MODULE_NAME  = COMPANY_DOMAIN L".vxi";// ------*---------*---------*---------*---------*---------*---------*---------static const VXIchar * const TAG_ENCODING  = L"encoding";static const VXIchar * const TAG_EXCEPTION = L"exception";static const VXIchar * const TAG_MESSAGE   = L"message";static const VXIchar * const TAG_URI       = L"uri";static const VXIchar * const TAG_LABEL     = L"label";static const VXIchar * const TAG_EXPR      = L"expr";static const VXIchar * const TAG_CONTENT   = L"content";inline const VXIchar * const GetInfoTagText(SimpleLogger::InfoTag t){  switch (t) {  case SimpleLogger::ENCODING:    return TAG_ENCODING;  case SimpleLogger::EXCEPTION:   return TAG_EXCEPTION;  case SimpleLogger::MESSAGE:     return TAG_MESSAGE;  case SimpleLogger::URI:         return TAG_URI;  default:                        return TAG_MESSAGE;  }}inline const VXIchar * const GetEventTagText(SimpleLogger::EventTag t){  switch (t) {  case SimpleLogger::LABEL:       return TAG_LABEL;  case SimpleLogger::EXPR:        return TAG_EXPR;  case SimpleLogger::CONTENT:     return TAG_CONTENT;  default:                        return TAG_MESSAGE;  }}// ------*---------*---------*---------*---------*---------*---------*---------class SimpleLoggerImpl : public SimpleLogger {public:  SimpleLoggerImpl(VXIlogInterface * l) : log(l) { }  ~SimpleLoggerImpl() { }  // Diagnostic...  typedef unsigned int TAGID;  virtual bool IsLogging(TAGID tagID) const  { return (log->DiagnosticIsEnabled(log, MESSAGE_BASE + tagID) == TRUE); }  virtual std::basic_ostream<wchar_t> & StartDiagnostic(TAGID tagID) const  { id = tagID;    buffer.str(L"");    return buffer; }  virtual void EndDiagnostic() const  { if (buffer.str().empty()) return;    log->Diagnostic(log, MESSAGE_BASE + id, NULL, buffer.str().c_str()); }  virtual void LogDiagnostic(TAGID tagID, const wchar_t * text) const  { log->Diagnostic(log, MESSAGE_BASE + tagID, NULL, text); }  // Error  virtual void LogError(int errorNum,                        SimpleLogger::InfoTag i1, const wchar_t * txt1,                        SimpleLogger::InfoTag i2, const wchar_t * txt2) const  { log->Error(log, MODULE_NAME, errorNum, L"%s%s%s%s",               GetInfoTagText(i1), txt1, GetInfoTagText(i2), txt2); }  virtual void LogError(int errorNum,                        SimpleLogger::InfoTag i, const wchar_t * txt) const  { log->Error(log, MODULE_NAME, errorNum, L"%s%s", GetInfoTagText(i), txt); }  virtual void LogError(int errorNum) const  { log->Error(log, MODULE_NAME, errorNum, L""); }  // Event  virtual void LogEvent(int eventNum,                        SimpleLogger::EventTag i1, const wchar_t * txt1,                        SimpleLogger::EventTag i2, const wchar_t * txt2) const  { log->Event(log, eventNum, L"%s%s%s%s",               GetEventTagText(i1), txt1, GetEventTagText(i2), txt2); }  virtual void LogEvent(int eventNum,                        SimpleLogger::EventTag i, const wchar_t * txt) const  { log->Event(log, eventNum, L"%s%s", GetEventTagText(i), txt); }  virtual void LogEvent(int eventNum) const  { log->Event(log, eventNum, L""); }private:  VXIlogInterface * log;  mutable TAGID id;  mutable std::basic_ostringstream<wchar_t> buffer;};SimpleLogger * SimpleLogger::CreateResource(VXIlogInterface * l){  return new SimpleLoggerImpl(l);}void SimpleLogger::DestroyResource(SimpleLogger * & log){  if (log == NULL) return;  delete log;  log = NULL;}void SimpleLogger::SetMessageBase(unsigned int base){  MESSAGE_BASE = base;}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -