Ada 2.7.8
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()

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

Definition at line 19 of file unicode.cpp.

References ada::parse().

◆ 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.

References ada::parse().

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

Variable Documentation

◆ hex_to_binary_table

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

◆ is_alnum_plus_table

constexpr 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++) {
if (c >= '0' && c <= '9') {
result[c] = true;
} else if (c >= 'a' && c <= 'z') {
result[c] = true;
} else if (c >= 'A' && c <= 'Z') {
result[c] = true;
} else if (c == '+' || c == '-' || c == '.') {
result[c] = true;
}
}
return result;
}()
tl::expected< result_type, ada::errors > result

Definition at line 249 of file unicode.cpp.

◆ is_forbidden_domain_code_point_table

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

◆ is_forbidden_domain_code_point_table_or_upper

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

◆ is_forbidden_host_code_point_table

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

◆ table_is_double_dot_path_segment

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

Definition at line 286 of file unicode.cpp.