16 view.remove_suffix(1);
30 if (
last_dot != std::string_view::npos) {
41 if (
view.size() == 1) {
45 if (!std::equal(
view.begin(),
view.begin() + 2,
"0x")) {
49 if (
view.size() == 2) {
54 return std::all_of(
view.begin() + 2,
view.end(),
55 ada::unicode::is_lowercase_hex);
62 std::array<uint8_t, 256>
result{};
63 for (
size_t i = 0;
i < 256;
i++) {
64 if (
i <= 0x20 ||
i == 0x22 ||
i == 0x23 ||
i == 0x3c ||
i == 0x3e ||
65 i == 0x3f ||
i == 0x60 ||
i == 0x7b ||
i == 0x7b ||
i == 0x7d ||
68 }
else if (
i == 0x25) {
70 }
else if (
i == 0x2e) {
72 }
else if (
i == 0x5c) {
82 std::string_view
input)
noexcept {
90 for (;
i + 7 <
input.size();
i += 8) {
100 for (;
i <
input.size();
i++) {
107 std::string_view
input)
noexcept {
108 if (
input.back() ==
'.') {
109 if (
input.size() > 254)
return false;
110 }
else if (
input.size() > 253)
Declarations for URL specific checkers used within Ada.
#define ada_really_inline
Includes the definitions for validation functions.
static constexpr std::array< uint8_t, 256 > path_signature_table
constexpr bool is_digit(char x) noexcept
tl::expected< result_type, ada::errors > result
ada_warn_unused ada::result< result_type > parse(std::string_view input, const result_type *base_url=nullptr)