7#include "architecture.hpp"
15constexpr char native_path_seperator = (operating_system::current == operating_system::windows) ?
'\\' :
'/';
17constexpr bool is_urlchar_alpha(
char c) {
18 return (c >=
'a' && c <=
'z') || (c >=
'A' && c <=
'Z');
21constexpr bool is_urlchar_digit(
char c) {
22 return (c >=
'0' && c <=
'9');
25constexpr bool is_urlchar_gen_delims(
char c) {
26 return c ==
':' || c ==
'/' || c ==
'?' || c ==
'#' || c ==
'[' || c ==
']' || c ==
'@';
29constexpr bool is_urlchar_sub_delims(
char c) {
31 c ==
'!' || c ==
'$' || c ==
'&' || c ==
'\'' || c ==
'(' || c ==
')' ||
32 c ==
'*' || c ==
'+' || c ==
',' || c ==
';' || c ==
'=';
35constexpr bool is_urlchar_unreserved(
char c) {
36 return is_urlchar_alpha(c) || is_urlchar_digit(c) || c ==
'-' || c ==
'.' || c ==
'_' || c ==
'~';
39constexpr bool is_urlchar_reserved(
char c) {
40 return is_urlchar_gen_delims(c) || is_urlchar_sub_delims(c);
43constexpr bool is_urlchar_pchar(
char c) {
44 return is_urlchar_unreserved(c) || is_urlchar_sub_delims(c) || c ==
':' || c ==
'@';
47constexpr bool is_urlchar_pchar_forward(
char c) {
48 return is_urlchar_pchar(c) || c ==
'/';
51constexpr bool is_urlchar_pchar_backward(
char c) {
52 return is_urlchar_pchar(c) || c ==
'\\';
63inline std::string url_encode(std::string_view input)
noexcept {
64 return url_encode_part(input, is_urlchar_unreserved);
77std::string url_decode(std::string_view input,
bool plus_to_space=
false) noexcept;
83 std::string_view scheme;
84 std::string_view authority;
85 std::string_view drive;
88 std::string_view query;
89 std::string_view fragment;
97url_parts parse_url(std::string_view url)
noexcept;
117std::
string generate_native_path(
url_parts const &parts) noexcept;
121void normalize_url_path(
url_parts &parts) noexcept;
125std::
string normalize_url(
std::string_view url) noexcept;
135std::
string concatenate_url_path(
std::string_view lhs,
std::string_view rhs) noexcept;
139std::
string concatenate_url_filename(
url_parts lhs,
std::string_view rhs) noexcept;
143std::
string concatenate_url_filename(
std::string_view lhs,
std::string_view rhs) noexcept;
147std::
string filename_from_path(
std::string_view path) noexcept;
Definition url_parser.hpp:82