use core::arch::wasm32::v128;
use crate::{Escapes, EscapesBuilder, Vector, generic::Generic, writer::Writer};
type WasmVector = v128;
#[inline(always)]
pub fn escape<E: EscapesBuilder, R>(haystack: &str, writer: impl Writer<R>) -> Result<(), R> {
let len = haystack.len();
if len < WasmVector::BYTES {
return <E::Escapes<()> as Escapes>::byte_byte_escape(haystack, writer);
}
Generic::new(E::new::<WasmVector>()).escape(haystack, writer)
}
#[macro_export]
macro_rules! escape_builder {
($builder:ty) => {
$crate::struct_string!($crate::builder_string!(
escape_string,
$crate::arch::wasm32::escape,
escape,
$builder
));
$crate::struct_bytes!($crate::builder_bytes!(
escape_bytes,
$crate::arch::wasm32::escape,
escape,
$builder
));
$crate::struct_display!(
escape_fmt,
escape_fmt_internal,
$crate::builder_fmt!(
escape_fmt_internal,
$crate::arch::wasm32::escape,
escape,
$builder
),
$builder
);
};
}