Ada 2.8.0
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 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 []
 

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 19 of file unicode.cpp.

◆ percent_encode_index()

ada_really_inline size_t ada::unicode::percent_encode_index ( 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.

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

Variable Documentation

◆ hex_to_binary_table

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 351 of file unicode.cpp.

◆ is_alnum_plus_table

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 260 of file unicode.cpp.

◆ is_forbidden_domain_code_point_table

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 179 of file unicode.cpp.

◆ is_forbidden_domain_code_point_table_or_upper

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 219 of file unicode.cpp.

◆ is_forbidden_host_code_point_table

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 164 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 290 of file unicode.cpp.