From 21c4f8b9943e6c9ff156045fd3ac00724b6ca50f Mon Sep 17 00:00:00 2001 From: rmisev Date: Sun, 26 Nov 2023 17:04:46 +0000 Subject: [PATCH] =?UTF-8?q?Deploying=20to=20gh-pages=20from=20@=20rmisev/u?= =?UTF-8?q?rl=5Fwhatwg@99c3e202f033e392085075b5125f2b13a35594f2=20?= =?UTF-8?q?=F0=9F=9A=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- main/classupa_1_1url.html | 2 +- main/index.html | 2 +- main/namespaceupa.html | 10 +- ...structstd_1_1hash_3_01upa_1_1url_01_4.html | 4 +- main/url_8h_source.html | 468 +++++++++--------- main/url__search__params_8h_source.html | 2 +- 6 files changed, 253 insertions(+), 235 deletions(-) diff --git a/main/classupa_1_1url.html b/main/classupa_1_1url.html index c827bbe..b8b8d63 100644 --- a/main/classupa_1_1url.html +++ b/main/classupa_1_1url.html @@ -3146,7 +3146,7 @@

Definition at line 2999 of file url.h.

+

Definition at line 3017 of file url.h.

diff --git a/main/index.html b/main/index.html index a41b6c4..2097936 100644 --- a/main/index.html +++ b/main/index.html @@ -240,7 +240,7 @@

catch (const std::exception& ex) {
std::cerr << "Error: " << ex.what() << '\n';
}
-
url url_from_file_path(StrT &&str, file_path_format format=file_path_format::detect)
Make URL from OS file path.
Definition url.h:3037
+
url url_from_file_path(StrT &&str, file_path_format format=file_path_format::detect)
Make URL from OS file path.
Definition url.h:3055

License

This library is licensed under the BSD 2-Clause License. It contains portions of modified source code from the Chromium project, licensed under the BSD 3-Clause License, and the ICU project, licensed under the UNICODE LICENSE V3.

diff --git a/main/namespaceupa.html b/main/namespaceupa.html index 365ce24..4f48f99 100644 --- a/main/namespaceupa.html +++ b/main/namespaceupa.html @@ -302,7 +302,7 @@

Definition at line 3014 of file url.h.

+

Definition at line 3032 of file url.h.

@@ -597,7 +597,7 @@

Definition at line 2999 of file url.h.

+

Definition at line 3017 of file url.h.

@@ -646,7 +646,7 @@

Returns
OS path
-

Definition at line 3119 of file url.h.

+

Definition at line 3137 of file url.h.

@@ -818,7 +818,7 @@

Definition at line 3009 of file url.h.

+

Definition at line 3027 of file url.h.

@@ -918,7 +918,7 @@

Returns
file URL
-

Definition at line 3037 of file url.h.

+

Definition at line 3055 of file url.h.

diff --git a/main/structstd_1_1hash_3_01upa_1_1url_01_4.html b/main/structstd_1_1hash_3_01upa_1_1url_01_4.html index d3148fa..f218637 100644 --- a/main/structstd_1_1hash_3_01upa_1_1url_01_4.html +++ b/main/structstd_1_1hash_3_01upa_1_1url_01_4.html @@ -125,7 +125,7 @@

Detailed Description

std::hash specialization for upa::url class

-

Definition at line 3194 of file url.h.

+

Definition at line 3212 of file url.h.

Member Function Documentation

◆ operator()()

@@ -151,7 +151,7 @@

-

Definition at line 3195 of file url.h.

+

Definition at line 3213 of file url.h.

diff --git a/main/url_8h_source.html b/main/url_8h_source.html index 70121a6..abba02d 100644 --- a/main/url_8h_source.html +++ b/main/url_8h_source.html @@ -2865,227 +2865,245 @@
2967
2968 ++path_components_count;
2969
-
2970 // Check the first UNC path component (hostname)
-
2971 if (path_components_count == 1) {
-
2972 switch (pcend - start) {
-
2973 case 1:
-
2974 // Do not allow "?" and "." hostnames, because "\\?\" means Win32 file
-
2975 // namespace and "\\.\" means Win32 device namespace
-
2976 if (start[0] == '?' || start[0] == '.')
-
2977 return false;
-
2978 break;
-
2979 case 2:
-
2980 // Do not allow Windows drive letter, because it is not a valid hostname
-
2981 if (detail::is_windows_drive(start[0], start[1]))
-
2982 return false;
-
2983 break;
-
2984 }
-
2985 }
-
2986 if (pcend == last) break;
-
2987 start = pcend + 1; // skip '\'
-
2988 }
-
2989 // A valid UNC path MUST contain two or more path components
-
2990 return path_components_count >= 2;
-
2991}
-
2992
-
2993} // namespace detail
-
2994
-
2995
-
2996// URL utilities (non-member functions)
-
2997
-
-
2999inline bool operator==(const url& lhs, const url& rhs) noexcept {
-
3000 return lhs.norm_url_ == rhs.norm_url_;
-
3001}
-
-
3002
-
-
3009inline void swap(url& lhs, url& rhs) UPA_NOEXCEPT_17 {
-
3010 lhs.swap(rhs);
-
3011}
-
+
2970 switch (path_components_count) {
+
2971 case 1:
+
2972 // Check the first UNC path component (hostname)
+
2973 switch (pcend - start) {
+
2974 case 1:
+
2975 // Do not allow "?" and "." hostnames, because "\\?\" means Win32 file
+
2976 // namespace and "\\.\" means Win32 device namespace
+
2977 if (start[0] == '?' || start[0] == '.')
+
2978 return false;
+
2979 break;
+
2980 case 2:
+
2981 // Do not allow Windows drive letter, because it is not a valid hostname
+
2982 if (detail::is_windows_drive(start[0], start[1]))
+
2983 return false;
+
2984 break;
+
2985 }
+
2986 break;
+
2987 case 2:
+
2988 // Check the second UNC path component (share name).
+
2989 // Do not allow "." and ".." as share names, because they have
+
2990 // a special meaning and are removed by the URL parser.
+
2991 switch (pcend - start) {
+
2992 case 1:
+
2993 if (start[0] == '.')
+
2994 return false;
+
2995 break;
+
2996 case 2:
+
2997 if (start[0] == '.' && start[1] == '.')
+
2998 return false;
+
2999 break;
+
3000 }
+
3001 break;
+
3002 default:;
+
3003 }
+
3004 if (pcend == last) break;
+
3005 start = pcend + 1; // skip '\'
+
3006 }
+
3007 // A valid UNC path MUST contain two or more path components
+
3008 return path_components_count >= 2;
+
3009}
+
3010
+
3011} // namespace detail
3012
-
- -
3015 detect,
-
3018 posix,
-
3019 windows,
-
3020#ifdef _WIN32
-
3021 native = windows
-
3022#else
-
3023 native = posix
-
3024#endif
-
3025};
-
-
3026
-
3036template <class StrT, enable_if_str_arg_t<StrT> = 0>
-
- -
3038 const auto inp = make_str_arg(std::forward<StrT>(str));
-
3039 const auto* first = inp.begin();
-
3040 const auto* last = inp.end();
-
3041
-
3042 if (first == last) {
-
3043 throw url_error(validation_errc::file_empty_path, "Empty file path");
-
3044 }
-
3045
-
3046 if (format == file_path_format::detect) {
-
3047 format = *first == '/' ? file_path_format::posix : file_path_format::windows;
-
3048 } else if (format == file_path_format::posix) {
-
3049 if (*first != '/')
-
3050 throw url_error(validation_errc::file_unsupported_path, "Non-absolute POSIX path");
-
3051 }
-
3052
-
3053 const auto* pointer = first;
-
3054 const code_point_set* no_encode_set = nullptr;
-
3055
-
3056 std::string str_url("file://");
-
3057
-
3058 if (format == file_path_format::posix) {
-
3059 // Absolute POSIX path
-
3060 no_encode_set = &posix_path_no_encode_set;
-
3061 } else {
-
3062 // Windows path?
-
3063 bool is_unc = false;
-
3064
-
3065 // https://learn.microsoft.com/en-us/windows/win32/fileio/naming-a-file
-
3066 // https://learn.microsoft.com/en-us/dotnet/standard/io/file-path-formats
-
3067 // https://learn.microsoft.com/en-us/windows/win32/fileio/maximum-file-path-limitation
-
3068 if (last - pointer >= 2 &&
-
3069 detail::is_windows_slash(pointer[0]) &&
-
3070 detail::is_windows_slash(pointer[1])) {
-
3071 pointer += 2; // skip '\\'
-
3072
-
3073 // It is Win32 namespace path or UNC path?
-
3074 if (last - pointer >= 2 &&
-
3075 (pointer[0] == '?' || pointer[0] == '.') &&
-
3076 detail::is_windows_slash(pointer[1])) {
-
3077 // Win32 File ("\\?\") or Device ("\\.\") namespace path
-
3078 pointer += 2; // skip "?\" or ".\"
-
3079 if (last - pointer >= 4 &&
-
3080 (pointer[0] | 0x20) == 'u' &&
-
3081 (pointer[1] | 0x20) == 'n' &&
-
3082 (pointer[2] | 0x20) == 'c' &&
-
3083 detail::is_windows_slash(pointer[3])) {
-
3084 pointer += 4; // skip "UNC\"
-
3085 is_unc = true;
-
3086 }
-
3087 } else {
-
3088 // UNC path
-
3089 is_unc = true;
-
3090 }
-
3091 }
-
3092 if (is_unc
-
3093 ? detail::is_unc_path(pointer, last)
-
3094 : detail::is_windows_drive_absolute_path(pointer, last)) {
-
3095 no_encode_set = &raw_path_no_encode_set;
-
3096 if (!is_unc) str_url.push_back('/'); // start path
-
3097 } else {
-
3098 throw url_error(validation_errc::file_unsupported_path, "Unsupported file path");
-
3099 }
-
3100 }
-
3101
-
3102 // Check for null characters
-
3103 if (util::contains_null(pointer, last))
-
3104 throw url_error(validation_errc::null_character, "Path contains null character");
-
3105
-
3106 // make URL
-
3107 detail::append_utf8_percent_encoded(pointer, last, *no_encode_set, str_url);
-
3108 return url(str_url);
-
3109}
-
-
3110
-
-
3119inline std::string path_from_file_url(const url& file_url, file_path_format format = file_path_format::native) {
-
3120 if (!file_url.is_file_scheme())
-
3121 throw url_error(validation_errc::not_file_url, "Not a file URL");
-
3122
-
3123 if (format == upa::file_path_format::detect)
- -
3125
-
3126 // source
-
3127 const auto hostname = file_url.hostname();
-
3128 const bool is_host = !hostname.empty();
-
3129
-
3130 // target
-
3131 std::string path;
-
3132
-
3133 if (format == file_path_format::posix) {
-
3134 if (is_host)
-
3135 throw url_error(validation_errc::file_url_cannot_have_host, "POSIX path cannot have host");
-
3136 // percent decode pathname
-
3137 detail::append_percent_decoded(file_url.pathname(), path);
-
3138 } else {
-
3139 // format == file_path_format::windows
-
3140 if (is_host) {
-
3141 // UNC path cannot have "." hostname, because "\\.\" means Win32 device namespace
-
3142 if (hostname == ".")
-
3143 throw url_error(validation_errc::file_url_unsupported_host, "UNC path cannot have \".\" hostname");
-
3144 // UNC path
-
3145 path.append("\\\\");
-
3146 path.append(hostname);
-
3147 }
-
3148
-
3149 // percent decode pathname and normalize slashes
-
3150 const auto start = static_cast<std::ptrdiff_t>(path.length());
-
3151 detail::append_percent_decoded(file_url.pathname(), path);
-
3152 std::replace(std::next(path.begin(), start), path.end(), '/', '\\');
-
3153
-
3154 if (is_host) {
-
3155 if (!detail::is_unc_path(path.data() + 2, path.data() + path.length()))
-
3156 throw url_error(validation_errc::file_url_invalid_unc, "Invalid UNC path");
-
3157 } else {
-
3158 if (detail::pathname_has_windows_drive(path)) {
-
3159 path.erase(0, 1); // remove leading '\\'
-
3160 if (path.length() == 2)
-
3161 path.push_back('\\'); // "C:" -> "C:\"
-
3162 } else {
-
3163 // https://datatracker.ietf.org/doc/html/rfc8089#appendix-E.3.2
-
3164 // Maybe a UNC path. Possible variants:
-
3165 // 1) file://///host/path -> \\\host\path
-
3166 // 2) file:////host/path -> \\host\path
-
3167 const auto count_leading_slashes = std::find_if(
-
3168 path.data(),
-
3169 path.data() + std::min(static_cast<std::size_t>(4), path.length()),
-
3170 [](char c) { return c != '\\'; }) - path.data();
-
3171 if (count_leading_slashes == 3)
-
3172 path.erase(0, 1); // remove leading '\\'
-
3173 else if (count_leading_slashes != 2)
-
3174 throw url_error(validation_errc::file_url_not_windows_path, "Not a Windows path");
-
3175 if (!detail::is_unc_path(path.data() + 2, path.data() + path.length()))
-
3176 throw url_error(validation_errc::file_url_invalid_unc, "Invalid UNC path");
-
3177 }
-
3178 }
-
3179 }
-
3180
-
3181 // Check for null characters
-
3182 if (util::contains_null(path.begin(), path.end()))
-
3183 throw url_error(validation_errc::null_character, "Path contains null character");
-
3184
-
3185 return path;
-
3186}
-
-
3187
-
3188
-
3189} // namespace upa
- -
3190
-
3191
-
3193template<>
-
-
3194struct std::hash<upa::url> {
-
-
3195 std::size_t operator()(const upa::url& url) const noexcept {
-
3196 return std::hash<std::string>{}(url.norm_url_);
+
3013
+
3014// URL utilities (non-member functions)
+
3015
+
+
3017inline bool operator==(const url& lhs, const url& rhs) noexcept {
+
3018 return lhs.norm_url_ == rhs.norm_url_;
+
3019}
+
+
3020
+
+
3027inline void swap(url& lhs, url& rhs) UPA_NOEXCEPT_17 {
+
3028 lhs.swap(rhs);
+
3029}
+
+
3030
+
+ +
3033 detect,
+
3036 posix,
+
3037 windows,
+
3038#ifdef _WIN32
+
3039 native = windows
+
3040#else
+
3041 native = posix
+
3042#endif
+
3043};
+
+
3044
+
3054template <class StrT, enable_if_str_arg_t<StrT> = 0>
+
+ +
3056 const auto inp = make_str_arg(std::forward<StrT>(str));
+
3057 const auto* first = inp.begin();
+
3058 const auto* last = inp.end();
+
3059
+
3060 if (first == last) {
+
3061 throw url_error(validation_errc::file_empty_path, "Empty file path");
+
3062 }
+
3063
+
3064 if (format == file_path_format::detect) {
+
3065 format = *first == '/' ? file_path_format::posix : file_path_format::windows;
+
3066 } else if (format == file_path_format::posix) {
+
3067 if (*first != '/')
+
3068 throw url_error(validation_errc::file_unsupported_path, "Non-absolute POSIX path");
+
3069 }
+
3070
+
3071 const auto* pointer = first;
+
3072 const code_point_set* no_encode_set = nullptr;
+
3073
+
3074 std::string str_url("file://");
+
3075
+
3076 if (format == file_path_format::posix) {
+
3077 // Absolute POSIX path
+
3078 no_encode_set = &posix_path_no_encode_set;
+
3079 } else {
+
3080 // Windows path?
+
3081 bool is_unc = false;
+
3082
+
3083 // https://learn.microsoft.com/en-us/windows/win32/fileio/naming-a-file
+
3084 // https://learn.microsoft.com/en-us/dotnet/standard/io/file-path-formats
+
3085 // https://learn.microsoft.com/en-us/windows/win32/fileio/maximum-file-path-limitation
+
3086 if (last - pointer >= 2 &&
+
3087 detail::is_windows_slash(pointer[0]) &&
+
3088 detail::is_windows_slash(pointer[1])) {
+
3089 pointer += 2; // skip '\\'
+
3090
+
3091 // It is Win32 namespace path or UNC path?
+
3092 if (last - pointer >= 2 &&
+
3093 (pointer[0] == '?' || pointer[0] == '.') &&
+
3094 detail::is_windows_slash(pointer[1])) {
+
3095 // Win32 File ("\\?\") or Device ("\\.\") namespace path
+
3096 pointer += 2; // skip "?\" or ".\"
+
3097 if (last - pointer >= 4 &&
+
3098 (pointer[0] | 0x20) == 'u' &&
+
3099 (pointer[1] | 0x20) == 'n' &&
+
3100 (pointer[2] | 0x20) == 'c' &&
+
3101 detail::is_windows_slash(pointer[3])) {
+
3102 pointer += 4; // skip "UNC\"
+
3103 is_unc = true;
+
3104 }
+
3105 } else {
+
3106 // UNC path
+
3107 is_unc = true;
+
3108 }
+
3109 }
+
3110 if (is_unc
+
3111 ? detail::is_unc_path(pointer, last)
+
3112 : detail::is_windows_drive_absolute_path(pointer, last)) {
+
3113 no_encode_set = &raw_path_no_encode_set;
+
3114 if (!is_unc) str_url.push_back('/'); // start path
+
3115 } else {
+
3116 throw url_error(validation_errc::file_unsupported_path, "Unsupported file path");
+
3117 }
+
3118 }
+
3119
+
3120 // Check for null characters
+
3121 if (util::contains_null(pointer, last))
+
3122 throw url_error(validation_errc::null_character, "Path contains null character");
+
3123
+
3124 // make URL
+
3125 detail::append_utf8_percent_encoded(pointer, last, *no_encode_set, str_url);
+
3126 return url(str_url);
+
3127}
+
+
3128
+
+
3137inline std::string path_from_file_url(const url& file_url, file_path_format format = file_path_format::native) {
+
3138 if (!file_url.is_file_scheme())
+
3139 throw url_error(validation_errc::not_file_url, "Not a file URL");
+
3140
+
3141 if (format == upa::file_path_format::detect)
+ +
3143
+
3144 // source
+
3145 const auto hostname = file_url.hostname();
+
3146 const bool is_host = !hostname.empty();
+
3147
+
3148 // target
+
3149 std::string path;
+
3150
+
3151 if (format == file_path_format::posix) {
+
3152 if (is_host)
+
3153 throw url_error(validation_errc::file_url_cannot_have_host, "POSIX path cannot have host");
+
3154 // percent decode pathname
+
3155 detail::append_percent_decoded(file_url.pathname(), path);
+
3156 } else {
+
3157 // format == file_path_format::windows
+
3158 if (is_host) {
+
3159 // UNC path cannot have "." hostname, because "\\.\" means Win32 device namespace
+
3160 if (hostname == ".")
+
3161 throw url_error(validation_errc::file_url_unsupported_host, "UNC path cannot have \".\" hostname");
+
3162 // UNC path
+
3163 path.append("\\\\");
+
3164 path.append(hostname);
+
3165 }
+
3166
+
3167 // percent decode pathname and normalize slashes
+
3168 const auto start = static_cast<std::ptrdiff_t>(path.length());
+
3169 detail::append_percent_decoded(file_url.pathname(), path);
+
3170 std::replace(std::next(path.begin(), start), path.end(), '/', '\\');
+
3171
+
3172 if (is_host) {
+
3173 if (!detail::is_unc_path(path.data() + 2, path.data() + path.length()))
+
3174 throw url_error(validation_errc::file_url_invalid_unc, "Invalid UNC path");
+
3175 } else {
+
3176 if (detail::pathname_has_windows_drive(path)) {
+
3177 path.erase(0, 1); // remove leading '\\'
+
3178 if (path.length() == 2)
+
3179 path.push_back('\\'); // "C:" -> "C:\"
+
3180 } else {
+
3181 // https://datatracker.ietf.org/doc/html/rfc8089#appendix-E.3.2
+
3182 // Maybe a UNC path. Possible variants:
+
3183 // 1) file://///host/path -> \\\host\path
+
3184 // 2) file:////host/path -> \\host\path
+
3185 const auto count_leading_slashes = std::find_if(
+
3186 path.data(),
+
3187 path.data() + std::min(static_cast<std::size_t>(4), path.length()),
+
3188 [](char c) { return c != '\\'; }) - path.data();
+
3189 if (count_leading_slashes == 3)
+
3190 path.erase(0, 1); // remove leading '\\'
+
3191 else if (count_leading_slashes != 2)
+
3192 throw url_error(validation_errc::file_url_not_windows_path, "Not a Windows path");
+
3193 if (!detail::is_unc_path(path.data() + 2, path.data() + path.length()))
+
3194 throw url_error(validation_errc::file_url_invalid_unc, "Invalid UNC path");
+
3195 }
+
3196 }
3197 }
-
-
3198};
-
-
3199
-
3200// Includes that require the url class declaration
-
3201#include "url_search_params-inl.h"
+
3198
+
3199 // Check for null characters
+
3200 if (util::contains_null(path.begin(), path.end()))
+
3201 throw url_error(validation_errc::null_character, "Path contains null character");
3202
-
3203#endif // UPA_URL_H
+
3203 return path;
+
3204}
+
+
3205
+
3206
+
3207} // namespace upa
+ +
3208
+
3209
+
3211template<>
+
+
3212struct std::hash<upa::url> {
+
+
3213 std::size_t operator()(const upa::url& url) const noexcept {
+
3214 return std::hash<std::string>{}(url.norm_url_);
+
3215 }
+
+
3216};
+
+
3217
+
3218// Includes that require the url class declaration
+
3219#include "url_search_params-inl.h"
+
3220
+
3221#endif // UPA_URL_H
Represents code point set.
URL exception class.
Definition url_result.h:98
URLSearchParams class.
@@ -3161,7 +3179,7 @@
string_view get_protocol() const
Equivalent to protocol() const .
Definition url.h:394
bool pathname(StrT &&str)
The pathname setter.
Definition url.h:1492
string_view host() const
The host getter.
Definition url.h:1148
-
friend bool operator==(const url &lhs, const url &rhs) noexcept
Lexicographically compares two URL's.
Definition url.h:2999
+
friend bool operator==(const url &lhs, const url &rhs) noexcept
Lexicographically compares two URL's.
Definition url.h:3017
string_view get_hostname() const
Equivalent to hostname() const .
Definition url.h:430
string_view get_host() const
Equivalent to host() const .
Definition url.h:421
url(const url &other)=default
Copy constructor.
@@ -3171,17 +3189,17 @@
bool empty() const noexcept
Checks whether the URL is empty.
Definition url.h:1243
string_view hostname() const
The hostname getter.
Definition url.h:1157
Definition url.h:41
-
std::string path_from_file_url(const url &file_url, file_path_format format=file_path_format::native)
Get OS path from file URL.
Definition url.h:3119
+
std::string path_from_file_url(const url &file_url, file_path_format format=file_path_format::native)
Get OS path from file URL.
Definition url.h:3137
constexpr bool success(validation_errc res) noexcept
Check validation error code indicates success.
Definition url_result.h:92
constexpr code_point_set query_no_encode_set
HostType
Host representation.
Definition url_host.h:27
@ Empty
empty host is the empty string
-
file_path_format
File path format.
Definition url.h:3014
+
file_path_format
File path format.
Definition url.h:3032
@ windows
Windows file path format.
@ native
The file path format corresponds to the OS on which the code was compiled.
@ posix
POSIX file path format.
-
url url_from_file_path(StrT &&str, file_path_format format=file_path_format::detect)
Make URL from OS file path.
Definition url.h:3037
+
url url_from_file_path(StrT &&str, file_path_format format=file_path_format::detect)
Make URL from OS file path.
Definition url.h:3055
bool equals(const url &lhs, const url &rhs, bool exclude_fragments=false)
URL equivalence.
Definition url.h:684
validation_errc
URL validation and other error codes.
Definition url_result.h:16
@ invalid_base
Invalid base.
@@ -3200,15 +3218,15 @@
@ file_empty_path
Path cannot be empty.
@ port_invalid
The input’s port is invalid.
@ ignored
Setter ignored the value (internal)
-
void swap(url &lhs, url &rhs) UPA_NOEXCEPT_17
Swaps the contents of two URLs.
Definition url.h:3009
+
void swap(url &lhs, url &rhs) UPA_NOEXCEPT_17
Swaps the contents of two URLs.
Definition url.h:3027
constexpr code_point_set special_query_no_encode_set
-
bool operator==(const url &lhs, const url &rhs) noexcept
Lexicographically compares two URL's.
Definition url.h:2999
+
bool operator==(const url &lhs, const url &rhs) noexcept
Lexicographically compares two URL's.
Definition url.h:3017
constexpr code_point_set raw_path_no_encode_set
constexpr code_point_set path_no_encode_set
constexpr code_point_set fragment_no_encode_set
constexpr code_point_set userinfo_no_encode_set
constexpr code_point_set posix_path_no_encode_set
-
std::size_t operator()(const upa::url &url) const noexcept
Definition url.h:3195
+
std::size_t operator()(const upa::url &url) const noexcept
Definition url.h:3213
diff --git a/main/url__search__params_8h_source.html b/main/url__search__params_8h_source.html index 7181f11..d5439ec 100644 --- a/main/url__search__params_8h_source.html +++ b/main/url__search__params_8h_source.html @@ -821,7 +821,7 @@
std::list< name_value_pair > name_value_list
URL class.
Definition url.h:60
Definition url.h:41
-
void swap(url &lhs, url &rhs) UPA_NOEXCEPT_17
Swaps the contents of two URLs.
Definition url.h:3009
+
void swap(url &lhs, url &rhs) UPA_NOEXCEPT_17
Swaps the contents of two URLs.
Definition url.h:3027