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

📄 ecostrace.h

📁 移植到WLIT项目的redboot源代码
💻 H
字号:
//####COPYRIGHTBEGIN####//                                                                          // ----------------------------------------------------------------------------// Copyright (C) 1998, 1999, 2000 Red Hat, Inc.//// This program is part of the eCos host tools.//// This program is free software; you can redistribute it and/or modify it // under the terms of the GNU General Public License as published by the Free // Software Foundation; either version 2 of the License, or (at your option) // any later version.// // This program is distributed in the hope that it will be useful, but WITHOUT // ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or // FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for // more details.// // You should have received a copy of the GNU General Public License along with// this program; if not, write to the Free Software Foundation, Inc., // 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.//// ----------------------------------------------------------------------------//                                                                          //####COPYRIGHTEND####//#####DESCRIPTIONBEGIN####//// Author(s):     sdf// Contributors:  sdf// Date:          1999-04-01// Description:   Standard include file for test infra// Usage:////####DESCRIPTIONEND####//=================================================================// This class handles output of errors, debugging trace and so on.  All its members are static, so it's really a namespace :-).// It handles two output streams - error and output - and allows these to be redirected independently to files etc...// Part of the justification for this (which might be carried out on the command line) involves shortcomings of// SAMBA client, which deals badly with the flushing of file buffers.// The definition of LogFunc, which defines a function (void *,LPCTSTR) to which output is sent, is in eCosStd.//=================================================================#ifndef _ECOSTRACE_H#define _ECOSTRACE_H#include "eCosStd.h"#include "Collections.h"class CeCosTrace {public:	static const String Timestamp();  // Diagnostic output  static void Out(LPCTSTR  psz) { pfnOut(pOutParam,psz); }  static void Err(LPCTSTR  psz) { pfnError(pErrorParam,psz); } // Send to "stderr"   static void TimeStampedErr(LPCTSTR pszFormat,...);  enum TraceLevel {TRACE_LEVEL_ERRORS, TRACE_LEVEL_TRACE, TRACE_LEVEL_VTRACE}; // These are the levels of trace    // Here's how to set and get the current trace value:  static void EnableTracing(TraceLevel n) { nVerbosity=n; }  static TraceLevel TracingEnabled() { return nVerbosity; }  static void SetInteractive(bool b) { bInteractive=b; } // Declare this program to be "interactive" (usually means command-line)  static bool IsInteractive() { return bInteractive; }  static void SetOutput (LogFunc *pFn,void *pParam) { pfnOut=pFn; pOutParam=pParam; }     // Make stdout go to this callback  static void SetError  (LogFunc *pFn,void *pParam) { pfnError=pFn; pErrorParam=pParam; } // Make stderr go to this callback  static bool SetOutput (LPCTSTR pszFilename); // Make stdout go to this file  static bool SetError  (LPCTSTR pszFilename); // Make stderr go to this file  // Some macros...  #ifndef TRACE // because if running under a debugger we might have a better definition (via OutputDebugString) already     // Use this to generate output that will only appear if trace level is at least TRACE_LEVEL_TRACE (turned on by -v)     #define TRACE if(CeCosTrace::TracingEnabled()>=CeCosTrace::TRACE_LEVEL_TRACE) CeCosTrace::TimeStampedErr  #endif  #undef ERROR  #define ERROR CeCosTrace::TimeStampedErr  // Use this to generate output that will only appear if trace level is at least TRACE_LEVEL_VTRACE (turned on by -V)  #define VTRACE if(CeCosTrace::TracingEnabled()>=CeCosTrace::TRACE_LEVEL_VTRACE) CeCosTrace::TimeStampedErr    // Use this to generate output that will only appear if mode is interactive (see above)  #define INTERACTIVE if(CeCosTrace::IsInteractive()||CeCosTrace::TracingEnabled()>=CeCosTrace::TRACE_LEVEL_TRACE) CeCosTrace::TimeStampedErr  // Thus log function can be used to direct output to a FILE* (e.g. stdout) passed as the first argument:  static void CALLBACK StreamLogFunc  (void *, LPCTSTR psz);protected:  // Information we need to know for a stream (error or output)  struct StreamInfo {    Time tLastReopen;    String strFilename;    FILE *f;    StreamInfo(LPCTSTR pszFile,FILE *_f) : tLastReopen(Now()),strFilename(pszFile),f(_f) {}    ~StreamInfo() { fclose(f); }  };    // Here are the two streams  static StreamInfo OutInfo,ErrInfo;  static void CALLBACK StreamInfoFunc (void *, LPCTSTR psz);    static LPCTSTR arpszDow[7];  static TraceLevel nVerbosity;  static bool bInteractive;  static LogFunc *pfnOut;    static void *pOutParam;  static LogFunc *pfnError;  static void *pErrorParam;};#endif

⌨️ 快捷键说明

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