-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 @@
2968 ++path_components_count;
-
- 2971 if (path_components_count == 1) {
- 2972 switch (pcend - start) {
-
-
-
- 2976 if (start[0] ==
'?' || start[0] ==
'.')
-
-
-
-
- 2981 if (detail::is_windows_drive(start[0], start[1]))
-
-
-
-
- 2986 if (pcend == last)
break;
-
-
-
- 2990 return path_components_count >= 2;
-
-
-
-
-
-
-
-
-
-
3000 return lhs.norm_url_ == rhs.norm_url_;
-
-
-
-
+ 2970 switch (path_components_count) {
+
+
+ 2973 switch (pcend - start) {
+
+
+
+ 2977 if (start[0] ==
'?' || start[0] ==
'.')
+
+
+
+
+ 2982 if (detail::is_windows_drive(start[0], start[1]))
+
+
+
+
+
+
+
+
+ 2991 switch (pcend - start) {
+
+ 2993 if (start[0] ==
'.')
+
+
+
+ 2997 if (start[0] ==
'.' && start[1] ==
'.')
+
+
+
+
+
+
+ 3004 if (pcend == last)
break;
+
+
+
+ 3008 return path_components_count >= 2;
+
+
+
-
-
- 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();
-
-
3042 if (first == last) {
-
-
-
-
-
-
-
-
-
-
-
3053 const auto* pointer = first;
-
-
-
3056 std::string str_url(
"file://");
-
-
-
-
-
-
-
3063 bool is_unc =
false;
-
-
-
-
-
3068 if (last - pointer >= 2 &&
-
3069 detail::is_windows_slash(pointer[0]) &&
-
3070 detail::is_windows_slash(pointer[1])) {
-
-
-
-
3074 if (last - pointer >= 2 &&
-
3075 (pointer[0] ==
'?' || pointer[0] ==
'.') &&
-
3076 detail::is_windows_slash(pointer[1])) {
-
-
-
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])) {
-
-
-
-
-
-
-
-
-
-
3093 ? detail::is_unc_path(pointer, last)
-
3094 : detail::is_windows_drive_absolute_path(pointer, last)) {
-
-
3096 if (!is_unc) str_url.push_back(
'/');
-
-
-
-
-
-
-
3103 if (util::contains_null(pointer, last))
-
-
-
-
3107 detail::append_utf8_percent_encoded(pointer, last, *no_encode_set, str_url);
-
3108 return url(str_url);
-
-
-
-
-
-
-
-
-
-
-
-
-
3127 const auto hostname = file_url.
hostname();
-
3128 const bool is_host = !hostname.empty();
-
-
-
-
-
-
-
-
-
3137 detail::append_percent_decoded(file_url.
pathname(), path);
-
-
-
-
-
3142 if (hostname ==
".")
-
-
-
3145 path.append(
"\\\\");
-
3146 path.append(hostname);
-
-
-
-
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(),
'/',
'\\');
-
-
-
3155 if (!detail::is_unc_path(path.data() + 2, path.data() + path.length()))
-
-
-
3158 if (detail::pathname_has_windows_drive(path)) {
-
-
3160 if (path.length() == 2)
-
3161 path.push_back(
'\\');
-
-
-
-
-
-
3167 const auto count_leading_slashes = std::find_if(
-
-
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)
-
-
3173 else if (count_leading_slashes != 2)
-
-
3175 if (!detail::is_unc_path(path.data() + 2, path.data() + path.length()))
-
-
-
-
-
-
-
3182 if (util::contains_null(path.begin(), path.end()))
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
3196 return std::hash<std::string>{}(url.norm_url_);
+
+
+
+
+
+
3018 return lhs.norm_url_ == rhs.norm_url_;
+
+
+
+
+
+
+
+
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();
+
+
3060 if (first == last) {
+
+
+
+
+
+
+
+
+
+
+
3071 const auto* pointer = first;
+
+
+
3074 std::string str_url(
"file://");
+
+
+
+
+
+
+
3081 bool is_unc =
false;
+
+
+
+
+
3086 if (last - pointer >= 2 &&
+
3087 detail::is_windows_slash(pointer[0]) &&
+
3088 detail::is_windows_slash(pointer[1])) {
+
+
+
+
3092 if (last - pointer >= 2 &&
+
3093 (pointer[0] ==
'?' || pointer[0] ==
'.') &&
+
3094 detail::is_windows_slash(pointer[1])) {
+
+
+
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])) {
+
+
+
+
+
+
+
+
+
+
3111 ? detail::is_unc_path(pointer, last)
+
3112 : detail::is_windows_drive_absolute_path(pointer, last)) {
+
+
3114 if (!is_unc) str_url.push_back(
'/');
+
+
+
+
+
+
+
3121 if (util::contains_null(pointer, last))
+
+
+
+
3125 detail::append_utf8_percent_encoded(pointer, last, *no_encode_set, str_url);
+
3126 return url(str_url);
+
+
+
+
+
+
+
+
+
+
+
+
+
3145 const auto hostname = file_url.
hostname();
+
3146 const bool is_host = !hostname.empty();
+
+
+
+
+
+
+
+
+
3155 detail::append_percent_decoded(file_url.
pathname(), path);
+
+
+
+
+
3160 if (hostname ==
".")
+
+
+
3163 path.append(
"\\\\");
+
3164 path.append(hostname);
+
+
+
+
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(),
'/',
'\\');
+
+
+
3173 if (!detail::is_unc_path(path.data() + 2, path.data() + path.length()))
+
+
+
3176 if (detail::pathname_has_windows_drive(path)) {
+
+
3178 if (path.length() == 2)
+
3179 path.push_back(
'\\');
+
+
+
+
+
+
3185 const auto count_leading_slashes = std::find_if(
+
+
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)
+
+
3191 else if (count_leading_slashes != 2)
+
+
3193 if (!detail::is_unc_path(path.data() + 2, path.data() + path.length()))
+
+
+
-
-
-
-
-
-
3201#include "url_search_params-inl.h"
+
+
+
3200 if (util::contains_null(path.begin(), path.end()))
+
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
3214 return std::hash<std::string>{}(url.norm_url_);
+
+
+
+
+
+
+ 3219#include "url_search_params-inl.h"
+
+
Represents code point set.
@@ -3161,7 +3179,7 @@
string_view get_protocol() const
Equivalent to protocol() const .
bool pathname(StrT &&str)
The pathname setter.
string_view host() const
The host getter.
-friend bool operator==(const url &lhs, const url &rhs) noexcept
Lexicographically compares two URL's.
+friend bool operator==(const url &lhs, const url &rhs) noexcept
Lexicographically compares two URL's.
string_view get_hostname() const
Equivalent to hostname() const .
string_view get_host() const
Equivalent to host() const .
url(const url &other)=default
Copy constructor.
@@ -3171,17 +3189,17 @@
bool empty() const noexcept
Checks whether the URL is empty.
string_view hostname() const
The hostname getter.
-std::string path_from_file_url(const url &file_url, file_path_format format=file_path_format::native)
Get OS path from file URL.
+std::string path_from_file_url(const url &file_url, file_path_format format=file_path_format::native)
Get OS path from file URL.
constexpr bool success(validation_errc res) noexcept
Check validation error code indicates success.
constexpr code_point_set query_no_encode_set
HostType
Host representation.
@ Empty
empty host is the empty string
-file_path_format
File path format.
+file_path_format
File path format.
@ 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.
+url url_from_file_path(StrT &&str, file_path_format format=file_path_format::detect)
Make URL from OS file path.
bool equals(const url &lhs, const url &rhs, bool exclude_fragments=false)
URL equivalence.
validation_errc
URL validation and other error codes.
@ 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.
+void swap(url &lhs, url &rhs) UPA_NOEXCEPT_17
Swaps the contents of two URLs.
constexpr code_point_set special_query_no_encode_set
-bool operator==(const url &lhs, const url &rhs) noexcept
Lexicographically compares two URL's.
+bool operator==(const url &lhs, const url &rhs) noexcept
Lexicographically compares two URL's.
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
+std::size_t operator()(const upa::url &url) const noexcept
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
-void swap(url &lhs, url &rhs) UPA_NOEXCEPT_17
Swaps the contents of two URLs.
+void swap(url &lhs, url &rhs) UPA_NOEXCEPT_17
Swaps the contents of two URLs.