Ada 2.9.2
Fast spec-compliant URL parser
Loading...
Searching...
No Matches
ada::unicode Namespace Reference

Includes the declarations for unicode operations. More...

Functions

ada_really_inline size_t percent_encode_index (const std::string_view input, const uint8_t character_set[])
constexpr bool is_tabs_or_newline (char c) noexcept
constexpr uint64_t broadcast (uint8_t v) noexcept

Variables

static constexpr std::array< uint8_t, 256 > is_forbidden_host_code_point_table
static constexpr std::array< uint8_t, 256 > is_forbidden_domain_code_point_table
static constexpr std::array< uint8_t, 256 > is_forbidden_domain_code_point_table_or_upper
static constexpr std::array< bool, 256 > is_alnum_plus_table
constexpr std::string_view table_is_double_dot_path_segment []
static constexpr char hex_to_binary_table []
static constexpr std::array< uint8_t, 256 > is_forbidden_host_code_point_table
static constexpr std::array< uint8_t, 256 > is_forbidden_domain_code_point_table
static constexpr std::array< uint8_t, 256 > is_forbidden_domain_code_point_table_or_upper
static constexpr std::array< bool, 256 > is_alnum_plus_table
static constexpr char hex_to_binary_table []

Detailed Description

Includes the declarations for unicode operations.

Includes the definitions for unicode operations.

Unicode operations. These functions are not part of our public API and may change at any time.

private

Unicode operations. These functions are not part of our public API and may change at any time.

Function Documentation

◆ broadcast()

uint64_t ada::unicode::broadcast ( uint8_t v)
constexprnoexcept

Definition at line 9802 of file ada.cpp.

◆ is_tabs_or_newline()

bool ada::unicode::is_tabs_or_newline ( char c)
constexprnoexcept

Definition at line 9798 of file ada.cpp.

◆ percent_encode_index()

ada_really_inline size_t ada::unicode::percent_encode_index ( const std::string_view input,
const uint8_t character_set[] )

Returns the index at which percent encoding should start, or (equivalently), the length of the prefix that does not require percent encoding.

Definition at line 19 of file unicode-inl.h.

References ada_really_inline.

Referenced by ada::url_aggregator::set_password(), and ada::url_aggregator::set_username().

Variable Documentation

◆ hex_to_binary_table [1/2]

char ada::unicode::hex_to_binary_table[]
staticconstexpr
Initial value:
= {
0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 0, 0, 0, 0, 0, 0, 10, 11,
12, 13, 14, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 11, 12, 13, 14, 15}

Definition at line 10124 of file ada.cpp.

◆ hex_to_binary_table [2/2]

char ada::unicode::hex_to_binary_table[]
staticconstexpr
Initial value:
= {
0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 0, 0, 0, 0, 0, 0, 10, 11,
12, 13, 14, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 11, 12, 13, 14, 15}

Definition at line 345 of file unicode.cpp.

◆ is_alnum_plus_table [1/2]

std::array<bool, 256> ada::unicode::is_alnum_plus_table
staticconstexpr
Initial value:
= []() constexpr {
std::array<bool, 256> result{};
for (size_t c = 0; c < 256; c++) {
result[c] = (c >= '0' && c <= '9') || (c >= 'a' && c <= 'z') ||
(c >= 'A' && c <= 'Z') || c == '+' || c == '-' || c == '.';
}
return result;
}()
tl::expected< result_type, ada::errors > result

Definition at line 10033 of file ada.cpp.

◆ is_alnum_plus_table [2/2]

std::array<bool, 256> ada::unicode::is_alnum_plus_table
staticconstexpr
Initial value:
= []() constexpr {
std::array<bool, 256> result{};
for (size_t c = 0; c < 256; c++) {
result[c] = (c >= '0' && c <= '9') || (c >= 'a' && c <= 'z') ||
(c >= 'A' && c <= 'Z') || c == '+' || c == '-' || c == '.';
}
return result;
}()

Definition at line 254 of file unicode.cpp.

◆ is_forbidden_domain_code_point_table [1/2]

std::array<uint8_t, 256> ada::unicode::is_forbidden_domain_code_point_table
staticconstexpr
Initial value:
=
[]() constexpr {
std::array<uint8_t, 256> result{};
for (uint8_t c : {'\0', '\x09', '\x0a', '\x0d', ' ', '#', '/', ':', '<',
'>', '?', '@', '[', '\\', ']', '^', '|', '%'}) {
result[c] = true;
}
for (uint8_t c = 0; c <= 32; c++) {
result[c] = true;
}
for (size_t c = 127; c < 255; c++) {
result[c] = true;
}
return result;
}()

Definition at line 9952 of file ada.cpp.

◆ is_forbidden_domain_code_point_table [2/2]

std::array<uint8_t, 256> ada::unicode::is_forbidden_domain_code_point_table
staticconstexpr
Initial value:
=
[]() constexpr {
std::array<uint8_t, 256> result{};
for (uint8_t c : {'\0', '\x09', '\x0a', '\x0d', ' ', '#', '/', ':', '<',
'>', '?', '@', '[', '\\', ']', '^', '|', '%'}) {
result[c] = true;
}
for (uint8_t c = 0; c <= 32; c++) {
result[c] = true;
}
for (size_t c = 127; c < 255; c++) {
result[c] = true;
}
return result;
}()

Definition at line 173 of file unicode.cpp.

◆ is_forbidden_domain_code_point_table_or_upper [1/2]

std::array<uint8_t, 256> ada::unicode::is_forbidden_domain_code_point_table_or_upper
staticconstexpr
Initial value:
= []() constexpr {
std::array<uint8_t, 256> result{};
for (uint8_t c : {'\0', '\x09', '\x0a', '\x0d', ' ', '#', '/', ':', '<',
'>', '?', '@', '[', '\\', ']', '^', '|', '%'}) {
result[c] = 1;
}
for (uint8_t c = 'A'; c <= 'Z'; c++) {
result[c] = 2;
}
for (uint8_t c = 0; c <= 32; c++) {
result[c] = 1;
}
for (size_t c = 127; c < 255; c++) {
result[c] = 1;
}
return result;
}()

Definition at line 9992 of file ada.cpp.

◆ is_forbidden_domain_code_point_table_or_upper [2/2]

std::array<uint8_t, 256> ada::unicode::is_forbidden_domain_code_point_table_or_upper
staticconstexpr
Initial value:
= []() constexpr {
std::array<uint8_t, 256> result{};
for (uint8_t c : {'\0', '\x09', '\x0a', '\x0d', ' ', '#', '/', ':', '<',
'>', '?', '@', '[', '\\', ']', '^', '|', '%'}) {
result[c] = 1;
}
for (uint8_t c = 'A'; c <= 'Z'; c++) {
result[c] = 2;
}
for (uint8_t c = 0; c <= 32; c++) {
result[c] = 1;
}
for (size_t c = 127; c < 255; c++) {
result[c] = 1;
}
return result;
}()

Definition at line 213 of file unicode.cpp.

◆ is_forbidden_host_code_point_table [1/2]

std::array<uint8_t, 256> ada::unicode::is_forbidden_host_code_point_table
staticconstexpr
Initial value:
=
[]() constexpr {
std::array<uint8_t, 256> result{};
for (uint8_t c : {'\0', '\x09', '\x0a', '\x0d', ' ', '#', '/', ':', '<',
'>', '?', '@', '[', '\\', ']', '^', '|'}) {
result[c] = true;
}
return result;
}()

Definition at line 9937 of file ada.cpp.

◆ is_forbidden_host_code_point_table [2/2]

std::array<uint8_t, 256> ada::unicode::is_forbidden_host_code_point_table
staticconstexpr
Initial value:
=
[]() constexpr {
std::array<uint8_t, 256> result{};
for (uint8_t c : {'\0', '\x09', '\x0a', '\x0d', ' ', '#', '/', ':', '<',
'>', '?', '@', '[', '\\', ']', '^', '|'}) {
result[c] = true;
}
return result;
}()

Definition at line 158 of file unicode.cpp.

◆ table_is_double_dot_path_segment

std::string_view ada::unicode::table_is_double_dot_path_segment
constexpr
Initial value:
= {
"..", "%2e.", ".%2e", "%2e%2e"}

Definition at line 10063 of file ada.cpp.