@@ -48,7 +48,7 @@ result_type parse_url_impl(std::string_view user_input,
4848 if (!url.is_valid ) {
4949 return url;
5050 }
51- if constexpr (result_type_is_ada_url_aggregator) {
51+ if constexpr (result_type_is_ada_url_aggregator && store_values ) {
5252 // Most of the time, we just need user_input.size().
5353 // In some instances, we may need a bit more.
5454 // /////////////////////////
@@ -65,9 +65,6 @@ result_type parse_url_impl(std::string_view user_input,
6565 helpers::leading_zeroes (uint32_t (1 | user_input.size ()))) +
6666 1 ;
6767 url.reserve (reserve_capacity);
68- //
69- //
70- //
7168 }
7269 std::string tmp_buffer;
7370 std::string_view internal_input;
@@ -290,32 +287,36 @@ result_type parse_url_impl(std::string_view user_input,
290287 password_token_seen =
291288 password_token_location != std::string_view::npos;
292289
293- if (!password_token_seen) {
294- if constexpr (result_type_is_ada_url) {
295- url.username += unicode::percent_encode (
296- authority_view, character_sets::USERINFO_PERCENT_ENCODE);
297- } else {
298- url.append_base_username (unicode::percent_encode (
299- authority_view, character_sets::USERINFO_PERCENT_ENCODE));
300- }
301- } else {
302- if constexpr (result_type_is_ada_url) {
303- url.username += unicode::percent_encode (
304- authority_view.substr (0 , password_token_location),
305- character_sets::USERINFO_PERCENT_ENCODE);
306- url.password += unicode::percent_encode (
307- authority_view.substr (password_token_location + 1 ),
308- character_sets::USERINFO_PERCENT_ENCODE);
290+ if constexpr (store_values) {
291+ if (!password_token_seen) {
292+ if constexpr (result_type_is_ada_url) {
293+ url.username += unicode::percent_encode (
294+ authority_view,
295+ character_sets::USERINFO_PERCENT_ENCODE);
296+ } else {
297+ url.append_base_username (unicode::percent_encode (
298+ authority_view,
299+ character_sets::USERINFO_PERCENT_ENCODE));
300+ }
309301 } else {
310- url.append_base_username (unicode::percent_encode (
311- authority_view.substr (0 , password_token_location),
312- character_sets::USERINFO_PERCENT_ENCODE));
313- url.append_base_password (unicode::percent_encode (
314- authority_view.substr (password_token_location + 1 ),
315- character_sets::USERINFO_PERCENT_ENCODE));
302+ if constexpr (result_type_is_ada_url) {
303+ url.username += unicode::percent_encode (
304+ authority_view.substr (0 , password_token_location),
305+ character_sets::USERINFO_PERCENT_ENCODE);
306+ url.password += unicode::percent_encode (
307+ authority_view.substr (password_token_location + 1 ),
308+ character_sets::USERINFO_PERCENT_ENCODE);
309+ } else {
310+ url.append_base_username (unicode::percent_encode (
311+ authority_view.substr (0 , password_token_location),
312+ character_sets::USERINFO_PERCENT_ENCODE));
313+ url.append_base_password (unicode::percent_encode (
314+ authority_view.substr (password_token_location + 1 ),
315+ character_sets::USERINFO_PERCENT_ENCODE));
316+ }
316317 }
317318 }
318- } else {
319+ } else if constexpr (store_values) {
319320 if constexpr (result_type_is_ada_url) {
320321 url.password += unicode::percent_encode (
321322 authority_view, character_sets::USERINFO_PERCENT_ENCODE);
@@ -342,8 +343,10 @@ result_type parse_url_impl(std::string_view user_input,
342343 break ;
343344 }
344345 if (end_of_authority == input_size) {
345- if (fragment.has_value ()) {
346- url.update_unencoded_base_hash (*fragment);
346+ if constexpr (store_values) {
347+ if (fragment.has_value ()) {
348+ url.update_unencoded_base_hash (*fragment);
349+ }
347350 }
348351 return url;
349352 }
@@ -658,9 +661,11 @@ result_type parse_url_impl(std::string_view user_input,
658661 // Optimization: Avoiding going into PATH state improves the
659662 // performance of urls ending with /.
660663 if (input_position == input_size) {
661- url.update_base_pathname (" /" );
662- if (fragment.has_value ()) {
663- url.update_unencoded_base_hash (*fragment);
664+ if constexpr (store_values) {
665+ url.update_base_pathname (" /" );
666+ if (fragment.has_value ()) {
667+ url.update_unencoded_base_hash (*fragment);
668+ }
664669 }
665670 return url;
666671 }
@@ -906,8 +911,10 @@ result_type parse_url_impl(std::string_view user_input,
906911 ada::unreachable ();
907912 }
908913 }
909- if (fragment.has_value ()) {
910- url.update_unencoded_base_hash (*fragment);
914+ if constexpr (store_values) {
915+ if (fragment.has_value ()) {
916+ url.update_unencoded_base_hash (*fragment);
917+ }
911918 }
912919 return url;
913920}
0 commit comments