@@ -72,8 +72,8 @@ namespace SimpleWeb {
72
72
server_error_network_authentication_required
73
73
};
74
74
75
- const inline std::vector<std::pair< StatusCode, std::string>> & status_codes () noexcept {
76
- const static std::vector<std::pair< StatusCode, std::string>> status_codes = {
75
+ inline const std::map< StatusCode, std::string> & status_code_strings () {
76
+ static const std::map< StatusCode, std::string> status_code_strings = {
77
77
{StatusCode::unknown, " " },
78
78
{StatusCode::information_continue, " 100 Continue" },
79
79
{StatusCode::information_switching_protocols, " 101 Switching Protocols" },
@@ -136,36 +136,30 @@ namespace SimpleWeb {
136
136
{StatusCode::server_error_loop_detected, " 508 Loop Detected" },
137
137
{StatusCode::server_error_not_extended, " 510 Not Extended" },
138
138
{StatusCode::server_error_network_authentication_required, " 511 Network Authentication Required" }};
139
- return status_codes ;
139
+ return status_code_strings ;
140
140
}
141
141
142
- inline StatusCode status_code (const std::string &status_code_str ) noexcept {
142
+ inline StatusCode status_code (const std::string &status_code_string ) noexcept {
143
143
class StringToStatusCode : public std ::unordered_map<std::string, SimpleWeb::StatusCode> {
144
144
public:
145
145
StringToStatusCode () {
146
- for (auto &status_code : SimpleWeb::status_codes ())
146
+ for (auto &status_code : status_code_strings ())
147
147
emplace (status_code.second , status_code.first );
148
148
}
149
149
};
150
150
static StringToStatusCode string_to_status_code;
151
- auto pos = string_to_status_code.find (status_code_str );
151
+ auto pos = string_to_status_code.find (status_code_string );
152
152
if (pos == string_to_status_code.end ())
153
153
return StatusCode::unknown;
154
154
return pos->second ;
155
155
}
156
156
157
- const inline std::string &status_code (StatusCode status_code_enum) noexcept {
158
- class StatusCodeToString : public std ::map<SimpleWeb::StatusCode, std::string> {
159
- public:
160
- StatusCodeToString () {
161
- for (auto &status_code : SimpleWeb::status_codes ())
162
- emplace (status_code.first , status_code.second );
163
- }
164
- };
165
- static StatusCodeToString status_code_to_string;
166
- auto pos = status_code_to_string.find (status_code_enum);
167
- if (pos == status_code_to_string.end ())
168
- return status_codes ()[0 ].second ;
157
+ inline const std::string &status_code (StatusCode status_code_enum) noexcept {
158
+ auto pos = status_code_strings ().find (status_code_enum);
159
+ if (pos == status_code_strings ().end ()) {
160
+ static std::string empty_string;
161
+ return empty_string;
162
+ }
169
163
return pos->second ;
170
164
}
171
165
} // namespace SimpleWeb
0 commit comments