LArSoft  v09_90_00
Liquid Argon Software toolkit - https://larsoft.org/
ELseverityLevel.h
Go to the documentation of this file.
1 #ifndef messagefacility_Utilities_ELseverityLevel_h
2 #define messagefacility_Utilities_ELseverityLevel_h
3 // vim: set sw=2 expandtab :
4 
5 #include <iosfwd>
6 #include <string>
7 
8 namespace mf {
9 
10  class ELseverityLevel;
11 
13 
14  template <ELslGen ELgen>
15  struct ELslProxy {
16 
17  operator ELseverityLevel() const;
18 
19  int getLevel() const;
20  std::string getSymbol() const;
21  std::string getName() const;
22  std::string getInputStr() const;
23  std::string getVarName() const;
24  };
25 
27 
28  public:
29  enum ELsev_ {
30  ELsev_noValueAssigned, // 0, not for messages
31  ELsev_zeroSeverity, // 1, threshold use only, not for messages
33  ELsev_info, // 3
36  ELsev_unspecified, // 6, not for messages
38  ELsev_highestSeverity, // 8, for threshold use only, not for messages
39  nLevels // 9, not for messages
40  };
41 
42  constexpr ELseverityLevel(ELsev_ lev = ELsev_unspecified);
43 
44  // str may match getSymbol, getName, getInputStr, or getVarName
45  // see accessors
46  ELseverityLevel(std::string const& str);
47 
48  int cmp(ELseverityLevel e) const;
49 
50  int getLevel() const;
51  std::string getSymbol() const; // example: "-e"
52  std::string getName() const; // example: "Error"
53  std::string getInputStr() const; // example: "ERROR"
54  std::string getVarName() const; // example: "ELerror"
55 
56  friend std::ostream& operator<<(std::ostream& os,
57  ELseverityLevel const sev);
58 
59  private:
60  int myLevel;
61  };
62 
63  inline constexpr ELseverityLevel::ELseverityLevel(ELsev_ const level)
64  : myLevel{level}
65  {}
66 
68  {
70  }
71 
72  inline ELseverityLevel constexpr ELsuccessGen()
73  {
75  }
76 
77  inline ELseverityLevel constexpr ELdebugGen()
78  {
80  }
81 
82  inline ELseverityLevel constexpr ELinfoGen()
83  {
85  }
86 
87  inline ELseverityLevel constexpr ELwarningGen()
88  {
90  }
91 
92  inline ELseverityLevel constexpr ELerrorGen()
93  {
95  }
96 
97  inline ELseverityLevel constexpr ELunspecifiedGen()
98  {
100  }
101 
102  inline ELseverityLevel constexpr ELsevereGen()
103  {
105  }
106 
108  {
110  }
111 
121 
122  extern bool operator==(ELseverityLevel e1, ELseverityLevel e2);
123  extern bool operator!=(ELseverityLevel e1, ELseverityLevel e2);
124  extern bool operator<(ELseverityLevel e1, ELseverityLevel e2);
125  extern bool operator<=(ELseverityLevel e1, ELseverityLevel e2);
126  extern bool operator>(ELseverityLevel e1, ELseverityLevel e2);
127  extern bool operator>=(ELseverityLevel e1, ELseverityLevel e2);
128 
129  template <ELslGen ELgen>
131  {
132  return ELgen();
133  }
134 
135  template <ELslGen ELgen>
136  inline int
138  {
139  return ELgen().getLevel();
140  }
141 
142  template <ELslGen ELgen>
143  inline std::string
145  {
146  return ELgen().getSymbol();
147  }
148 
149  template <ELslGen ELgen>
150  inline std::string
152  {
153  return ELgen().getName();
154  }
155 
156  template <ELslGen ELgen>
157  inline std::string
159  {
160  return ELgen().getInputStr();
161  }
162 
163  template <ELslGen ELgen>
164  inline std::string
166  {
167  return ELgen().getVarName();
168  }
169 
170  inline bool
172  {
173  return e1.cmp(e2) == 0;
174  }
175 
176  inline bool
178  {
179  return e1.cmp(e2) != 0;
180  }
181 
182  inline bool
184  {
185  return e1.cmp(e2) < 0;
186  }
187 
188  inline bool
190  {
191  return e1.cmp(e2) <= 0;
192  }
193 
194  inline bool
196  {
197  return e1.cmp(e2) > 0;
198  }
199 
200  inline bool
202  {
203  return e1.cmp(e2) >= 0;
204  }
205 
206 } // namespace mf
207 
208 #endif /* messagefacility_Utilities_ELseverityLevel_h */
209 
210 // Local variables:
211 // mode: c++
212 // End:
constexpr ELseverityLevel(ELsev_ lev=ELsev_unspecified)
ELslProxy< ELinfoGen > constexpr ELinfo
std::string getSymbol() const
ELseverityLevel constexpr ELerrorGen()
ELseverityLevel constexpr ELinfoGen()
ELseverityLevel constexpr ELsevereGen()
ELseverityLevel( ELslGen)
bool operator>=(ELseverityLevel e1, ELseverityLevel e2)
ELseverityLevel constexpr ELdebugGen()
ELslProxy< ELhighestSeverityGen > constexpr ELhighestSeverity
bool operator<=(ELseverityLevel e1, ELseverityLevel e2)
ELslProxy< ELerrorGen > constexpr ELerror
ELslProxy< ELzeroSeverityGen > constexpr ELzeroSeverity
ELslProxy< ELwarningGen > constexpr ELwarning
std::string getVarName() const
bool operator!=(ELseverityLevel e1, ELseverityLevel e2)
ELslProxy< ELsuccessGen > constexpr ELsuccess
ELseverityLevel constexpr ELsuccessGen()
std::string getName() const
ELseverityLevel constexpr ELunspecifiedGen()
ELslProxy< ELdebugGen > constexpr ELdebug
bool operator==(ELseverityLevel e1, ELseverityLevel e2)
ostream & operator<<(ostream &os, ELseverityLevel const sev)
ELseverityLevel constexpr ELhighestSeverityGen()
bool operator<(ELseverityLevel e1, ELseverityLevel e2)
int getLevel() const
ELseverityLevel constexpr ELwarningGen()
ELseverityLevel constexpr ELzeroSeverityGen()
std::string getInputStr() const
Float_t e
Definition: plot.C:35
ELslProxy< ELunspecifiedGen > constexpr ELunspecified
ELslProxy< ELsevereGen > constexpr ELsevere
bool operator>(ELseverityLevel e1, ELseverityLevel e2)
int cmp(ELseverityLevel e) const