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

Classes

struct  directions
 

Enumerations

enum  direction : uint8_t {
  NONE , BN , CS , ES ,
  ON , EN , L , R ,
  NSM , AL , AN , ET ,
  WS , RLO , LRO , PDF ,
  RLE , RLI , FSI , PDI ,
  LRI , B , S , LRE
}
 

Functions

size_t utf8_to_utf32 (const char *buf, size_t len, char32_t *utf32_output)
 
size_t utf8_length_from_utf32 (const char32_t *buf, size_t len)
 
size_t utf32_length_from_utf8 (const char *buf, size_t len)
 
size_t utf32_to_utf8 (const char32_t *buf, size_t len, char *utf8_output)
 
void ascii_map (char *input, size_t length)
 
bool ascii_has_upper_case (char *input, size_t length)
 
std::u32string map (std::u32string_view input)
 
void normalize (std::u32string &input)
 
bool punycode_to_utf32 (std::string_view input, std::u32string &out)
 
bool verify_punycode (std::string_view input)
 
bool utf32_to_punycode (std::u32string_view input, std::string &out)
 
bool is_label_valid (std::u32string_view label)
 
std::string to_ascii (std::string_view ut8_string)
 
bool contains_forbidden_domain_code_point (std::string_view ascii_string)
 
bool constexpr is_ascii (std::u32string_view view)
 
bool constexpr is_ascii (std::string_view view)
 
std::string to_unicode (std::string_view input)
 
uint32_t find_range_index (uint32_t key)
 
std::pair< bool, size_t > compute_decomposition_length (const std::u32string_view input) noexcept
 
void decompose (std::u32string &input, size_t additional_elements)
 
uint8_t get_ccc (char32_t c) noexcept
 
void sort_marks (std::u32string &input)
 
void decompose_nfc (std::u32string &input)
 
void compose (std::u32string &input)
 
static constexpr int32_t char_to_digit_value (char value)
 
static constexpr char digit_to_char (int32_t digit)
 
static constexpr int32_t adapt (int32_t d, int32_t n, bool firsttime)
 
static direction find_direction (uint32_t code_point) noexcept
 
static size_t find_last_not_of_nsm (const std::u32string_view label) noexcept
 
static bool is_rtl_label (const std::u32string_view label) noexcept
 
bool is_forbidden_domain_code_point (const char c) noexcept
 
static std::string from_ascii_to_ascii (std::string_view ut8_string)
 

Variables

const uint32_t mappings [5164]
 
const uint32_t table [8000][2]
 
const uint8_t decomposition_index [4352]
 
const uint16_t decomposition_block [67][257]
 
const char32_t decomposition_data [9102]
 
const uint8_t canonical_combining_class_index [4352]
 
const uint8_t canonical_combining_class_block [67][256]
 
const uint8_t composition_index [4352]
 
const uint16_t composition_block [67][257]
 
const char32_t composition_data [1883]
 
constexpr char32_t hangul_sbase = 0xAC00
 
constexpr char32_t hangul_tbase = 0x11A7
 
constexpr char32_t hangul_vbase = 0x1161
 
constexpr char32_t hangul_lbase = 0x1100
 
constexpr char32_t hangul_lcount = 19
 
constexpr char32_t hangul_vcount = 21
 
constexpr char32_t hangul_tcount = 28
 
constexpr char32_t hangul_ncount = hangul_vcount * hangul_tcount
 
constexpr char32_t hangul_scount
 
constexpr int32_t base = 36
 
constexpr int32_t tmin = 1
 
constexpr int32_t tmax = 26
 
constexpr int32_t skew = 38
 
constexpr int32_t damp = 700
 
constexpr int32_t initial_bias = 72
 
constexpr uint32_t initial_n = 128
 
static directions dir_table []
 
static constexpr uint8_t is_forbidden_domain_code_point_table []
 

Detailed Description

Enumeration Type Documentation

◆ direction

enum ada::idna::direction : uint8_t
Enumerator
NONE 
BN 
CS 
ES 
ON 
EN 
NSM 
AL 
AN 
ET 
WS 
RLO 
LRO 
PDF 
RLE 
RLI 
FSI 
PDI 
LRI 
LRE 

Definition at line 8056 of file ada_idna.cpp.

Function Documentation

◆ adapt()

static constexpr int32_t ada::idna::adapt ( int32_t d,
int32_t n,
bool firsttime )
staticconstexpr

Definition at line 7853 of file ada_idna.cpp.

References base, damp, skew, tmax, and tmin.

Referenced by punycode_to_utf32(), utf32_to_punycode(), and verify_punycode().

◆ ascii_has_upper_case()

bool ada::idna::ascii_has_upper_case ( char * input,
size_t length )

Definition at line 2620 of file ada_idna.cpp.

Referenced by LLVMFuzzerTestOneInput().

◆ ascii_map()

void ada::idna::ascii_map ( char * input,
size_t length )

Definition at line 2644 of file ada_idna.cpp.

Referenced by from_ascii_to_ascii().

◆ char_to_digit_value()

static constexpr int32_t ada::idna::char_to_digit_value ( char value)
staticconstexpr

Definition at line 7843 of file ada_idna.cpp.

Referenced by punycode_to_utf32(), and verify_punycode().

◆ compose()

void ada::idna::compose ( std::u32string & input)

◆ compute_decomposition_length()

std::pair< bool, size_t > ada::idna::compute_decomposition_length ( const std::u32string_view input)
noexcept

Definition at line 7630 of file ada_idna.cpp.

References decomposition_block, decomposition_index, hangul_sbase, hangul_scount, and hangul_tcount.

Referenced by decompose_nfc().

◆ contains_forbidden_domain_code_point()

bool ada::idna::contains_forbidden_domain_code_point ( std::string_view ascii_string)

Definition at line 9427 of file ada_idna.cpp.

References is_forbidden_domain_code_point().

◆ decompose()

void ada::idna::decompose ( std::u32string & input,
size_t additional_elements )

◆ decompose_nfc()

void ada::idna::decompose_nfc ( std::u32string & input)

Decompose the domain_name string to Unicode Normalization Form C.

See also
https://www.unicode.org/reports/tr46/#ProcessingStepDecompose

Definition at line 7724 of file ada_idna.cpp.

References compute_decomposition_length(), decompose(), and sort_marks().

Referenced by normalize().

◆ digit_to_char()

static constexpr char ada::idna::digit_to_char ( int32_t digit)
staticconstexpr

Definition at line 7849 of file ada_idna.cpp.

Referenced by utf32_to_punycode().

◆ find_direction()

static direction ada::idna::find_direction ( uint32_t code_point)
inlinestaticnoexcept

Definition at line 8818 of file ada_idna.cpp.

References dir_table, ada::idna::directions::final_code, and NONE.

Referenced by find_last_not_of_nsm(), is_label_valid(), and is_rtl_label().

◆ find_last_not_of_nsm()

static size_t ada::idna::find_last_not_of_nsm ( const std::u32string_view label)
inlinestaticnoexcept

Definition at line 8834 of file ada_idna.cpp.

References find_direction(), and NSM.

Referenced by is_label_valid().

◆ find_range_index()

uint32_t ada::idna::find_range_index ( uint32_t key)

Definition at line 2598 of file ada_idna.cpp.

References table.

Referenced by map().

◆ from_ascii_to_ascii()

static std::string ada::idna::from_ascii_to_ascii ( std::string_view ut8_string)
static

Definition at line 9433 of file ada_idna.cpp.

References ascii_map(), is_label_valid(), map(), normalize(), and punycode_to_utf32().

Referenced by to_ascii().

◆ get_ccc()

uint8_t ada::idna::get_ccc ( char32_t c)
noexcept

Definition at line 7702 of file ada_idna.cpp.

References canonical_combining_class_block, and canonical_combining_class_index.

Referenced by compose(), and sort_marks().

◆ is_ascii() [1/2]

bool constexpr ada::idna::is_ascii ( std::string_view view)
constexpr

Definition at line 9399 of file ada_idna.cpp.

◆ is_ascii() [2/2]

bool constexpr ada::idna::is_ascii ( std::u32string_view view)
constexpr

Definition at line 9390 of file ada_idna.cpp.

Referenced by to_ascii(), and to_unicode().

◆ is_forbidden_domain_code_point()

bool ada::idna::is_forbidden_domain_code_point ( const char c)
inlinenoexcept

Definition at line 9423 of file ada_idna.cpp.

References is_forbidden_domain_code_point_table.

Referenced by contains_forbidden_domain_code_point().

◆ is_label_valid()

bool ada::idna::is_label_valid ( std::u32string_view label)

◆ is_rtl_label()

static bool ada::idna::is_rtl_label ( const std::u32string_view label)
inlinestaticnoexcept

Definition at line 8844 of file ada_idna.cpp.

References AL, AN, find_direction(), and R.

Referenced by is_label_valid().

◆ map()

std::u32string ada::idna::map ( std::u32string_view input)

Definition at line 2670 of file ada_idna.cpp.

References find_range_index(), mappings, and table.

Referenced by from_ascii_to_ascii(), and to_ascii().

◆ normalize()

void ada::idna::normalize ( std::u32string & input)

Normalize the domain_name string to Unicode Normalization Form C.

See also
https://www.unicode.org/reports/tr46/#ProcessingStepNormalize

Normalize the domain_name string to Unicode Normalization Form C.

See also
https://www.unicode.org/reports/tr46/#ProcessingStepNormalize

Definition at line 7818 of file ada_idna.cpp.

References compose(), and decompose_nfc().

Referenced by from_ascii_to_ascii(), and to_ascii().

◆ punycode_to_utf32()

bool ada::idna::punycode_to_utf32 ( std::string_view input,
std::u32string & out )

Definition at line 7868 of file ada_idna.cpp.

References adapt(), base, char_to_digit_value(), initial_bias, initial_n, and tmax.

Referenced by from_ascii_to_ascii(), to_ascii(), and to_unicode().

◆ sort_marks()

void ada::idna::sort_marks ( std::u32string & input)

Definition at line 7708 of file ada_idna.cpp.

References get_ccc().

Referenced by decompose_nfc().

◆ to_ascii()

std::string ada::idna::to_ascii ( std::string_view ut8_string)

◆ to_unicode()

std::string ada::idna::to_unicode ( std::string_view input)

◆ utf32_length_from_utf8()

size_t ada::idna::utf32_length_from_utf8 ( const char * buf,
size_t len )

Definition at line 121 of file ada_idna.cpp.

Referenced by to_ascii().

◆ utf32_to_punycode()

bool ada::idna::utf32_to_punycode ( std::u32string_view input,
std::string & out )

Definition at line 7987 of file ada_idna.cpp.

References adapt(), base, digit_to_char(), initial_bias, initial_n, and tmax.

Referenced by to_ascii().

◆ utf32_to_utf8()

size_t ada::idna::utf32_to_utf8 ( const char32_t * buf,
size_t len,
char * utf8_output )

Definition at line 130 of file ada_idna.cpp.

Referenced by to_unicode().

◆ utf8_length_from_utf32()

size_t ada::idna::utf8_length_from_utf32 ( const char32_t * buf,
size_t len )

Definition at line 108 of file ada_idna.cpp.

Referenced by to_unicode().

◆ utf8_to_utf32()

size_t ada::idna::utf8_to_utf32 ( const char * buf,
size_t len,
char32_t * utf32_output )

Definition at line 11 of file ada_idna.cpp.

Referenced by to_ascii().

◆ verify_punycode()

bool ada::idna::verify_punycode ( std::string_view input)

Definition at line 7929 of file ada_idna.cpp.

References adapt(), base, char_to_digit_value(), initial_bias, initial_n, and tmax.

Referenced by to_unicode().

Variable Documentation

◆ base

int32_t ada::idna::base = 36
constexpr

Definition at line 7835 of file ada_idna.cpp.

Referenced by adapt(), punycode_to_utf32(), utf32_to_punycode(), and verify_punycode().

◆ canonical_combining_class_block

const uint8_t ada::idna::canonical_combining_class_block[67][256]

Definition at line 5856 of file ada_idna.cpp.

Referenced by get_ccc().

◆ canonical_combining_class_index

const uint8_t ada::idna::canonical_combining_class_index[4352]

Definition at line 5625 of file ada_idna.cpp.

Referenced by get_ccc().

◆ composition_block

const uint16_t ada::idna::composition_block[67][257]

Definition at line 6931 of file ada_idna.cpp.

Referenced by compose().

◆ composition_data

const char32_t ada::idna::composition_data[1883]

Definition at line 7437 of file ada_idna.cpp.

Referenced by compose().

◆ composition_index

const uint8_t ada::idna::composition_index[4352]

Definition at line 6732 of file ada_idna.cpp.

Referenced by compose().

◆ damp

int32_t ada::idna::damp = 700
constexpr

Definition at line 7839 of file ada_idna.cpp.

Referenced by adapt().

◆ decomposition_block

const uint16_t ada::idna::decomposition_block[67][257]

Definition at line 2967 of file ada_idna.cpp.

Referenced by compute_decomposition_length(), and decompose().

◆ decomposition_data

const char32_t ada::idna::decomposition_data[9102]

Definition at line 4611 of file ada_idna.cpp.

Referenced by decompose().

◆ decomposition_index

const uint8_t ada::idna::decomposition_index[4352]

Definition at line 2735 of file ada_idna.cpp.

Referenced by compute_decomposition_length(), and decompose().

◆ dir_table

directions ada::idna::dir_table[]
static

Definition at line 8089 of file ada_idna.cpp.

Referenced by find_direction().

◆ hangul_lbase

char32_t ada::idna::hangul_lbase = 0x1100
constexpr

Definition at line 7622 of file ada_idna.cpp.

Referenced by compose(), and decompose().

◆ hangul_lcount

char32_t ada::idna::hangul_lcount = 19
constexpr

Definition at line 7623 of file ada_idna.cpp.

Referenced by compose().

◆ hangul_ncount

char32_t ada::idna::hangul_ncount = hangul_vcount * hangul_tcount
constexpr

Definition at line 7626 of file ada_idna.cpp.

Referenced by decompose().

◆ hangul_sbase

char32_t ada::idna::hangul_sbase = 0xAC00
constexpr

Definition at line 7619 of file ada_idna.cpp.

Referenced by compose(), compute_decomposition_length(), and decompose().

◆ hangul_scount

char32_t ada::idna::hangul_scount
constexpr
Initial value:
=
constexpr char32_t hangul_tcount
constexpr char32_t hangul_lcount
constexpr char32_t hangul_vcount

Definition at line 7627 of file ada_idna.cpp.

Referenced by compose(), compute_decomposition_length(), and decompose().

◆ hangul_tbase

char32_t ada::idna::hangul_tbase = 0x11A7
constexpr

Definition at line 7620 of file ada_idna.cpp.

Referenced by compose(), and decompose().

◆ hangul_tcount

char32_t ada::idna::hangul_tcount = 28
constexpr

Definition at line 7625 of file ada_idna.cpp.

Referenced by compose(), compute_decomposition_length(), and decompose().

◆ hangul_vbase

char32_t ada::idna::hangul_vbase = 0x1161
constexpr

Definition at line 7621 of file ada_idna.cpp.

Referenced by compose(), and decompose().

◆ hangul_vcount

char32_t ada::idna::hangul_vcount = 21
constexpr

Definition at line 7624 of file ada_idna.cpp.

Referenced by compose().

◆ initial_bias

int32_t ada::idna::initial_bias = 72
constexpr

Definition at line 7840 of file ada_idna.cpp.

Referenced by punycode_to_utf32(), utf32_to_punycode(), and verify_punycode().

◆ initial_n

uint32_t ada::idna::initial_n = 128
constexpr

Definition at line 7841 of file ada_idna.cpp.

Referenced by punycode_to_utf32(), utf32_to_punycode(), and verify_punycode().

◆ is_forbidden_domain_code_point_table

uint8_t ada::idna::is_forbidden_domain_code_point_table[]
staticconstexpr
Initial value:
= {
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 1, 1, 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, 1, 1, 1, 1, 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, 0, 0, 0, 1, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}

Definition at line 9408 of file ada_idna.cpp.

Referenced by is_forbidden_domain_code_point().

◆ mappings

const uint32_t ada::idna::mappings[5164]

Definition at line 202 of file ada_idna.cpp.

Referenced by map().

◆ skew

int32_t ada::idna::skew = 38
constexpr

Definition at line 7838 of file ada_idna.cpp.

Referenced by adapt().

◆ table

const uint32_t ada::idna::table[8000][2]

Definition at line 584 of file ada_idna.cpp.

Referenced by find_range_index(), and map().

◆ tmax

int32_t ada::idna::tmax = 26
constexpr

Definition at line 7837 of file ada_idna.cpp.

Referenced by adapt(), punycode_to_utf32(), utf32_to_punycode(), and verify_punycode().

◆ tmin

int32_t ada::idna::tmin = 1
constexpr

Definition at line 7836 of file ada_idna.cpp.

Referenced by adapt().