1#ifndef SIMDUTF_LATIN1_TO_UTF16_H
2#define SIMDUTF_LATIN1_TO_UTF16_H
7namespace latin1_to_utf16 {
9template <endianness big_endian,
typename InputPtr>
10#if SIMDUTF_CPLUSPLUS20
11 requires simdutf::detail::indexes_into_byte_like<InputPtr>
13simdutf_constexpr23
size_t convert(InputPtr data,
size_t len,
14 char16_t *utf16_output) {
16 char16_t *start{utf16_output};
22 char16_t(match_system(big_endian) ? word : u16_swap_bytes(word));
26 return utf16_output - start;
29template <endianness big_endian>
30inline result convert_with_errors(
const char *buf,
size_t len,
31 char16_t *utf16_output) {
32 const uint8_t *data =
reinterpret_cast<const uint8_t *
>(buf);
34 char16_t *start{utf16_output};
40 char16_t(match_system(big_endian) ? word : u16_swap_bytes(word));
44 return result(error_code::SUCCESS, utf16_output - start);