| 7862 | } |
| 7863 | |
| 7864 | void sort_marks(std::u32string& input) { |
| 7865 | for (size_t idx = 1; idx < input.size(); idx++) { |
| 7866 | uint8_t ccc = get_ccc(input[idx]); |
| 7867 | if (ccc == 0) { |
| 7868 | continue; |
| 7869 | } // Skip non-combining characters. |
| 7870 | auto current_character = input[idx]; |
| 7871 | size_t back_idx = idx; |
| 7872 | while (back_idx != 0 && get_ccc(input[back_idx - 1]) > ccc) { |
| 7873 | input[back_idx] = input[back_idx - 1]; |
| 7874 | back_idx--; |
| 7875 | } |
| 7876 | input[back_idx] = current_character; |
| 7877 | } |
| 7878 | } |
| 7879 | |
| 7880 | void decompose_nfc(std::u32string& input) { |
| 7881 | /** |
no test coverage detected