The Gaudi Framework  v29r0 (ff2e7097)
IssueSeverity.h
Go to the documentation of this file.
1 #ifndef GAUDIKERNEL_ISSUESEVERITY_H
2 #define GAUDIKERNEL_ISSUESEVERITY_H 1
3 
4 class StatusCode;
5 
6 #include <iostream>
7 #include <map>
8 #include <string>
9 
10 #include "GaudiKernel/Kernel.h"
11 
12 #define ISSUE( x, y ) IssueSeverity( x, __LINE__, __FILE__, y )
13 #define STATUSCODE( z, x, y ) StatusCode( z, ISSUE( x, y ) )
14 
15 class IIssueLogger;
16 
17 #ifdef _WIN32
18 #ifdef ERROR
19 #undef ERROR
20 #endif
21 #endif
22 
24 {
25 
26 public:
27  enum Level {
28  NIL = 0,
41  };
42 
46 
47  IssueSeverity( const IssueSeverity& ) = delete;
48  IssueSeverity& operator=( const IssueSeverity& ) = delete;
49  IssueSeverity( IssueSeverity&& ) noexcept;
50  IssueSeverity& operator=( IssueSeverity&& ) noexcept;
51 
52  ~IssueSeverity();
53 
54  void setLevel( const IssueSeverity::Level& l ) { m_level = l; }
55  void setMsg( std::string m ) { m_msg = std::move( m ); }
56 
57  IssueSeverity::Level getLevel() const { return m_level; }
58  std::string getMsg() const { return m_msg; }
59  std::string getOrigin() const;
60 
61  void report();
62 
63  friend inline std::ostream& operator<<( std::ostream&, const IssueSeverity& );
64 
65 private:
68 
69  int m_line = 0;
71  bool m_reported = true;
72 
73  static bool m_init;
75 };
76 
78  : m_file( std::move( file ) ), m_msg( std::move( msg ) ), m_line( line ), m_level( level ), m_reported( false )
79 {
80  report();
81 }
82 
84  : IssueSeverity( std::move( level ), 0, "??", std::move( msg ) )
85 {
86 }
87 
89 {
90  m_file = std::move( rhs.m_file );
91  m_msg = std::move( rhs.m_msg );
92  m_line = rhs.m_line;
93  m_level = rhs.m_level;
94  m_reported = std::exchange( rhs.m_reported, true );
95 }
96 
98 {
99  m_file = std::move( rhs.m_file );
100  m_msg = std::move( rhs.m_msg );
101  m_line = rhs.m_line;
102  m_level = rhs.m_level;
103  m_reported = std::exchange( rhs.m_reported, true );
104  return *this;
105 }
106 
108 {
109  os << "ISSUE: level " << rhs.getLevel() << " from: " << rhs.getOrigin() << " msg: " << rhs.getMsg();
110  return os;
111 }
112 
113 #endif
friend std::ostream & operator<<(std::ostream &, const IssueSeverity &)
static bool m_init
Definition: IssueSeverity.h:73
static IIssueLogger * m_ers
Definition: IssueSeverity.h:74
std::string getOrigin() const
void setLevel(const IssueSeverity::Level &l)
Definition: IssueSeverity.h:54
STL namespace.
std::string m_file
Definition: IssueSeverity.h:66
PropertyMgr & operator=(const PropertyMgr &)=delete
STL class.
std::ostream & operator<<(std::ostream &os, const IssueSeverity &rhs)
This class is used for returning status codes from appropriate routines.
Definition: StatusCode.h:28
constexpr double m
Definition: SystemOfUnits.h:94
std::string m_msg
Definition: IssueSeverity.h:67
IssueSeverity::Level m_level
Definition: IssueSeverity.h:70
T move(T...args)
dictionary l
Definition: gaudirun.py:440
IssueSeverity & operator=(const IssueSeverity &)=delete
void setMsg(std::string m)
Definition: IssueSeverity.h:55
#define GAUDI_API
Definition: Kernel.h:110
STL class.
IssueSeverity::Level getLevel() const
Definition: IssueSeverity.h:57
std::string getMsg() const
Definition: IssueSeverity.h:58