1#![no_std]
2#![warn(clippy::all)]
3
4extern crate alloc;
11
12pub mod codepoint;
13pub mod wtf8;
14pub mod wtf8buf;
15
16#[doc(inline)]
17pub use codepoint::CodePoint;
18
19#[doc(inline)]
20pub use wtf8::{Wtf8, Wtf8Chunk};
21
22#[doc(inline)]
23pub use wtf8buf::Wtf8Buf;
24
25#[inline]
26fn decode_surrogate(second_byte: u8, third_byte: u8) -> u16 {
27 0xD800 | (second_byte as u16 & 0x3F) << 6 | third_byte as u16 & 0x3F
29}
30
31#[inline]
32fn decode_surrogate_pair(lead: u16, trail: u16) -> char {
33 let code_point = 0x1_0000 + ((((lead - 0xD800) as u32) << 10) | (trail - 0xDC00) as u32);
34 unsafe { char::from_u32_unchecked(code_point) }
36}