LArSoft  v07_13_02
Liquid Argon Software toolkit - http://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 <string>
6 
7 namespace mf {
8 
9  class ELseverityLevel;
10 
12 
13  template <ELslGen ELgen>
14  struct ELslProxy {
15 
16  operator ELseverityLevel() const;
17 
18  int getLevel() const;
19  std::string getSymbol() const;
20  std::string getName() const;
21  std::string getInputStr() const;
22  std::string getVarName() const;
23  };
24 
26 
27  public:
28  enum ELsev_ {
29  ELsev_noValueAssigned, // 0, not for messages
30  ELsev_zeroSeverity, // 1, threshold use only, not for messages
32  ELsev_info, // 3
35  ELsev_unspecified, // 6, not for messages
37  ELsev_highestSeverity, // 8, for threshold use only, not for messages
38  nLevels // 9, not for messages
39  };
40 
41  constexpr ELseverityLevel(ELsev_ lev = ELsev_unspecified);
42 
43  // str may match getSymbol, getName, getInputStr, or getVarName
44  // see accessors
45  ELseverityLevel(std::string const& str);
46 
47  int cmp(ELseverityLevel e) const;
48 
49  int getLevel() const;
50  std::string getSymbol() const; // example: "-e"
51  std::string getName() const; // example: "Error"
52  std::string getInputStr() const; // example: "ERROR"
53  std::string getVarName() const; // example: "ELerror"
54 
55  friend std::ostream& operator<<(std::ostream& os,
56  ELseverityLevel const sev);
57 
58  private:
59  int myLevel;
60  };
61 
62  inline constexpr ELseverityLevel::ELseverityLevel(ELsev_ const level)
63  : myLevel{level}
64  {}
65 
67  {
69  }
70 
71  inline ELseverityLevel constexpr ELsuccessGen()
72  {
74  }
75 
76  inline ELseverityLevel constexpr ELdebugGen()
77  {
79  }
80 
81  inline ELseverityLevel constexpr ELinfoGen()
82  {
84  }
85 
86  inline ELseverityLevel constexpr ELwarningGen()
87  {
89  }
90 
91  inline ELseverityLevel constexpr ELerrorGen()
92  {
94  }
95 
96  inline ELseverityLevel constexpr ELunspecifiedGen()
97  {
99  }
100 
101  inline ELseverityLevel constexpr ELsevereGen()
102  {
104  }
105 
107  {
109  }
110 
120 
121  extern bool operator==(ELseverityLevel e1, ELseverityLevel e2);
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 
128  template <ELslGen ELgen>
130  {
131  return ELgen();
132  }
133 
134  template <ELslGen ELgen>
135  inline int
137  {
138  return ELgen().getLevel();
139  }
140 
141  template <ELslGen ELgen>
142  inline std::string
144  {
145  return ELgen().getSymbol();
146  }
147 
148  template <ELslGen ELgen>
149  inline std::string
151  {
152  return ELgen().getName();
153  }
154 
155  template <ELslGen ELgen>
156  inline std::string
158  {
159  return ELgen().getInputStr();
160  }
161 
162  template <ELslGen ELgen>
163  inline std::string
165  {
166  return ELgen().getVarName();
167  }
168 
169  inline bool
171  {
172  return e1.cmp(e2) == 0;
173  }
174 
175  inline bool
177  {
178  return e1.cmp(e2) != 0;
179  }
180 
181  inline bool
183  {
184  return e1.cmp(e2) < 0;
185  }
186 
187  inline bool
189  {
190  return e1.cmp(e2) <= 0;
191  }
192 
193  inline bool
195  {
196  return e1.cmp(e2) > 0;
197  }
198 
199  inline bool
201  {
202  return e1.cmp(e2) >= 0;
203  }
204 
205 } // namespace mf
206 
207 #endif /* messagefacility_Utilities_ELseverityLevel_h */
208 
209 // Local variables:
210 // mode: c++
211 // 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:34
ELslProxy< ELunspecifiedGen > constexpr ELunspecified
ELslProxy< ELsevereGen > constexpr ELsevere
bool operator>(ELseverityLevel e1, ELseverityLevel e2)
int cmp(ELseverityLevel e) const