MCPcopy Create free account
hub / github.com/NativeScript/android / decompose

Function decompose

test-app/runtime/src/main/cpp/ada/ada.cpp:7816–7856  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

7814}
7815
7816void decompose(std::u32string& input, size_t additional_elements) {
7817 input.resize(input.size() + additional_elements);
7818 for (size_t descending_idx = input.size(),
7819 input_count = descending_idx - additional_elements;
7820 input_count--;) {
7821 if (input[input_count] >= hangul_sbase &&
7822 input[input_count] < hangul_sbase + hangul_scount) {
7823 // Hangul decomposition.
7824 char32_t s_index = input[input_count] - hangul_sbase;
7825 if (s_index % hangul_tcount != 0) {
7826 input[--descending_idx] = hangul_tbase + s_index % hangul_tcount;
7827 }
7828 input[--descending_idx] =
7829 hangul_vbase + (s_index % hangul_ncount) / hangul_tcount;
7830 input[--descending_idx] = hangul_lbase + s_index / hangul_ncount;
7831 } else if (input[input_count] < 0x110000) {
7832 // Check decomposition_data.
7833 const uint16_t* decomposition =
7834 decomposition_block[decomposition_index[input[input_count] >> 8]] +
7835 (input[input_count] % 256);
7836 uint16_t decomposition_length =
7837 (decomposition[1] >> 2) - (decomposition[0] >> 2);
7838 if (decomposition_length > 0 && (decomposition[0] & 1)) {
7839 decomposition_length = 0;
7840 }
7841 if (decomposition_length > 0) {
7842 // Non-recursive decomposition.
7843 while (decomposition_length-- > 0) {
7844 input[--descending_idx] = decomposition_data[(decomposition[0] >> 2) +
7845 decomposition_length];
7846 }
7847 } else {
7848 // No decomposition.
7849 input[--descending_idx] = input[input_count];
7850 }
7851 } else {
7852 // Non-Unicode character.
7853 input[--descending_idx] = input[input_count];
7854 }
7855 }
7856}
7857
7858uint8_t get_ccc(char32_t c) noexcept {
7859 return c < 0x110000 ? canonical_combining_class_block

Callers 1

decompose_nfcFunction · 0.85

Calls 1

sizeMethod · 0.45

Tested by

no test coverage detected