File indexing completed on 2024-09-07 04:36:24
0001 #ifndef MessageLogger_ELseverityLevel_h
0002 #define MessageLogger_ELseverityLevel_h
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017 #include <string>
0018 #include <string_view>
0019
0020 namespace edm {
0021 namespace messagelogger {
0022
0023
0024
0025
0026 class ELseverityLevel {
0027 public:
0028
0029
0030
0031 enum ELsev_ {
0032 ELsev_noValueAssigned = 0,
0033 ELsev_zeroSeverity,
0034 ELsev_success,
0035 ELsev_info,
0036 ELsev_fwkInfo,
0037 ELsev_warning,
0038 ELsev_error,
0039 ELsev_unspecified,
0040 ELsev_severe,
0041 ELsev_highestSeverity,
0042
0043 nLevels
0044 };
0045
0046
0047
0048 constexpr ELseverityLevel(ELsev_ lev = ELsev_unspecified) noexcept : myLevel(lev) {}
0049 ELseverityLevel(std::string_view str);
0050
0051
0052 ~ELseverityLevel() noexcept = default;
0053
0054
0055
0056 [[nodiscard]] constexpr int cmp(ELseverityLevel const& e) const noexcept { return myLevel - e.myLevel; }
0057
0058
0059
0060 constexpr int getLevel() const noexcept { return myLevel; }
0061 const std::string& getSymbol() const;
0062 const std::string& getName() const;
0063 const std::string& getInputStr() const;
0064 const std::string& getVarName() const;
0065
0066
0067
0068 friend std::ostream& operator<<(std::ostream& os, const ELseverityLevel& sev);
0069
0070 private:
0071
0072
0073 int myLevel;
0074
0075 };
0076
0077
0078
0079
0080
0081
0082 constexpr const ELseverityLevel ELzeroSeverity{ELseverityLevel::ELsev_zeroSeverity};
0083
0084 constexpr const ELseverityLevel ELdebug{ELseverityLevel::ELsev_success};
0085
0086 constexpr const ELseverityLevel ELinfo{ELseverityLevel::ELsev_info};
0087
0088 constexpr const ELseverityLevel ELfwkInfo{ELseverityLevel::ELsev_fwkInfo};
0089
0090 constexpr const ELseverityLevel ELwarning{ELseverityLevel::ELsev_warning};
0091
0092 constexpr const ELseverityLevel ELerror{ELseverityLevel::ELsev_error};
0093
0094 constexpr const ELseverityLevel ELunspecified{ELseverityLevel::ELsev_unspecified};
0095
0096 constexpr const ELseverityLevel ELsevere{ELseverityLevel::ELsev_severe};
0097
0098 constexpr const ELseverityLevel ELhighestSeverity{ELseverityLevel::ELsev_highestSeverity};
0099
0100
0101
0102
0103
0104 constexpr inline bool operator==(ELseverityLevel const& e1, ELseverityLevel const& e2) noexcept {
0105 return e1.cmp(e2) == 0;
0106 }
0107 constexpr inline bool operator!=(ELseverityLevel const& e1, ELseverityLevel const& e2) noexcept {
0108 return e1.cmp(e2) != 0;
0109 }
0110 constexpr inline bool operator<(ELseverityLevel const& e1, ELseverityLevel const& e2) noexcept {
0111 return e1.cmp(e2) < 0;
0112 }
0113 constexpr inline bool operator<=(ELseverityLevel const& e1, ELseverityLevel const& e2) noexcept {
0114 return e1.cmp(e2) <= 0;
0115 }
0116 constexpr inline bool operator>(ELseverityLevel const& e1, ELseverityLevel const& e2) noexcept {
0117 return e1.cmp(e2) > 0;
0118 }
0119 constexpr inline bool operator>=(ELseverityLevel const& e1, ELseverityLevel const& e2) noexcept {
0120 return e1.cmp(e2) >= 0;
0121 }
0122
0123
0124 }
0125 }
0126
0127 #endif