1#ifndef SIMDUTF_VALID_UTF16_TO_LATIN1_H
2#define SIMDUTF_VALID_UTF16_TO_LATIN1_H
7namespace utf16_to_latin1 {
9template <endianness big_endian,
class InputIterator,
class OutputIterator>
10simdutf_constexpr23
inline size_t
11convert_valid_impl(InputIterator data,
size_t len,
12 OutputIterator latin_output) {
14 std::is_same<
typename std::decay<
decltype(*data)>::type, uint16_t>::value,
15 "must decay to uint16_t");
17 const auto start = latin_output;
21 word = !match_system(big_endian) ? u16_swap_bytes(data[pos]) : data[pos];
22 *latin_output++ = char(word);
26 return latin_output - start;
29template <endianness big_endian>
30simdutf_really_inline
size_t convert_valid(
const char16_t *buf,
size_t len,
32 return convert_valid_impl<big_endian>(
reinterpret_cast<const uint16_t *
>(buf),