use crate::iter::CodePointsIter;
use crate::{JsStr, JsString, JsStringKind};
use std::ptr::NonNull;
mod sequence;
pub(crate) use sequence::SequenceString;
pub(crate) mod slice;
pub(crate) use slice::SliceString;
pub(crate) mod r#static;
pub use r#static::StaticString;
#[derive(Debug, Copy, Clone)]
#[repr(C)]
pub(crate) struct JsStringVTable {
pub clone: fn(NonNull<JsStringVTable>) -> JsString,
pub drop: fn(NonNull<JsStringVTable>),
pub as_str: fn(NonNull<JsStringVTable>) -> JsStr<'static>,
pub code_points: fn(NonNull<JsStringVTable>) -> CodePointsIter<'static>,
pub refcount: fn(NonNull<JsStringVTable>) -> Option<usize>,
pub len: usize,
pub kind: JsStringKind,
}