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)
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)
bool | valid_name_code_point (char32_t code_point, bool first)
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)
constexpr bool | is_ascii_letter (char32_t c) noexcept
constexpr bool | is_ascii_letter_or_digit (char32_t c) noexcept

## Variables

const uint32_t | mappings [5264]
const uint32_t | table [8198][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 []
const uint32_t | id_continue [1418][2]
const uint32_t | id_start [776][2]

## Detailed Description

Unicode Standard Annex #15

UNICODE NORMALIZATION FORMS https://www.unicode.org/reports/tr15/

See https://github.com/uni-algo/uni-algo/blob/c612968c5ed3ace39bde4c894c24286c5f2c7fe2/include/uni_algo/impl/data/data_norm.h for reference.

## Enumeration Type Documentation

## direction

enum ada::idna::direction : uint8_t

Enumerator
NONE |
BN |
CS |
ES |
ON |
EN |
L |
R |
NSM |
AL |
AN |
ET |
WS |
RLO |
LRO |
PDF |
RLE |
RLI |
FSI |
PDI |
LRI |
B |
S |
LRE |

Definition at line 8096 of file ada_idna.cpp.

## Function Documentation

## adapt()

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

static constexpr

Definition at line 7887 of file ada_idna.cpp.

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

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

## ascii_map()

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

Definition at line 2678 of file ada_idna.cpp.

Referenced by from_ascii_to_ascii(), and LLVMFuzzerTestOneInput().

## char_to_digit_value()

constexpr int32_t ada::idna::char_to_digit_value | ( | char | value | ) |

static constexpr

Definition at line 7877 of file ada_idna.cpp.

Referenced by punycode_to_utf32(), and verify_punycode().

## compose()

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

Compose the domain_name string to Unicode Normalization Form C.

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

Definition at line 7771 of file ada_idna.cpp.

References composition_block, composition_data, composition_index, get_ccc(), hangul_lbase, hangul_lcount, hangul_sbase, hangul_scount, hangul_tbase, hangul_tcount, hangul_vbase, and hangul_vcount.

Referenced by normalize().

## compute_decomposition_length()

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

noexcept

Definition at line 7664 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 9472 of file ada_idna.cpp.

References is_forbidden_domain_code_point().

Referenced by LLVMFuzzerTestOneInput().

## decompose()

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

Definition at line 7694 of file ada_idna.cpp.

References decomposition_block, decomposition_data, decomposition_index, hangul_lbase, hangul_ncount, hangul_sbase, hangul_scount, hangul_tbase, hangul_tcount, and hangul_vbase.

Referenced by decompose_nfc().

## 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 7758 of file ada_idna.cpp.

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

Referenced by normalize().

## digit_to_char()

constexpr char ada::idna::digit_to_char | ( | int32_t | digit | ) |

static constexpr

Definition at line 7883 of file ada_idna.cpp.

Referenced by utf32_to_punycode().

## find_direction()

direction ada::idna::find_direction | ( | uint32_t | code_point | ) |

inline static noexcept

Definition at line 8858 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()

size_t ada::idna::find_last_not_of_nsm | ( | const std::u32string_view | label | ) |

inline static noexcept

Definition at line 8874 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 2656 of file ada_idna.cpp.

References table.

Referenced by map().

## from_ascii_to_ascii()

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

static

Definition at line 9477 of file ada_idna.cpp.

References ascii_map(), is_ascii(), 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 7736 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 9444 of file ada_idna.cpp.

## is_ascii() [2/2]

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

constexpr

Definition at line 9435 of file ada_idna.cpp.

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

## is_ascii_letter()

bool ada::idna::is_ascii_letter | ( | char32_t | c | ) |

constexpr noexcept

Definition at line 10288 of file ada_idna.cpp.

Referenced by valid_name_code_point().

## is_ascii_letter_or_digit()

bool ada::idna::is_ascii_letter_or_digit | ( | char32_t | c | ) |

constexpr noexcept

Definition at line 10292 of file ada_idna.cpp.

Referenced by valid_name_code_point().

## is_forbidden_domain_code_point()

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

inline noexcept

Definition at line 9468 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 | ) |

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

Definition at line 8895 of file ada_idna.cpp.

References AL, AN, BN, CS, EN, ES, ET, find_direction(), find_last_not_of_nsm(), is_rtl_label(), L, NSM, ON, and R.

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

## is_rtl_label()

bool ada::idna::is_rtl_label | ( | const std::u32string_view | label | ) |

inline static noexcept

Definition at line 8884 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 2704 of file ada_idna.cpp.

References find_range_index(), mappings, and table.

Referenced by from_ascii_to_ascii(), LLVMFuzzerTestOneInput(), 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

Definition at line 7852 of file ada_idna.cpp.

References compose(), and decompose_nfc().

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

## punycode_to_utf32()

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

Definition at line 7902 of file ada_idna.cpp.

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

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

## sort_marks()

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

Definition at line 7742 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 | ) |

Definition at line 9539 of file ada_idna.cpp.

References from_ascii_to_ascii(), is_ascii(), is_label_valid(), map(), normalize(), punycode_to_utf32(), utf32_length_from_utf8(), utf32_to_punycode(), and utf8_to_utf32().

Referenced by ada_idna_to_ascii(), and LLVMFuzzerTestOneInput().

## to_unicode()

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

Definition at line 9655 of file ada_idna.cpp.

References is_ascii(), punycode_to_utf32(), utf32_to_utf8(), utf8_length_from_utf32(), and verify_punycode().

Referenced by ada_idna_to_unicode(), and LLVMFuzzerTestOneInput().

## utf32_length_from_utf8()

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

Definition at line 122 of file ada_idna.cpp.

Referenced by LLVMFuzzerTestOneInput(), and to_ascii().

## utf32_to_punycode()

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

Definition at line 8027 of file ada_idna.cpp.

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

Referenced by LLVMFuzzerTestOneInput(), and 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 131 of file ada_idna.cpp.

Referenced by LLVMFuzzerTestOneInput(), and to_unicode().

## utf8_length_from_utf32()

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

Definition at line 109 of file ada_idna.cpp.

Referenced by LLVMFuzzerTestOneInput(), and 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 12 of file ada_idna.cpp.

Referenced by LLVMFuzzerTestOneInput(), and to_ascii().

## valid_name_code_point()

bool ada::idna::valid_name_code_point | ( | char32_t | code_point,
|  | bool | first )

Definition at line 10297 of file ada_idna.cpp.

References id_continue, id_start, is_ascii_letter(), and is_ascii_letter_or_digit().

## verify_punycode()

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

Definition at line 7966 of file ada_idna.cpp.

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

Referenced by LLVMFuzzerTestOneInput(), and to_unicode().

## Variable Documentation

## base

int32_t ada::idna::base = 36

constexpr

Definition at line 7869 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 5890 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 5659 of file ada_idna.cpp.

Referenced by get_ccc().

## composition_block

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

Definition at line 6965 of file ada_idna.cpp.

Referenced by compose().

## composition_data

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

Definition at line 7471 of file ada_idna.cpp.

Referenced by compose().

## composition_index

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

Definition at line 6766 of file ada_idna.cpp.

Referenced by compose().

## damp

int32_t ada::idna::damp = 700

constexpr

Definition at line 7873 of file ada_idna.cpp.

Referenced by adapt().

## decomposition_block

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

Definition at line 3001 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 4645 of file ada_idna.cpp.

Referenced by decompose().

## decomposition_index

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

Definition at line 2769 of file ada_idna.cpp.

Referenced by compute_decomposition_length(), and decompose().

## dir_table

directions ada::idna::dir_table[]

static

Definition at line 8129 of file ada_idna.cpp.

Referenced by find_direction().

## hangul_lbase

char32_t ada::idna::hangul_lbase = 0x1100

constexpr

Definition at line 7656 of file ada_idna.cpp.

Referenced by compose(), and decompose().

## hangul_lcount

char32_t ada::idna::hangul_lcount = 19

constexpr

Definition at line 7657 of file ada_idna.cpp.

Referenced by compose().

## hangul_ncount

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

constexpr

Definition at line 7660 of file ada_idna.cpp.

Referenced by decompose().

## hangul_sbase

char32_t ada::idna::hangul_sbase = 0xAC00

constexpr

Definition at line 7653 of file ada_idna.cpp.

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

## hangul_scount

char32_t ada::idna::hangul_scount

constexpr

Initial value:
=
hangul_lcount * hangul_vcount * hangul_tcount
ada::idna::hangul_tcount
constexpr char32_t hangul_tcount
Definition ada_idna.cpp:7659
ada::idna::hangul_lcount
constexpr char32_t hangul_lcount
Definition ada_idna.cpp:7657
ada::idna::hangul_vcount
constexpr char32_t hangul_vcount
Definition ada_idna.cpp:7658

Definition at line 7661 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 7654 of file ada_idna.cpp.

Referenced by compose(), and decompose().

## hangul_tcount

char32_t ada::idna::hangul_tcount = 28

constexpr

Definition at line 7659 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 7655 of file ada_idna.cpp.

Referenced by compose(), and decompose().

## hangul_vcount

char32_t ada::idna::hangul_vcount = 21

constexpr

Definition at line 7658 of file ada_idna.cpp.

Referenced by compose().

## id_continue

const uint32_t ada::idna::id_continue[1418][2]

Definition at line 9726 of file ada_idna.cpp.

Referenced by valid_name_code_point().

## id_start

const uint32_t ada::idna::id_start[776][2]

Definition at line 10084 of file ada_idna.cpp.

Referenced by valid_name_code_point().

## initial_bias

int32_t ada::idna::initial_bias = 72

constexpr

Definition at line 7874 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 7875 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[]

static constexpr

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 9453 of file ada_idna.cpp.

Referenced by is_forbidden_domain_code_point().

## mappings

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

Definition at line 203 of file ada_idna.cpp.

Referenced by map().

## skew

int32_t ada::idna::skew = 38

constexpr

Definition at line 7872 of file ada_idna.cpp.

Referenced by adapt().

## table

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

Definition at line 593 of file ada_idna.cpp.

Referenced by find_range_index(), and map().

## tmax

int32_t ada::idna::tmax = 26

constexpr

Definition at line 7871 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 7870 of file ada_idna.cpp.

Referenced by adapt().