@@ -72,8 +72,8 @@ namespace SimpleWeb {
7272 server_error_network_authentication_required
7373 };
7474
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 = {
7777 {StatusCode::unknown, " " },
7878 {StatusCode::information_continue, " 100 Continue" },
7979 {StatusCode::information_switching_protocols, " 101 Switching Protocols" },
@@ -136,36 +136,30 @@ namespace SimpleWeb {
136136 {StatusCode::server_error_loop_detected, " 508 Loop Detected" },
137137 {StatusCode::server_error_not_extended, " 510 Not Extended" },
138138 {StatusCode::server_error_network_authentication_required, " 511 Network Authentication Required" }};
139- return status_codes ;
139+ return status_code_strings ;
140140 }
141141
142- inline StatusCode status_code (const std::string &status_code_str ) noexcept {
142+ inline StatusCode status_code (const std::string &status_code_string ) noexcept {
143143 class StringToStatusCode : public std ::unordered_map<std::string, SimpleWeb::StatusCode> {
144144 public:
145145 StringToStatusCode () {
146- for (auto &status_code : SimpleWeb::status_codes ())
146+ for (auto &status_code : status_code_strings ())
147147 emplace (status_code.second , status_code.first );
148148 }
149149 };
150150 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 );
152152 if (pos == string_to_status_code.end ())
153153 return StatusCode::unknown;
154154 return pos->second ;
155155 }
156156
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+ }
169163 return pos->second ;
170164 }
171165} // namespace SimpleWeb
0 commit comments