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

Method get_next_code_point

test-app/runtime/src/main/cpp/ada/ada.h:9761–9806  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

9759}
9760
9761constexpr void Tokenizer::get_next_code_point() {
9762 ada_log("Tokenizer::get_next_code_point called with index=", next_index);
9763 ADA_ASSERT_TRUE(next_index < input.size());
9764 // this assumes that we have a valid, non-truncated UTF-8 stream.
9765 code_point = 0;
9766 size_t number_bytes = 0;
9767 unsigned char first_byte = input[next_index];
9768
9769 if ((first_byte & 0x80) == 0) {
9770 // 1-byte character (ASCII)
9771 next_index++;
9772 code_point = first_byte;
9773 ada_log("Tokenizer::get_next_code_point returning ASCII code point=",
9774 uint32_t(code_point));
9775 ada_log("Tokenizer::get_next_code_point next_index =", next_index,
9776 " input.size()=", input.size());
9777 return;
9778 }
9779 ada_log("Tokenizer::get_next_code_point read first byte=",
9780 uint32_t(first_byte));
9781 if ((first_byte & 0xE0) == 0xC0) {
9782 code_point = first_byte & 0x1F;
9783 number_bytes = 2;
9784 ada_log("Tokenizer::get_next_code_point two bytes");
9785 } else if ((first_byte & 0xF0) == 0xE0) {
9786 code_point = first_byte & 0x0F;
9787 number_bytes = 3;
9788 ada_log("Tokenizer::get_next_code_point three bytes");
9789 } else if ((first_byte & 0xF8) == 0xF0) {
9790 code_point = first_byte & 0x07;
9791 number_bytes = 4;
9792 ada_log("Tokenizer::get_next_code_point four bytes");
9793 }
9794 ADA_ASSERT_TRUE(number_bytes + next_index <= input.size());
9795
9796 for (size_t i = 1 + next_index; i < number_bytes + next_index; ++i) {
9797 unsigned char byte = input[i];
9798 ada_log("Tokenizer::get_next_code_point read byte=", uint32_t(byte));
9799 code_point = (code_point << 6) | (byte & 0x3F);
9800 }
9801 ada_log("Tokenizer::get_next_code_point returning non-ASCII code point=",
9802 uint32_t(code_point));
9803 ada_log("Tokenizer::get_next_code_point next_index =", next_index,
9804 " input.size()=", input.size());
9805 next_index += number_bytes;
9806}
9807
9808constexpr void Tokenizer::seek_and_get_next_code_point(size_t new_index) {
9809 ada_log("Tokenizer::seek_and_get_next_code_point called with new_index=",

Callers 1

tokenizeFunction · 0.80

Calls 1

sizeMethod · 0.45

Tested by

no test coverage detected