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

📄 sc_report_handler.h

📁 system C源码 一种替代verilog的语言
💻 H
字号:
/*****************************************************************************  The following code is derived, directly or indirectly, from the SystemC  source code Copyright (c) 1996-2006 by all Contributors.  All Rights reserved.  The contents of this file are subject to the restrictions and limitations  set forth in the SystemC Open Source License Version 2.4 (the "License");  You may not use this file except in compliance with such restrictions and  limitations. You may obtain instructions on how to receive a copy of the  License at http://www.systemc.org/. Software distributed by Contributors  under the License is distributed on an "AS IS" basis, WITHOUT WARRANTY OF  ANY KIND, either express or implied. See the License for the specific  language governing rights and limitations under the License. *****************************************************************************//*****************************************************************************  sc_report_handler.h -   Original Author: Alex Riesen, Synopsys, Inc.  see also sc_report.h *****************************************************************************//*****************************************************************************  MODIFICATION LOG - modifiers, enter your name, affiliation, date and  changes you are making here.      Name, Affiliation, Date:  Description of Modification: *****************************************************************************/// $Log: sc_report_handler.h,v $// Revision 1.1.1.1  2006/12/15 20:31:39  acg// SystemC 2.2//// Revision 1.3  2006/01/13 18:53:11  acg// Andy Goodrich: Added $Log command so that CVS comments are reproduced in// the source.//#ifndef SC_REPORT_HANDLER_H#define SC_REPORT_HANDLER_Hnamespace sc_core {// ----------------------------------------------------------------------------//  STRUCT : sc_msg_def////  Exception message definition structure// ----------------------------------------------------------------------------struct sc_msg_def{    const char*  msg_type;    sc_actions   actions;    sc_actions   sev_actions[SC_MAX_SEVERITY];    unsigned     limit;    unsigned     sev_limit[SC_MAX_SEVERITY];    unsigned     limit_mask; // 0 - limit, 1..4 - sev_limit    unsigned     call_count;    unsigned     sev_call_count[SC_MAX_SEVERITY];    char*        msg_type_data;    int          id; // backward compatibility with 2.0+};typedef void (* sc_report_handler_proc)(const sc_report&, const sc_actions &);class sc_report;extern bool sc_report_close_default_log();class sc_report_handler{public:    static void report(sc_severity,		       const char* msg_type,		       const char* msg,		       const char* file,		       int line);    static sc_actions set_actions(sc_severity,				  sc_actions = SC_UNSPECIFIED);    static sc_actions set_actions(const char * msg_type,				  sc_actions = SC_UNSPECIFIED);    static sc_actions set_actions(const char * msg_type,				  sc_severity,				  sc_actions = SC_UNSPECIFIED);    static int stop_after(sc_severity, int limit = -1);    static int stop_after(const char* msg_type, int limit = -1);    static int stop_after(const char* msg_type, sc_severity, int limit = -1);    static sc_actions suppress(sc_actions);    static sc_actions suppress();    static sc_actions force(sc_actions);    static sc_actions force();    static int get_count(sc_severity severity_);    static int get_count(const char* msg_type_);    static int get_count(const char* msg_type_,         sc_severity severity_);    static void initialize(); // just reset counters    static void release(); // initialize() needed for reports after it    static void set_handler(sc_report_handler_proc);    // use set_handler(&sc_report_handler::default_handler); to restore    static void default_handler(const sc_report&, const sc_actions&);    static sc_actions get_new_action_id();    static sc_report* get_cached_report();    static void clear_cached_report();    // if filename is NULL, the previous log file name will be removed.    // The provider of a report_handler supposed to handle this.    // Return false if filename is not NULL and filename is already set.    static bool set_log_file_name(const char* filename);    static const char* get_log_file_name();public: // private, actually    struct msg_def_items    {	sc_msg_def*     md;        // have to point to sc_msg_def-s	int             count;     // set to number of items in md[]	bool            allocated; // used internally, previous value ignored	msg_def_items*  next;      // used internally, previous value ignored    };    static void add_static_msg_types(msg_def_items *);    static sc_msg_def* add_msg_type(const char * msg_type);protected:    static void cache_report(const sc_report&);    static sc_actions execute(sc_msg_def*, sc_severity);    static sc_actions   suppress_mask;    static sc_actions   force_mask;    static sc_actions   sev_actions[SC_MAX_SEVERITY];    static unsigned     sev_limit[SC_MAX_SEVERITY];    static unsigned     sev_call_count[SC_MAX_SEVERITY];    static sc_report*   last_global_report;    static sc_actions   available_actions;    static char*        log_file_name;    static msg_def_items*  messages;    static msg_def_items   msg_terminator;    static sc_report_handler_proc  handler;    static sc_msg_def* mdlookup(const char* msg_type);private: // backward compatibility with 2.0+    friend class sc_report;    static sc_msg_def* mdlookup(int id);public:    static void report(sc_severity,		       int         id,		       const char* add_msg,		       const char* file,		       int         line);};} // namespace sc_core#endif// Taf!

⌨️ 快捷键说明

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