use super::inner::utf16;
use crate::{
Charset,
CharsetCodec,
CharsetDecodeResult,
CharsetEncodeResult,
DecodeStatus,
Utf16,
};
#[derive(Clone, Copy, Debug, Default, Eq, Hash, PartialEq)]
pub struct Utf16U16Codec;
impl Utf16U16Codec {
#[must_use]
#[inline]
pub const fn charset(self) -> Charset {
Charset::UTF_16
}
#[must_use]
#[inline]
pub const fn max_units_per_char(self) -> usize {
Utf16::MAX_UNITS_PER_CHAR
}
}
impl CharsetCodec for Utf16U16Codec {
type Unit = u16;
#[inline]
fn charset(&self) -> Charset {
Charset::UTF_16
}
#[inline]
fn max_units_per_char(&self) -> usize {
Utf16::MAX_UNITS_PER_CHAR
}
fn decode_one(&self, input: &[u16], index: usize) -> CharsetDecodeResult<DecodeStatus> {
utf16::decode_units_prefix(input, index)
}
fn encode_one(&self, ch: char, output: &mut [u16], index: usize) -> CharsetEncodeResult<usize> {
utf16::encode_units_char(ch, output, index)
}
}