Lines Matching defs:length
68 simdutf_warn_unused int detect_encodings(const char * input, size_t length) const noexcept final;
125 void change_endianness_utf16(const char16_t * buf, size_t length, char16_t * output) const noexcept final;
126 simdutf_warn_unused size_t count_utf16le(const char16_t * buf, size_t length) const noexcept;
127 simdutf_warn_unused size_t count_utf16be(const char16_t * buf, size_t length) const noexcept;
128 simdutf_warn_unused size_t count_utf8(const char * buf, size_t length) const noexcept;
129 simdutf_warn_unused size_t utf8_length_from_utf16le(const char16_t * input, size_t length) const noexcept;
130 simdutf_warn_unused size_t utf8_length_from_utf16be(const char16_t * input, size_t length) const noexcept;
131 simdutf_warn_unused size_t utf32_length_from_utf16le(const char16_t * input, size_t length) const noexcept;
132 simdutf_warn_unused size_t utf32_length_from_utf16be(const char16_t * input, size_t length) const noexcept;
133 simdutf_warn_unused size_t utf16_length_from_utf8(const char * input, size_t length) const noexcept;
134 simdutf_warn_unused size_t utf8_length_from_utf32(const char32_t * input, size_t length) const noexcept;
135 simdutf_warn_unused size_t utf16_length_from_utf32(const char32_t * input, size_t length) const noexcept;
136 simdutf_warn_unused size_t utf32_length_from_utf8(const char * input, size_t length) const noexcept;
137 simdutf_warn_unused size_t latin1_length_from_utf8(const char * input, size_t length) const noexcept;
138 simdutf_warn_unused size_t latin1_length_from_utf16(size_t length) const noexcept;
139 simdutf_warn_unused size_t latin1_length_from_utf32(size_t length) const noexcept;
140 simdutf_warn_unused size_t utf32_length_from_latin1(size_t length) const noexcept;
141 simdutf_warn_unused size_t utf16_length_from_latin1(size_t length) const noexcept;
142 simdutf_warn_unused size_t utf8_length_from_latin1(const char * input, size_t length) const noexcept;
1268 simdutf_warn_unused int detect_encodings(const char * input, size_t length) const noexcept final;
1325 void change_endianness_utf16(const char16_t * buf, size_t length, char16_t * output) const noexcept final;
1326 simdutf_warn_unused size_t count_utf16le(const char16_t * buf, size_t length) const noexcept;
1327 simdutf_warn_unused size_t count_utf16be(const char16_t * buf, size_t length) const noexcept;
1328 simdutf_warn_unused size_t count_utf8(const char * buf, size_t length) const noexcept;
1329 simdutf_warn_unused size_t utf8_length_from_utf16le(const char16_t * input, size_t length) const noexcept;
1330 simdutf_warn_unused size_t utf8_length_from_utf16be(const char16_t * input, size_t length) const noexcept;
1331 simdutf_warn_unused size_t utf32_length_from_utf16le(const char16_t * input, size_t length) const noexcept;
1332 simdutf_warn_unused size_t utf32_length_from_utf16be(const char16_t * input, size_t length) const noexcept;
1333 simdutf_warn_unused size_t utf16_length_from_utf8(const char * input, size_t length) const noexcept;
1334 simdutf_warn_unused size_t utf8_length_from_utf32(const char32_t * input, size_t length) const noexcept;
1335 simdutf_warn_unused size_t utf16_length_from_utf32(const char32_t * input, size_t length) const noexcept;
1336 simdutf_warn_unused size_t utf32_length_from_utf8(const char * input, size_t length) const noexcept;
1337 simdutf_warn_unused size_t latin1_length_from_utf8(const char * input, size_t length) const noexcept;
1338 simdutf_warn_unused size_t latin1_length_from_utf16(size_t length) const noexcept;
1339 simdutf_warn_unused size_t latin1_length_from_utf32(size_t length) const noexcept;
1340 simdutf_warn_unused size_t utf32_length_from_latin1(size_t length) const noexcept;
1341 simdutf_warn_unused size_t utf16_length_from_latin1(size_t length) const noexcept;
1342 simdutf_warn_unused size_t utf8_length_from_latin1(const char * input, size_t length) const noexcept;
1475 simdutf_warn_unused int detect_encodings(const char * input, size_t length) const noexcept final;
1532 void change_endianness_utf16(const char16_t * buf, size_t length, char16_t * output) const noexcept final;
1533 simdutf_warn_unused size_t count_utf16le(const char16_t * buf, size_t length) const noexcept;
1534 simdutf_warn_unused size_t count_utf16be(const char16_t * buf, size_t length) const noexcept;
1535 simdutf_warn_unused size_t count_utf8(const char * buf, size_t length) const noexcept;
1536 simdutf_warn_unused size_t utf8_length_from_utf16le(const char16_t * input, size_t length) const noexcept;
1537 simdutf_warn_unused size_t utf8_length_from_utf16be(const char16_t * input, size_t length) const noexcept;
1538 simdutf_warn_unused size_t utf32_length_from_utf16le(const char16_t * input, size_t length) const noexcept;
1539 simdutf_warn_unused size_t utf32_length_from_utf16be(const char16_t * input, size_t length) const noexcept;
1540 simdutf_warn_unused size_t utf16_length_from_utf8(const char * input, size_t length) const noexcept;
1541 simdutf_warn_unused size_t utf8_length_from_utf32(const char32_t * input, size_t length) const noexcept;
1542 simdutf_warn_unused size_t utf16_length_from_utf32(const char32_t * input, size_t length) const noexcept;
1543 simdutf_warn_unused size_t utf32_length_from_utf8(const char * input, size_t length) const noexcept;
1544 simdutf_warn_unused size_t latin1_length_from_utf8(const char * input, size_t length) const noexcept;
1545 simdutf_warn_unused size_t latin1_length_from_utf16(size_t length) const noexcept;
1546 simdutf_warn_unused size_t latin1_length_from_utf32(size_t length) const noexcept;
1547 simdutf_warn_unused size_t utf32_length_from_latin1(size_t length) const noexcept;
1548 simdutf_warn_unused size_t utf16_length_from_latin1(size_t length) const noexcept;
1549 simdutf_warn_unused size_t utf8_length_from_latin1(const char * input, size_t length) const noexcept;
2406 simdutf_warn_unused int detect_encodings(const char * input, size_t length) const noexcept final;
2463 void change_endianness_utf16(const char16_t * buf, size_t length, char16_t * output) const noexcept final;
2464 simdutf_warn_unused size_t count_utf16le(const char16_t * buf, size_t length) const noexcept;
2465 simdutf_warn_unused size_t count_utf16be(const char16_t * buf, size_t length) const noexcept;
2466 simdutf_warn_unused size_t count_utf8(const char * buf, size_t length) const noexcept;
2467 simdutf_warn_unused size_t utf8_length_from_utf16le(const char16_t * input, size_t length) const noexcept;
2468 simdutf_warn_unused size_t utf8_length_from_utf16be(const char16_t * input, size_t length) const noexcept;
2469 simdutf_warn_unused size_t utf32_length_from_utf16le(const char16_t * input, size_t length) const noexcept;
2470 simdutf_warn_unused size_t utf32_length_from_utf16be(const char16_t * input, size_t length) const noexcept;
2471 simdutf_warn_unused size_t utf16_length_from_utf8(const char * input, size_t length) const noexcept;
2472 simdutf_warn_unused size_t utf8_length_from_utf32(const char32_t * input, size_t length) const noexcept;
2473 simdutf_warn_unused size_t utf16_length_from_utf32(const char32_t * input, size_t length) const noexcept;
2474 simdutf_warn_unused size_t utf32_length_from_utf8(const char * input, size_t length) const noexcept;
2475 simdutf_warn_unused size_t latin1_length_from_utf8(const char * input, size_t length) const noexcept;
2476 simdutf_warn_unused size_t latin1_length_from_utf16(size_t length) const noexcept;
2477 simdutf_warn_unused size_t latin1_length_from_utf32(size_t length) const noexcept;
2478 simdutf_warn_unused size_t utf32_length_from_latin1(size_t length) const noexcept;
2479 simdutf_warn_unused size_t utf16_length_from_latin1(size_t length) const noexcept;
2480 simdutf_warn_unused size_t utf8_length_from_latin1(const char * input, size_t length) const noexcept;
3347 simdutf_warn_unused int detect_encodings(const char * input, size_t length) const noexcept final;
3388 void change_endianness_utf16(const char16_t * buf, size_t length, char16_t * output) const noexcept final;
3389 simdutf_warn_unused size_t count_utf16le(const char16_t * buf, size_t length) const noexcept;
3390 simdutf_warn_unused size_t count_utf16be(const char16_t * buf, size_t length) const noexcept;
3391 simdutf_warn_unused size_t count_utf8(const char * buf, size_t length) const noexcept;
3392 simdutf_warn_unused size_t utf8_length_from_utf16le(const char16_t * input, size_t length) const noexcept;
3393 simdutf_warn_unused size_t utf8_length_from_utf16be(const char16_t * input, size_t length) const noexcept;
3394 simdutf_warn_unused size_t utf32_length_from_utf16le(const char16_t * input, size_t length) const noexcept;
3395 simdutf_warn_unused size_t utf32_length_from_utf16be(const char16_t * input, size_t length) const noexcept;
3396 simdutf_warn_unused size_t utf16_length_from_utf8(const char * input, size_t length) const noexcept;
3397 simdutf_warn_unused size_t utf8_length_from_utf32(const char32_t * input, size_t length) const noexcept;
3398 simdutf_warn_unused size_t utf16_length_from_utf32(const char32_t * input, size_t length) const noexcept;
3399 simdutf_warn_unused size_t utf32_length_from_utf8(const char * input, size_t length) const noexcept;
4004 simdutf_warn_unused int detect_encodings(const char * input, size_t length) const noexcept final;
4061 void change_endianness_utf16(const char16_t * buf, size_t length, char16_t * output) const noexcept final;
4062 simdutf_warn_unused size_t count_utf16le(const char16_t * buf, size_t length) const noexcept;
4063 simdutf_warn_unused size_t count_utf16be(const char16_t * buf, size_t length) const noexcept;
4064 simdutf_warn_unused size_t count_utf8(const char * buf, size_t length) const noexcept;
4065 simdutf_warn_unused size_t utf8_length_from_utf16le(const char16_t * input, size_t length) const noexcept;
4066 simdutf_warn_unused size_t utf8_length_from_utf16be(const char16_t * input, size_t length) const noexcept;
4067 simdutf_warn_unused size_t utf32_length_from_utf16le(const char16_t * input, size_t length) const noexcept;
4068 simdutf_warn_unused size_t utf32_length_from_utf16be(const char16_t * input, size_t length) const noexcept;
4069 simdutf_warn_unused size_t utf16_length_from_utf8(const char * input, size_t length) const noexcept;
4070 simdutf_warn_unused size_t utf8_length_from_utf32(const char32_t * input, size_t length) const noexcept;
4071 simdutf_warn_unused size_t utf16_length_from_utf32(const char32_t * input, size_t length) const noexcept;
4072 simdutf_warn_unused size_t utf32_length_from_utf8(const char * input, size_t length) const noexcept;
4073 simdutf_warn_unused size_t latin1_length_from_utf8(const char * input, size_t length) const noexcept;
4074 simdutf_warn_unused size_t latin1_length_from_utf16(size_t length) const noexcept;
4075 simdutf_warn_unused size_t latin1_length_from_utf32(size_t length) const noexcept;
4076 simdutf_warn_unused size_t utf32_length_from_latin1(size_t length) const noexcept;
4077 simdutf_warn_unused size_t utf16_length_from_latin1(size_t length) const noexcept;
4078 simdutf_warn_unused size_t utf8_length_from_latin1(const char * input, size_t length) const noexcept;};
4304 simdutf_warn_unused inline size_t trim_partial_utf8(const char *input, size_t length) {
4305 if (length < 3) {
4306 switch (length) {
4308 if (uint8_t(input[length-1]) >= 0xc0) { return length-1; } // 2-, 3- and 4-byte characters with only 1 byte left
4309 if (uint8_t(input[length-2]) >= 0xe0) { return length-2; } // 3- and 4-byte characters with only 2 bytes left
4310 return length;
4312 if (uint8_t(input[length-1]) >= 0xc0) { return length-1; } // 2-, 3- and 4-byte characters with only 1 byte left
4313 return length;
4315 return length;
4318 if (uint8_t(input[length-1]) >= 0xc0) { return length-1; } // 2-, 3- and 4-byte characters with only 1 byte left
4319 if (uint8_t(input[length-2]) >= 0xe0) { return length-2; } // 3- and 4-byte characters with only 1 byte left
4320 if (uint8_t(input[length-3]) >= 0xf0) { return length-3; } // 4-byte characters with only 3 bytes left
4321 return length;
4439 simdutf_warn_unused inline size_t trim_partial_utf16(const char16_t* input, size_t length) {
4440 if (length <= 1) {
4441 return length;
4443 uint16_t last_word = uint16_t(input[length-1]);
4445 length -= ((last_word & 0xFC00) == 0xD800);
4446 return length;
4464 simdutf_warn_unused encoding_type implementation::autodetect_encoding(const char * input, size_t length) const noexcept {
4466 auto bom_encoding = simdutf::BOM::check_bom(input, length);
4475 if(validate_utf8(input, length)) { return encoding_type::UTF8; }
4478 if((length % 2) == 0) {
4480 if(validate_utf16le(reinterpret_cast<const char16_t*>(input), length/2)) { return encoding_type::UTF16_LE; }
4482 if((length % 4) == 0) {
4483 if(validate_utf32(reinterpret_cast<const char32_t*>(input), length/4)) { return encoding_type::UTF32_LE; }
4540 simdutf_warn_unused int detect_encodings(const char * input, size_t length) const noexcept override {
4541 return set_best()->detect_encodings(input, length);
5252 simdutf_warn_unused size_t convert_utf8_to_utf16(const char * input, size_t length, char16_t* utf16_output) noexcept {
5254 return convert_utf8_to_utf16be(input, length, utf16_output);
5256 return convert_utf8_to_utf16le(input, length, utf16_output);
5280 simdutf_warn_unused size_t convert_utf8_to_utf16le(const char * input, size_t length, char16_t* utf16_output) noexcept {
5281 return get_active_implementation()->convert_utf8_to_utf16le(input, length, utf16_output);
5283 simdutf_warn_unused size_t convert_utf8_to_utf16be(const char * input, size_t length, char16_t* utf16_output) noexcept {
5284 return get_active_implementation()->convert_utf8_to_utf16be(input, length, utf16_output);
5286 simdutf_warn_unused result convert_utf8_to_utf16_with_errors(const char * input, size_t length, char16_t* utf16_output) noexcept {
5288 return convert_utf8_to_utf16be_with_errors(input, length, utf16_output);
5290 return convert_utf8_to_utf16le_with_errors(input, length, utf16_output);
5293 simdutf_warn_unused result convert_utf8_to_utf16le_with_errors(const char * input, size_t length, char16_t* utf16_output) noexcept {
5294 return get_active_implementation()->convert_utf8_to_utf16le_with_errors(input, length, utf16_output);
5296 simdutf_warn_unused result convert_utf8_to_utf16be_with_errors(const char * input, size_t length, char16_t* utf16_output) noexcept {
5297 return get_active_implementation()->convert_utf8_to_utf16be_with_errors(input, length, utf16_output);
5299 simdutf_warn_unused size_t convert_utf8_to_utf32(const char * input, size_t length, char32_t* utf32_output) noexcept {
5300 return get_active_implementation()->convert_utf8_to_utf32(input, length, utf32_output);
5302 simdutf_warn_unused result convert_utf8_to_utf32_with_errors(const char * input, size_t length, char32_t* utf32_output) noexcept {
5303 return get_active_implementation()->convert_utf8_to_utf32_with_errors(input, length, utf32_output);
5337 simdutf_warn_unused size_t convert_valid_utf8_to_utf16(const char * input, size_t length, char16_t* utf16_buffer) noexcept {
5339 return convert_valid_utf8_to_utf16be(input, length, utf16_buffer);
5341 return convert_valid_utf8_to_utf16le(input, length, utf16_buffer);
5344 simdutf_warn_unused size_t convert_valid_utf8_to_utf16le(const char * input, size_t length, char16_t* utf16_buffer) noexcept {
5345 return get_active_implementation()->convert_valid_utf8_to_utf16le(input, length, utf16_buffer);
5347 simdutf_warn_unused size_t convert_valid_utf8_to_utf16be(const char * input, size_t length, char16_t* utf16_buffer) noexcept {
5348 return get_active_implementation()->convert_valid_utf8_to_utf16be(input, length, utf16_buffer);
5350 simdutf_warn_unused size_t convert_valid_utf8_to_utf32(const char * input, size_t length, char32_t* utf32_buffer) noexcept {
5351 return get_active_implementation()->convert_valid_utf8_to_utf32(input, length, utf32_buffer);
5454 simdutf_warn_unused size_t convert_utf32_to_latin1(const char32_t * input, size_t length, char* latin1_output) noexcept {
5455 return get_active_implementation()->convert_utf32_to_latin1(input, length, latin1_output);
5528 void change_endianness_utf16(const char16_t * input, size_t length, char16_t * output) noexcept {
5529 get_active_implementation()->change_endianness_utf16(input, length, output);
5531 simdutf_warn_unused size_t count_utf16(const char16_t * input, size_t length) noexcept {
5533 return count_utf16be(input, length);
5535 return count_utf16le(input, length);
5538 simdutf_warn_unused size_t count_utf16le(const char16_t * input, size_t length) noexcept {
5539 return get_active_implementation()->count_utf16le(input, length);
5541 simdutf_warn_unused size_t count_utf16be(const char16_t * input, size_t length) noexcept {
5542 return get_active_implementation()->count_utf16be(input, length);
5544 simdutf_warn_unused size_t count_utf8(const char * input, size_t length) noexcept {
5545 return get_active_implementation()->count_utf8(input, length);
5559 simdutf_warn_unused size_t utf8_length_from_utf16(const char16_t * input, size_t length) noexcept {
5561 return utf8_length_from_utf16be(input, length);
5563 return utf8_length_from_utf16le(input, length);
5566 simdutf_warn_unused size_t utf8_length_from_utf16le(const char16_t * input, size_t length) noexcept {
5567 return get_active_implementation()->utf8_length_from_utf16le(input, length);
5569 simdutf_warn_unused size_t utf8_length_from_utf16be(const char16_t * input, size_t length) noexcept {
5570 return get_active_implementation()->utf8_length_from_utf16be(input, length);
5572 simdutf_warn_unused size_t utf32_length_from_utf16(const char16_t * input, size_t length) noexcept {
5574 return utf32_length_from_utf16be(input, length);
5576 return utf32_length_from_utf16le(input, length);
5579 simdutf_warn_unused size_t utf32_length_from_utf16le(const char16_t * input, size_t length) noexcept {
5580 return get_active_implementation()->utf32_length_from_utf16le(input, length);
5582 simdutf_warn_unused size_t utf32_length_from_utf16be(const char16_t * input, size_t length) noexcept {
5583 return get_active_implementation()->utf32_length_from_utf16be(input, length);
5585 simdutf_warn_unused size_t utf16_length_from_utf8(const char * input, size_t length) noexcept {
5586 return get_active_implementation()->utf16_length_from_utf8(input, length);
5588 simdutf_warn_unused size_t utf16_length_from_latin1(size_t length) noexcept {
5589 return get_active_implementation()->utf16_length_from_latin1(length);
5591 simdutf_warn_unused size_t utf8_length_from_utf32(const char32_t * input, size_t length) noexcept {
5592 return get_active_implementation()->utf8_length_from_utf32(input, length);
5594 simdutf_warn_unused size_t utf16_length_from_utf32(const char32_t * input, size_t length) noexcept {
5595 return get_active_implementation()->utf16_length_from_utf32(input, length);
5597 simdutf_warn_unused size_t utf32_length_from_utf8(const char * input, size_t length) noexcept {
5598 return get_active_implementation()->utf32_length_from_utf8(input, length);
5600 simdutf_warn_unused simdutf::encoding_type autodetect_encoding(const char * buf, size_t length) noexcept {
5601 return get_active_implementation()->autodetect_encoding(buf, length);
5603 simdutf_warn_unused int detect_encodings(const char * buf, size_t length) noexcept {
5604 return get_active_implementation()->detect_encodings(buf, length);
5611 simdutf_warn_unused size_t trim_partial_utf8(const char *input, size_t length) {
5612 return scalar::utf8::trim_partial_utf8(input, length);
5615 simdutf_warn_unused size_t trim_partial_utf16be(const char16_t* input, size_t length) {
5616 return scalar::utf16::trim_partial_utf16<BIG>(input, length);
5619 simdutf_warn_unused size_t trim_partial_utf16le(const char16_t* input, size_t length) {
5620 return scalar::utf16::trim_partial_utf16<LITTLE>(input, length);
5623 simdutf_warn_unused size_t trim_partial_utf16(const char16_t* input, size_t length) {
5625 return trim_partial_utf16be(input, length);
5627 return trim_partial_utf16le(input, length);
5659 encoding_type check_bom(const uint8_t* byte, size_t length) {
5660 if (length >= 2 && byte[0] == 0xff and byte[1] == 0xfe) {
5661 if (length >= 4 && byte[2] == 0x00 and byte[3] == 0x0) {
5666 } else if (length >= 2 && byte[0] == 0xfe and byte[1] == 0xff) {
5668 } else if (length >= 4 && byte[0] == 0x00 and byte[1] == 0x00 and byte[2] == 0xfe and byte[3] == 0xff) {
5670 } else if (length >= 4 && byte[0] == 0xef and byte[1] == 0xbb and byte[3] == 0xbf) {
5676 encoding_type check_bom(const char* byte, size_t length) {
5677 return check_bom(reinterpret_cast<const uint8_t*>(byte), length);
10054 // 1 byte for length, 16 bytes for mask
10314 // 1 byte for length, 16 bytes for mask
12652 // we process SIX (6) input code-code units. The max length in bytes of six code
13675 // we process SIX (6) input code-code units. The max length in bytes of six code
13679 // we process SIX (6) input code-code units. The max length in bytes of six code
15409 bool generic_validate_utf8(const uint8_t * input, size_t length) {
15411 buf_block_reader<64> reader(input, length);
15426 bool generic_validate_utf8(const char * input, size_t length) {
15427 return generic_validate_utf8<utf8_checker>(reinterpret_cast<const uint8_t *>(input),length);
15434 result generic_validate_utf8_with_errors(const uint8_t * input, size_t length) {
15436 buf_block_reader<64> reader(input, length);
15443 result res = scalar::utf8::rewind_and_validate_with_errors(reinterpret_cast<const char*>(input), reinterpret_cast<const char*>(input + count), length - count);
15458 result res = scalar::utf8::rewind_and_validate_with_errors(reinterpret_cast<const char*>(input), reinterpret_cast<const char*>(input) + count, length - count);
15462 return result(error_code::SUCCESS, length);
15466 result generic_validate_utf8_with_errors(const char * input, size_t length) {
15467 return generic_validate_utf8_with_errors<utf8_checker>(reinterpret_cast<const uint8_t *>(input),length);
15471 bool generic_validate_ascii(const uint8_t * input, size_t length) {
15472 buf_block_reader<64> reader(input, length);
15487 bool generic_validate_ascii(const char * input, size_t length) {
15488 return generic_validate_ascii<utf8_checker>(reinterpret_cast<const uint8_t *>(input),length);
15492 result generic_validate_ascii_with_errors(const uint8_t * input, size_t length) {
15493 buf_block_reader<64> reader(input, length);
15498 result res = scalar::ascii::validate_with_errors(reinterpret_cast<const char*>(input + count), length - count);
15509 result res = scalar::ascii::validate_with_errors(reinterpret_cast<const char*>(input + count), length - count);
15512 return result(error_code::SUCCESS, length);
15516 result generic_validate_ascii_with_errors(const char * input, size_t length) {
15517 return generic_validate_ascii_with_errors<utf8_checker>(reinterpret_cast<const uint8_t *>(input),length);
16740 simdutf_warn_unused int implementation::detect_encodings(const char * input, size_t length) const noexcept {
16742 auto bom_encoding = simdutf::BOM::check_bom(input, length);
16744 if (length % 2 == 0) {
16745 return arm_detect_encodings<utf8_validation::utf8_checker>(input, length);
16747 if (implementation::validate_utf8(input, length)) {
17291 void implementation::change_endianness_utf16(const char16_t * input, size_t length, char16_t * output) const noexcept {
17292 utf16::change_endianness_utf16(input, length, output);
17295 simdutf_warn_unused size_t implementation::count_utf16le(const char16_t * input, size_t length) const noexcept {
17296 return utf16::count_code_points<endianness::LITTLE>(input, length);
17299 simdutf_warn_unused size_t implementation::count_utf16be(const char16_t * input, size_t length) const noexcept {
17300 return utf16::count_code_points<endianness::BIG>(input, length);
17303 simdutf_warn_unused size_t implementation::count_utf8(const char * input, size_t length) const noexcept {
17304 return utf8::count_code_points(input, length);
17311 simdutf_warn_unused size_t implementation::latin1_length_from_utf16(size_t length) const noexcept {
17312 return scalar::utf16::latin1_length_from_utf16(length);
17315 simdutf_warn_unused size_t implementation::latin1_length_from_utf32(size_t length) const noexcept {
17316 return scalar::utf32::latin1_length_from_utf32(length);
17319 simdutf_warn_unused size_t implementation::utf8_length_from_latin1(const char * input, size_t length) const noexcept {
17325 uint8_t rem = length % lanes;
17326 const uint8_t *simd_end = data + (length / lanes) * lanes;
17336 return result + (length / lanes) * lanes + scalar::latin1::utf8_length_from_latin1((const char*)simd_end, rem);
17339 simdutf_warn_unused size_t implementation::utf8_length_from_utf16le(const char16_t * input, size_t length) const noexcept {
17340 return utf16::utf8_length_from_utf16<endianness::LITTLE>(input, length);
17343 simdutf_warn_unused size_t implementation::utf8_length_from_utf16be(const char16_t * input, size_t length) const noexcept {
17344 return utf16::utf8_length_from_utf16<endianness::BIG>(input, length);
17348 simdutf_warn_unused size_t implementation::utf16_length_from_latin1(size_t length) const noexcept {
17349 return scalar::latin1::utf16_length_from_latin1(length);
17353 simdutf_warn_unused size_t implementation::utf32_length_from_latin1(size_t length) const noexcept {
17354 return scalar::latin1::utf32_length_from_latin1(length);
17359 simdutf_warn_unused size_t implementation::utf32_length_from_utf16le(const char16_t * input, size_t length) const noexcept {
17360 return utf16::utf32_length_from_utf16<endianness::LITTLE>(input, length);
17363 simdutf_warn_unused size_t implementation::utf32_length_from_utf16be(const char16_t * input, size_t length) const noexcept {
17364 return utf16::utf32_length_from_utf16<endianness::BIG>(input, length);
17367 simdutf_warn_unused size_t implementation::utf16_length_from_utf8(const char * input, size_t length) const noexcept {
17368 return utf8::utf16_length_from_utf8(input, length);
17371 simdutf_warn_unused size_t implementation::utf8_length_from_utf32(const char32_t * input, size_t length) const noexcept {
17378 for(;pos + 4 <= length; pos += 4) {
17398 return count + scalar::utf32::utf8_length_from_utf32(input + pos, length - pos);
17401 simdutf_warn_unused size_t implementation::utf16_length_from_utf32(const char32_t * input, size_t length) const noexcept {
17406 for(;pos + 4 <= length; pos += 4) {
17414 return count + scalar::utf32::utf16_length_from_utf32(input + pos, length - pos);
17417 simdutf_warn_unused size_t implementation::utf32_length_from_utf8(const char * input, size_t length) const noexcept {
17418 return utf8::count_code_points(input, length);
17446 simdutf_warn_unused int implementation::detect_encodings(const char * input, size_t length) const noexcept {
17448 auto bom_encoding = simdutf::BOM::check_bom(input, length);
17451 if(validate_utf8(input, length)) { out |= encoding_type::UTF8; }
17452 if((length % 2) == 0) {
17453 if(validate_utf16le(reinterpret_cast<const char16_t*>(input), length/2)) { out |= encoding_type::UTF16_LE; }
17455 if((length % 4) == 0) {
17456 if(validate_utf32(reinterpret_cast<const char32_t*>(input), length/4)) { out |= encoding_type::UTF32_LE; }
17687 void implementation::change_endianness_utf16(const char16_t * input, size_t length, char16_t * output) const noexcept {
17688 scalar::utf16::change_endianness_utf16(input, length, output);
17691 simdutf_warn_unused size_t implementation::count_utf16le(const char16_t * input, size_t length) const noexcept {
17692 return scalar::utf16::count_code_points<endianness::LITTLE>(input, length);
17695 simdutf_warn_unused size_t implementation::count_utf16be(const char16_t * input, size_t length) const noexcept {
17696 return scalar::utf16::count_code_points<endianness::BIG>(input, length);
17699 simdutf_warn_unused size_t implementation::count_utf8(const char * input, size_t length) const noexcept {
17700 return scalar::utf8::count_code_points(input, length);
17707 simdutf_warn_unused size_t implementation::latin1_length_from_utf16(size_t length) const noexcept {
17708 return scalar::utf16::latin1_length_from_utf16(length);
17711 simdutf_warn_unused size_t implementation::latin1_length_from_utf32(size_t length) const noexcept {
17712 return length;
17715 simdutf_warn_unused size_t implementation::utf8_length_from_latin1(const char * input, size_t length) const noexcept {
17716 return scalar::latin1::utf8_length_from_latin1(input,length);
17719 simdutf_warn_unused size_t implementation::utf8_length_from_utf16le(const char16_t * input, size_t length) const noexcept {
17720 return scalar::utf16::utf8_length_from_utf16<endianness::LITTLE>(input, length);
17723 simdutf_warn_unused size_t implementation::utf8_length_from_utf16be(const char16_t * input, size_t length) const noexcept {
17724 return scalar::utf16::utf8_length_from_utf16<endianness::BIG>(input, length);
17727 simdutf_warn_unused size_t implementation::utf32_length_from_utf16le(const char16_t * input, size_t length) const noexcept {
17728 return scalar::utf16::utf32_length_from_utf16<endianness::LITTLE>(input, length);
17731 simdutf_warn_unused size_t implementation::utf32_length_from_utf16be(const char16_t * input, size_t length) const noexcept {
17732 return scalar::utf16::utf32_length_from_utf16<endianness::BIG>(input, length);
17735 simdutf_warn_unused size_t implementation::utf16_length_from_latin1(size_t length) const noexcept {
17736 return scalar::latin1::utf16_length_from_latin1(length);
17739 simdutf_warn_unused size_t implementation::utf16_length_from_utf8(const char * input, size_t length) const noexcept {
17740 return scalar::utf8::utf16_length_from_utf8(input, length);
17743 simdutf_warn_unused size_t implementation::utf8_length_from_utf32(const char32_t * input, size_t length) const noexcept {
17744 return scalar::utf32::utf8_length_from_utf32(input, length);
17747 simdutf_warn_unused size_t implementation::utf16_length_from_utf32(const char32_t * input, size_t length) const noexcept {
17748 return scalar::utf32::utf16_length_from_utf32(input, length);
17751 simdutf_warn_unused size_t implementation::utf32_length_from_latin1(size_t length) const noexcept {
17752 return scalar::latin1::utf32_length_from_latin1(length);
17755 simdutf_warn_unused size_t implementation::utf32_length_from_utf8(const char * input, size_t length) const noexcept {
17756 return scalar::utf8::count_code_points(input, length);
18602 - len - string length
20660 size_t length) const noexcept {
20662 auto bom_encoding = simdutf::BOM::check_bom(input, length);
20664 if (length % 2 == 0) {
20668 const char *end = input + length;
20725 if (length % 4 == 0) {
20728 reinterpret_cast<const char32_t *>(start) + length / 4;
20751 if (current_length != length) {
20753 (1ULL << (length - current_length)) - 1, (const __m512i *)buf);
20764 (length - (buf - start)) / 2)) {
20768 if (is_utf32 && (length % 4 == 0)) {
20771 (1ULL << (length - static_cast<size_t>(buf - start))) - 1,
20782 } else if (implementation::validate_utf8(input, length)) {
21127 // Initialize output length and input length counters
21140 // the input buffer, length, and output buffer, and returns a result object with an error code
21616 void implementation::change_endianness_utf16(const char16_t * input, size_t length, char16_t * output) const noexcept {
21628 while (pos + 32 <= length) {
21634 if(pos < length) {
21635 __mmask32 m((1<< (length - pos))-1);
21643 simdutf_warn_unused size_t implementation::count_utf16le(const char16_t * input, size_t length) const noexcept {
21644 const char16_t* end = length >= 32 ? input + length - 32 : nullptr;
21659 return count + scalar::utf16::count_code_points<endianness::LITTLE>(ptr, length - (ptr - input));
21662 simdutf_warn_unused size_t implementation::count_utf16be(const char16_t * input, size_t length) const noexcept {
21663 const char16_t* end = length >= 32 ? input + length - 32 : nullptr;
21687 return count + scalar::utf16::count_code_points<endianness::BIG>(ptr, length - (ptr - input));
21691 simdutf_warn_unused size_t implementation::count_utf8(const char * input, size_t length) const noexcept {
21693 size_t answer = length / sizeof(__m512i) * sizeof(__m512i); // Number of 512-bit chunks that fits into the length.
21699 while (i + sizeof(__m512i) <= length) {
21700 size_t iterations = (length - i) / sizeof(__m512i);
21747 return answer + scalar::utf8::count_code_points(reinterpret_cast<const char *>(str + i), length - i);
21754 simdutf_warn_unused size_t implementation::latin1_length_from_utf16(size_t length) const noexcept {
21755 return scalar::utf16::latin1_length_from_utf16(length);
21758 simdutf_warn_unused size_t implementation::latin1_length_from_utf32(size_t length) const noexcept {
21759 return scalar::utf32::latin1_length_from_utf32(length);
21762 simdutf_warn_unused size_t implementation::utf8_length_from_utf16le(const char16_t * input, size_t length) const noexcept {
21763 const char16_t* end = length >= 32 ? input + length - 32 : nullptr;
21789 return count + scalar::utf16::utf8_length_from_utf16<endianness::LITTLE>(ptr, length - (ptr - input));
21792 simdutf_warn_unused size_t implementation::utf8_length_from_utf16be(const char16_t * input, size_t length) const noexcept {
21793 const char16_t* end = length >= 32 ? input + length - 32 : nullptr;
21828 return count + scalar::utf16::utf8_length_from_utf16<endianness::BIG>(ptr, length - (ptr - input));
21831 simdutf_warn_unused size_t implementation::utf32_length_from_utf16le(const char16_t * input, size_t length) const noexcept {
21832 return implementation::count_utf16le(input, length);
21835 simdutf_warn_unused size_t implementation::utf32_length_from_utf16be(const char16_t * input, size_t length) const noexcept {
21836 return implementation::count_utf16be(input, length);
21839 simdutf_warn_unused size_t implementation::utf16_length_from_latin1(size_t length) const noexcept {
21840 return scalar::latin1::utf16_length_from_latin1(length);
21844 simdutf_warn_unused size_t implementation::utf32_length_from_latin1(size_t length) const noexcept {
21845 return scalar::latin1::utf32_length_from_latin1(length);
21848 simdutf_warn_unused size_t implementation::utf8_length_from_latin1(const char * input, size_t length) const noexcept {
21850 size_t answer = length / sizeof(__m512i) * sizeof(__m512i);
21854 while (i + sizeof(__m512i) <= length) {
21856 size_t iterations = (length - i) / sizeof(__m512i);
21906 return answer + scalar::latin1::utf8_length_from_latin1(reinterpret_cast<const char *>(str + i), length - i);
21909 simdutf_warn_unused size_t implementation::utf16_length_from_utf8(const char * input, size_t length) const noexcept {
21913 for(;pos + 64 <= length; pos += 64) {
21922 return count + scalar::utf8::utf16_length_from_utf8(input + pos, length - pos);
21925 simdutf_warn_unused size_t implementation::utf8_length_from_utf32(const char32_t * input, size_t length) const noexcept {
21926 const char32_t* end = length >= 16 ? input + length - 16 : nullptr;
21949 return count + scalar::utf32::utf8_length_from_utf32(ptr, length - (ptr - input));
21952 simdutf_warn_unused size_t implementation::utf16_length_from_utf32(const char32_t * input, size_t length) const noexcept {
21953 const char32_t* end = length >= 16 ? input + length - 16 : nullptr;
21968 return count + scalar::utf32::utf16_length_from_utf32(ptr, length - (ptr - input));
21971 simdutf_warn_unused size_t implementation::utf32_length_from_utf8(const char * input, size_t length) const noexcept {
21972 return implementation::count_utf8(input, length);
22710 // we process SIX (6) input code-code units. The max length in bytes of six code
22883 // we process SIX (6) input code-code units. The max length in bytes of six code
24506 // we process SIX (6) input code-code units. The max length in bytes of six code
24820 bool generic_validate_utf8(const uint8_t * input, size_t length) {
24822 buf_block_reader<64> reader(input, length);
24837 bool generic_validate_utf8(const char * input, size_t length) {
24838 return generic_validate_utf8<utf8_checker>(reinterpret_cast<const uint8_t *>(input),length);
24845 result generic_validate_utf8_with_errors(const uint8_t * input, size_t length) {
24847 buf_block_reader<64> reader(input, length);
24854 result res = scalar::utf8::rewind_and_validate_with_errors(reinterpret_cast<const char*>(input), reinterpret_cast<const char*>(input + count), length - count);
24869 result res = scalar::utf8::rewind_and_validate_with_errors(reinterpret_cast<const char*>(input), reinterpret_cast<const char*>(input) + count, length - count);
24873 return result(error_code::SUCCESS, length);
24877 result generic_validate_utf8_with_errors(const char * input, size_t length) {
24878 return generic_validate_utf8_with_errors<utf8_checker>(reinterpret_cast<const uint8_t *>(input),length);
24882 bool generic_validate_ascii(const uint8_t * input, size_t length) {
24883 buf_block_reader<64> reader(input, length);
24898 bool generic_validate_ascii(const char * input, size_t length) {
24899 return generic_validate_ascii<utf8_checker>(reinterpret_cast<const uint8_t *>(input),length);
24903 result generic_validate_ascii_with_errors(const uint8_t * input, size_t length) {
24904 buf_block_reader<64> reader(input, length);
24909 result res = scalar::ascii::validate_with_errors(reinterpret_cast<const char*>(input + count), length - count);
24920 result res = scalar::ascii::validate_with_errors(reinterpret_cast<const char*>(input + count), length - count);
24923 return result(error_code::SUCCESS, length);
24927 result generic_validate_ascii_with_errors(const char * input, size_t length) {
24928 return generic_validate_ascii_with_errors<utf8_checker>(reinterpret_cast<const uint8_t *>(input),length);
26148 simdutf_warn_unused int implementation::detect_encodings(const char * input, size_t length) const noexcept {
26150 auto bom_encoding = simdutf::BOM::check_bom(input, length);
26152 if (length % 2 == 0) {
26153 return avx2_detect_encodings<utf8_validation::utf8_checker>(input, length);
26155 if (implementation::validate_utf8(input, length)) {
26695 void implementation::change_endianness_utf16(const char16_t * input, size_t length, char16_t * output) const noexcept {
26696 utf16::change_endianness_utf16(input, length, output);
26699 simdutf_warn_unused size_t implementation::count_utf16le(const char16_t * input, size_t length) const noexcept {
26700 return utf16::count_code_points<endianness::LITTLE>(input, length);
26703 simdutf_warn_unused size_t implementation::count_utf16be(const char16_t * input, size_t length) const noexcept {
26704 return utf16::count_code_points<endianness::BIG>(input, length);
26707 simdutf_warn_unused size_t implementation::count_utf8(const char * input, size_t length) const noexcept {
26708 return utf8::count_code_points(input, length);
26715 simdutf_warn_unused size_t implementation::latin1_length_from_utf16(size_t length) const noexcept {
26716 return scalar::utf16::latin1_length_from_utf16(length);
26719 simdutf_warn_unused size_t implementation::latin1_length_from_utf32(size_t length) const noexcept {
26720 return scalar::utf32::latin1_length_from_utf32(length);
26723 simdutf_warn_unused size_t implementation::utf8_length_from_utf16le(const char16_t * input, size_t length) const noexcept {
26724 return utf16::utf8_length_from_utf16<endianness::LITTLE>(input, length);
26727 simdutf_warn_unused size_t implementation::utf8_length_from_utf16be(const char16_t * input, size_t length) const noexcept {
26728 return utf16::utf8_length_from_utf16<endianness::BIG>(input, length);
26731 simdutf_warn_unused size_t implementation::utf32_length_from_utf16le(const char16_t * input, size_t length) const noexcept {
26732 return utf16::utf32_length_from_utf16<endianness::LITTLE>(input, length);
26735 simdutf_warn_unused size_t implementation::utf32_length_from_utf16be(const char16_t * input, size_t length) const noexcept {
26736 return utf16::utf32_length_from_utf16<endianness::BIG>(input, length);
26740 simdutf_warn_unused size_t implementation::utf16_length_from_latin1(size_t length) const noexcept {
26741 return scalar::latin1::utf16_length_from_latin1(length);
26744 simdutf_warn_unused size_t implementation::utf16_length_from_utf8(const char * input, size_t length) const noexcept {
26745 return utf8::utf16_length_from_utf8(input, length);
26749 simdutf_warn_unused size_t implementation::utf32_length_from_latin1(size_t length) const noexcept {
26750 return scalar::latin1::utf32_length_from_latin1(length);
26794 simdutf_warn_unused size_t implementation::utf8_length_from_utf32(const char32_t * input, size_t length) const noexcept {
26801 for(;pos + 8 <= length; pos += 8) {
26817 return count + scalar::utf32::utf8_length_from_utf32(input + pos, length - pos);
26820 simdutf_warn_unused size_t implementation::utf16_length_from_utf32(const char32_t * input, size_t length) const noexcept {
26825 for(;pos + 8 <= length; pos += 8) {
26832 return count + scalar::utf32::utf16_length_from_utf32(input + pos, length - pos);
26835 simdutf_warn_unused size_t implementation::utf32_length_from_utf8(const char * input, size_t length) const noexcept {
26836 return utf8::count_code_points(input, length);
27192 bool generic_validate_utf8(const uint8_t * input, size_t length) {
27194 buf_block_reader<64> reader(input, length);
27209 bool generic_validate_utf8(const char * input, size_t length) {
27210 return generic_validate_utf8<utf8_checker>(reinterpret_cast<const uint8_t *>(input),length);
27217 result generic_validate_utf8_with_errors(const uint8_t * input, size_t length) {
27219 buf_block_reader<64> reader(input, length);
27226 result res = scalar::utf8::rewind_and_validate_with_errors(reinterpret_cast<const char*>(input), reinterpret_cast<const char*>(input + count), length - count);
27241 result res = scalar::utf8::rewind_and_validate_with_errors(reinterpret_cast<const char*>(input), reinterpret_cast<const char*>(input) + count, length - count);
27245 return result(error_code::SUCCESS, length);
27249 result generic_validate_utf8_with_errors(const char * input, size_t length) {
27250 return generic_validate_utf8_with_errors<utf8_checker>(reinterpret_cast<const uint8_t *>(input),length);
27254 bool generic_validate_ascii(const uint8_t * input, size_t length) {
27255 buf_block_reader<64> reader(input, length);
27270 bool generic_validate_ascii(const char * input, size_t length) {
27271 return generic_validate_ascii<utf8_checker>(reinterpret_cast<const uint8_t *>(input),length);
27275 result generic_validate_ascii_with_errors(const uint8_t * input, size_t length) {
27276 buf_block_reader<64> reader(input, length);
27281 result res = scalar::ascii::validate_with_errors(reinterpret_cast<const char*>(input + count), length - count);
27292 result res = scalar::ascii::validate_with_errors(reinterpret_cast<const char*>(input + count), length - count);
27295 return result(error_code::SUCCESS, length);
27299 result generic_validate_ascii_with_errors(const char * input, size_t length) {
27300 return generic_validate_ascii_with_errors<utf8_checker>(reinterpret_cast<const uint8_t *>(input),length);
28146 simdutf_warn_unused int implementation::detect_encodings(const char * input, size_t length) const noexcept {
28148 auto bom_encoding = simdutf::BOM::check_bom(input, length);
28151 if(validate_utf8(input, length)) { out |= encoding_type::UTF8; }
28152 if((length % 2) == 0) {
28153 if(validate_utf16(reinterpret_cast<const char16_t*>(input), length/2)) { out |= encoding_type::UTF16_LE; }
28155 if((length % 4) == 0) {
28156 if(validate_utf32(reinterpret_cast<const char32_t*>(input), length/4)) { out |= encoding_type::UTF32_LE; }
28322 void implementation::change_endianness_utf16(const char16_t * input, size_t length, char16_t * output) const noexcept {
28323 scalar::utf16::change_endianness_utf16(input, length, output);
28326 simdutf_warn_unused size_t implementation::count_utf16le(const char16_t * input, size_t length) const noexcept {
28327 return scalar::utf16::count_code_points<endianness::LITTLE>(input, length);
28330 simdutf_warn_unused size_t implementation::count_utf16be(const char16_t * input, size_t length) const noexcept {
28331 return scalar::utf16::count_code_points<endianness::BIG>(input, length);
28334 simdutf_warn_unused size_t implementation::count_utf8(const char * input, size_t length) const noexcept {
28335 return utf8::count_code_points(input, length);
28338 simdutf_warn_unused size_t implementation::utf8_length_from_utf16le(const char16_t * input, size_t length) const noexcept {
28339 return scalar::utf16::utf8_length_from_utf16<endianness::LITTLE>(input, length);
28342 simdutf_warn_unused size_t implementation::utf8_length_from_utf16be(const char16_t * input, size_t length) const noexcept {
28343 return scalar::utf16::utf8_length_from_utf16<endianness::BIG>(input, length);
28346 simdutf_warn_unused size_t implementation::utf32_length_from_utf16le(const char16_t * input, size_t length) const noexcept {
28347 return scalar::utf16::utf32_length_from_utf16<endianness::LITTLE>(input, length);
28350 simdutf_warn_unused size_t implementation::utf32_length_from_utf16be(const char16_t * input, size_t length) const noexcept {
28351 return scalar::utf16::utf32_length_from_utf16<endianness::BIG>(input, length);
28354 simdutf_warn_unused size_t implementation::utf16_length_from_utf8(const char * input, size_t length) const noexcept {
28355 return scalar::utf8::utf16_length_from_utf8(input, length);
28358 simdutf_warn_unused size_t implementation::utf8_length_from_utf32(const char32_t * input, size_t length) const noexcept {
28359 return scalar::utf32::utf8_length_from_utf32(input, length);
28362 simdutf_warn_unused size_t implementation::utf16_length_from_utf32(const char32_t * input, size_t length) const noexcept {
28363 return scalar::utf32::utf16_length_from_utf32(input, length);
28366 simdutf_warn_unused size_t implementation::utf32_length_from_utf8(const char * input, size_t length) const noexcept {
28367 return scalar::utf8::count_code_points(input, length);
29187 // we process SIX (6) input code-code units. The max length in bytes of six code
29363 // we process SIX (6) input code-code units. The max length in bytes of six code
29458 // we process SIX (6) input code-code units. The max length in bytes of six code
31199 bool generic_validate_utf8(const uint8_t * input, size_t length) {
31201 buf_block_reader<64> reader(input, length);
31216 bool generic_validate_utf8(const char * input, size_t length) {
31217 return generic_validate_utf8<utf8_checker>(reinterpret_cast<const uint8_t *>(input),length);
31224 result generic_validate_utf8_with_errors(const uint8_t * input, size_t length) {
31226 buf_block_reader<64> reader(input, length);
31233 result res = scalar::utf8::rewind_and_validate_with_errors(reinterpret_cast<const char*>(input), reinterpret_cast<const char*>(input + count), length - count);
31248 result res = scalar::utf8::rewind_and_validate_with_errors(reinterpret_cast<const char*>(input), reinterpret_cast<const char*>(input) + count, length - count);
31252 return result(error_code::SUCCESS, length);
31256 result generic_validate_utf8_with_errors(const char * input, size_t length) {
31257 return generic_validate_utf8_with_errors<utf8_checker>(reinterpret_cast<const uint8_t *>(input),length);
31261 bool generic_validate_ascii(const uint8_t * input, size_t length) {
31262 buf_block_reader<64> reader(input, length);
31277 bool generic_validate_ascii(const char * input, size_t length) {
31278 return generic_validate_ascii<utf8_checker>(reinterpret_cast<const uint8_t *>(input),length);
31282 result generic_validate_ascii_with_errors(const uint8_t * input, size_t length) {
31283 buf_block_reader<64> reader(input, length);
31288 result res = scalar::ascii::validate_with_errors(reinterpret_cast<const char*>(input + count), length - count);
31299 result res = scalar::ascii::validate_with_errors(reinterpret_cast<const char*>(input + count), length - count);
31302 return result(error_code::SUCCESS, length);
31306 result generic_validate_ascii_with_errors(const char * input, size_t length) {
31307 return generic_validate_ascii_with_errors<utf8_checker>(reinterpret_cast<const uint8_t *>(input),length);
32530 simdutf_warn_unused int implementation::detect_encodings(const char * input, size_t length) const noexcept {
32532 auto bom_encoding = simdutf::BOM::check_bom(input, length);
32534 if (length % 2 == 0) {
32535 return sse_detect_encodings<utf8_validation::utf8_checker>(input, length);
32537 if (implementation::validate_utf8(input, length)) {
33084 void implementation::change_endianness_utf16(const char16_t * input, size_t length, char16_t * output) const noexcept {
33085 utf16::change_endianness_utf16(input, length, output);
33088 simdutf_warn_unused size_t implementation::count_utf16le(const char16_t * input, size_t length) const noexcept {
33089 return utf16::count_code_points<endianness::LITTLE>(input, length);
33092 simdutf_warn_unused size_t implementation::count_utf16be(const char16_t * input, size_t length) const noexcept {
33093 return utf16::count_code_points<endianness::BIG>(input, length);
33096 simdutf_warn_unused size_t implementation::count_utf8(const char * input, size_t length) const noexcept {
33097 return utf8::count_code_points(input, length);
33104 simdutf_warn_unused size_t implementation::latin1_length_from_utf16(size_t length) const noexcept {
33105 return scalar::utf16::latin1_length_from_utf16(length);
33108 simdutf_warn_unused size_t implementation::latin1_length_from_utf32(size_t length) const noexcept {
33109 return scalar::utf32::latin1_length_from_utf32(length);
33112 simdutf_warn_unused size_t implementation::utf8_length_from_utf16le(const char16_t * input, size_t length) const noexcept {
33113 return utf16::utf8_length_from_utf16<endianness::LITTLE>(input, length);
33116 simdutf_warn_unused size_t implementation::utf8_length_from_utf16be(const char16_t * input, size_t length) const noexcept {
33117 return utf16::utf8_length_from_utf16<endianness::BIG>(input, length);
33120 simdutf_warn_unused size_t implementation::utf16_length_from_latin1(size_t length) const noexcept {
33121 return scalar::latin1::utf16_length_from_latin1(length);
33124 simdutf_warn_unused size_t implementation::utf32_length_from_latin1(size_t length) const noexcept {
33125 return scalar::latin1::utf32_length_from_latin1(length);
33175 simdutf_warn_unused size_t implementation::utf32_length_from_utf16le(const char16_t * input, size_t length) const noexcept {
33176 return utf16::utf32_length_from_utf16<endianness::LITTLE>(input, length);
33179 simdutf_warn_unused size_t implementation::utf32_length_from_utf16be(const char16_t * input, size_t length) const noexcept {
33180 return utf16::utf32_length_from_utf16<endianness::BIG>(input, length);
33183 simdutf_warn_unused size_t implementation::utf16_length_from_utf8(const char * input, size_t length) const noexcept {
33184 return utf8::utf16_length_from_utf8(input, length);
33187 simdutf_warn_unused size_t implementation::utf8_length_from_utf32(const char32_t * input, size_t length) const noexcept {
33194 for(;pos + 4 <= length; pos += 4) {
33210 return count + scalar::utf32::utf8_length_from_utf32(input + pos, length - pos);
33213 simdutf_warn_unused size_t implementation::utf16_length_from_utf32(const char32_t * input, size_t length) const noexcept {
33218 for(;pos + 4 <= length; pos += 4) {
33225 return count + scalar::utf32::utf16_length_from_utf32(input + pos, length - pos);
33228 simdutf_warn_unused size_t implementation::utf32_length_from_utf8(const char * input, size_t length) const noexcept {
33229 return utf8::count_code_points(input, length);