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

## 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 | ) |

constexpr noexcept

Definition at line 33 of file unicode.cpp.

## is_tabs_or_newline()

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

constexpr noexcept

Definition at line 29 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.

References ada_really_inline, and ada::character_sets::bit_at().

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

static constexpr

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

## is_alnum_plus_table

std::array<bool, 256> ada::unicode::is_alnum_plus_table

static constexpr

Initial value:
= []() consteval {
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;
}()
ada::result
tl::expected< result_type, ada::errors > result
Definition implementation.h:44

Definition at line 342 of file unicode.cpp.

## is_forbidden_domain_code_point_table

std::array<uint8_t, 256> ada::unicode::is_forbidden_domain_code_point_table

static constexpr

Initial value:
=
[]() consteval {
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 < 256; c++) {
result[c] = true;
}
return result;
}()

Definition at line 261 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

static constexpr

Initial value:
= []() consteval {
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 < 256; c++) {
result[c] = 1;
}
return result;
}()

Definition at line 301 of file unicode.cpp.

## is_forbidden_host_code_point_table

std::array<uint8_t, 256> ada::unicode::is_forbidden_host_code_point_table

static constexpr

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

Definition at line 246 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 383 of file unicode.cpp.