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

📄 trace.h

📁 ace开发环境 用来开发网络程序 其运用了设计模式、多平台、C++等多种知识
💻 H
字号:
// $Id: Trace.h 77830 2007-03-28 15:35:18Z wotte $#ifndef TRACE_H#define TRACE_H#include "ace/Log_Msg.h"// Listing 1 code/ch03class Trace{public:  Trace (const ACE_TCHAR *prefix,   const ACE_TCHAR *name,   int line,   const ACE_TCHAR *file)    {      this->prefix_ = prefix;      this->name_   = name;      this->line_   = line;      this->file_   = file;      ACE_Log_Msg *lm = ACE_LOG_MSG;      if (lm->tracing_enabled ()          && lm->trace_active () == 0)        {          lm->trace_active (1);          ACE_DEBUG            ((LM_TRACE,              ACE_TEXT ("%s%*s(%t) calling %s in file `%s'")              ACE_TEXT (" on line %d\n"),              this->prefix_,              Trace::nesting_indent_ * lm->inc (),              ACE_TEXT (""),              this->name_,              this->file_,              this->line_));          lm->trace_active (0);        }    }  void setLine (int line)    {      this->line_ = line;    }  ~Trace (void)    {      ACE_Log_Msg *lm = ACE_LOG_MSG;      if (lm->tracing_enabled ()          && lm->trace_active () == 0)        {          lm->trace_active (1);          ACE_DEBUG            ((LM_TRACE,              ACE_TEXT ("%s%*s(%t) leaving %s in file `%s'")              ACE_TEXT (" on line %d\n"),              this->prefix_,              Trace::nesting_indent_ * lm->dec (),              ACE_TEXT (""),              this->name_,              this->file_,              this->line_));          lm->trace_active (0);        }    }private:  enum { nesting_indent_ = 3 };  const ACE_TCHAR *prefix_;  const ACE_TCHAR *name_;  const ACE_TCHAR *file_;  int line_;};// Listing 1// Listing 2 code/ch03#define TRACE_PREFIX       ACE_TEXT ("TRACE ")#if defined (TRACE)#undef TRACE#endif /* TRACE */#if (ACE_NTRACE == 1)#    define TRACE(X)#    define TRACE_RETURN(V)     return V;#    define TRACE_RETURN_VOID()#else#    define TRACE(X)                           \            Trace ____ (TRACE_PREFIX,          \                        ACE_TEXT (X),          \                        __LINE__,              \                        ACE_TEXT (__FILE__))#    define TRACE_RETURN(V)                    \            do { ____.setLine(__LINE__); return V; } while (0)#    define TRACE_RETURN_VOID()                \            do { ____.setLine(__LINE__); } while (0)#endif// Listing 2//////////////////////////////////////////////////#if defined (__GNUC__) && (__GNUC__ >= 3 || __GNUC_MINOR__ > 95) && \    (!defined (VXWORKS) || !(__GNUC__ == 2 && __GNUC_MINOR__ == 96))// This stuff only works with g++ 2.96 and later...// But not with VxWorks g++ 2.96.// Listing 3 code/ch03#define DEBUG_PREFIX       ACE_TEXT ("DEBUG%I")#define INFO_PREFIX        ACE_TEXT ("INFO%I")#define NOTICE_PREFIX      ACE_TEXT ("NOTICE%I")#define WARNING_PREFIX     ACE_TEXT ("WARNING%I")#define ERROR_PREFIX       ACE_TEXT ("ERROR%I")#define CRITICAL_PREFIX    ACE_TEXT ("CRITICAL%I")#define ALERT_PREFIX       ACE_TEXT ("ALERT%I")#define EMERGENCY_PREFIX   ACE_TEXT ("EMERGENCY%I")#define MY_DEBUG(X)     \        ACE_DEBUG(( LM_DEBUG,  \                    DEBUG_PREFIX \                    X))#define MY_INFO(X)     \        ACE_DEBUG(( LM_INFO,  \                    INFO_PREFIX \                    X))#define MY_NOTICE(X)     \        ACE_DEBUG(( LM_NOTICE,  \                    NOTICE_PREFIX \                    X))#define MY_WARNING(X)     \        ACE_DEBUG(( LM_WARNING,  \                    WARNING_PREFIX \                    X))#define MY_ERROR(X)     \        ACE_DEBUG(( LM_ERROR,  \                    ERROR_PREFIX \                    X))#define MY_CRITICAL(X)     \        ACE_DEBUG(( LM_CRITICAL,  \                    CRITICAL_PREFIX \                    X))#define MY_ALERT(X)     \        ACE_DEBUG(( LM_ALERT,  \                    ALERT_PREFIX \                    X))#define MY_EMERGENCY(X)     \        ACE_DEBUG(( LM_EMERGENCY,  \                    EMERGENCY_PREFIX \                    X))// Listing 3#endif /* __GNUC__ */#endif /* TRACE_H */

⌨️ 快捷键说明

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