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