1/* 2 * Copyright 2018 Google, Inc. 3 * 4 * Redistribution and use in source and binary forms, with or without 5 * modification, are permitted provided that the following conditions are 6 * met: redistributions of source code must retain the above copyright 7 * notice, this list of conditions and the following disclaimer; 8 * redistributions in binary form must reproduce the above copyright 9 * notice, this list of conditions and the following disclaimer in the 10 * documentation and/or other materials provided with the distribution; 11 * neither the name of the copyright holders nor the names of its 12 * contributors may be used to endorse or promote products derived from 13 * this software without specific prior written permission. 14 * 15 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 16 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 17 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 18 * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 19 * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 20 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 21 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 22 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 23 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 24 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 25 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 26 * 27 * Authors: Gabe Black 28 */ 29 30#ifndef __SYSTEMC_EXT_UTIL_SC_REPORT_HH__ 31#define __SYSTEMC_EXT_UTIL_SC_REPORT_HH__ 32 33#include <exception>
| 1/* 2 * Copyright 2018 Google, Inc. 3 * 4 * Redistribution and use in source and binary forms, with or without 5 * modification, are permitted provided that the following conditions are 6 * met: redistributions of source code must retain the above copyright 7 * notice, this list of conditions and the following disclaimer; 8 * redistributions in binary form must reproduce the above copyright 9 * notice, this list of conditions and the following disclaimer in the 10 * documentation and/or other materials provided with the distribution; 11 * neither the name of the copyright holders nor the names of its 12 * contributors may be used to endorse or promote products derived from 13 * this software without specific prior written permission. 14 * 15 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 16 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 17 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 18 * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 19 * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 20 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 21 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 22 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 23 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 24 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 25 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 26 * 27 * Authors: Gabe Black 28 */ 29 30#ifndef __SYSTEMC_EXT_UTIL_SC_REPORT_HH__ 31#define __SYSTEMC_EXT_UTIL_SC_REPORT_HH__ 32 33#include <exception>
|
| 34#include <string>
|
34
| 35
|
| 36#include "systemc/ext/core/sc_time.hh" 37
|
35namespace sc_core 36{ 37
| 38namespace sc_core 39{ 40
|
38class sc_time; 39
| |
40enum sc_severity 41{ 42 SC_INFO = 0, 43 SC_WARNING, 44 SC_ERROR, 45 SC_FATAL, 46 SC_MAX_SEVERITY 47}; 48 49enum sc_verbosity 50{ 51 SC_NONE = 0, 52 SC_LOW = 100, 53 SC_MEDIUM = 200, 54 SC_HIGH = 300, 55 SC_FULL = 400, 56 SC_DEBUG = 500 57}; 58
| 41enum sc_severity 42{ 43 SC_INFO = 0, 44 SC_WARNING, 45 SC_ERROR, 46 SC_FATAL, 47 SC_MAX_SEVERITY 48}; 49 50enum sc_verbosity 51{ 52 SC_NONE = 0, 53 SC_LOW = 100, 54 SC_MEDIUM = 200, 55 SC_HIGH = 300, 56 SC_FULL = 400, 57 SC_DEBUG = 500 58}; 59
|
| 60class sc_report_handler; 61
|
59class sc_report : public std::exception 60{ 61 public: 62 sc_report(const sc_report &); 63 sc_report &operator = (const sc_report &); 64 virtual ~sc_report() throw(); 65
| 62class sc_report : public std::exception 63{ 64 public: 65 sc_report(const sc_report &); 66 sc_report &operator = (const sc_report &); 67 virtual ~sc_report() throw(); 68
|
66 sc_severity get_severity() const; 67 const char *get_msg_type() const; 68 const char *get_msg() const; 69 int get_verbosity() const; 70 const char *get_file_name() const; 71 int get_line_number() const;
| 69 sc_severity get_severity() const { return _severity; } 70 const char *get_msg_type() const { return _msgType; } 71 const char *get_msg() const { return _msg; } 72 int get_verbosity() const { return _verbosity; } 73 const char *get_file_name() const { return _fileName; } 74 int get_line_number() const { return _lineNumber; }
|
72
| 75
|
73 const sc_time &get_time() const; 74 const char *get_process_name() const;
| 76 const sc_time &get_time() const { return _time; } 77 const char *get_process_name() const { return _processName; }
|
75 76 virtual const char *what() const throw(); 77 78 // Deprecated 79 static const char *get_message(int id); 80 static bool is_suppressed(int id); 81 static void make_warnings_errors(bool); 82 static void register_id(int id, const char *msg); 83 static void suppress_id(int id, bool); // Only for info or warning. 84 static void suppress_infos(bool); 85 static void suppress_warnings(bool);
| 78 79 virtual const char *what() const throw(); 80 81 // Deprecated 82 static const char *get_message(int id); 83 static bool is_suppressed(int id); 84 static void make_warnings_errors(bool); 85 static void register_id(int id, const char *msg); 86 static void suppress_id(int id, bool); // Only for info or warning. 87 static void suppress_infos(bool); 88 static void suppress_warnings(bool);
|
86 int get_id() const;
| 89 int get_id() const { return _id; } 90 91 private: 92 friend class sc_report_handler; 93 94 sc_report(sc_severity _severity, 95 const char *_msgType, 96 const char *_msg, 97 int _verbosity, 98 const char *_fileName, 99 int _lineNumber, 100 sc_time _time, 101 const char *_processName, 102 int _id); 103 104 sc_severity _severity; 105 const char *_msgType; 106 const char *_msg; 107 int _verbosity; 108 const char *_fileName; 109 int _lineNumber; 110 sc_time _time; 111 const char *_processName; 112 int _id; 113 std::string _what;
|
87}; 88 89// A non-standard function the Accellera datatypes rely on. 90[[noreturn]] void sc_abort(); 91 92} // namespace sc_core 93 94#endif //__SYSTEMC_EXT_UTIL_SC_REPORT_HH__
| 114}; 115 116// A non-standard function the Accellera datatypes rely on. 117[[noreturn]] void sc_abort(); 118 119} // namespace sc_core 120 121#endif //__SYSTEMC_EXT_UTIL_SC_REPORT_HH__
|