macro_rules! _ansi_consts {
(
// const fn definition returning a byte slice
$(
$(#[$DOCS:meta])*
$vis:vis const fn $fn:ident($($param:ident: $param_ty:ty),* $(,)?) -> &[u8]
$fn_body:block
)*) => { $crate::paste! {
$(
// byte slice version
#[must_use]
#[allow(missing_docs)]
$vis const fn [<$fn _B>]($($param: $param_ty),*) -> &[u8] $fn_body
$(#[$DOCS])*
#[must_use]
$vis const fn $fn($($param: $param_ty),*) -> &str {
#[cfg(any(feature = "safe_text", not(feature = "unsafe_str")))]
{ $crate::unwrap,*))] }
#[cfg(all(not(feature = "safe_text"), feature = "unsafe_str"))]
unsafe { $crate::Str::from_utf8_unchecked(Ansi::[<$fn _B>]($($param),*)) }
}
)*
}};
(
$(
$(#[$DOCS:meta])*
$vis:vis const fn $fn:ident($($param:ident: $param_ty:ty),* $(,)?) -> [u8; $N:literal]
$fn_body:block
)*) => { $crate::paste! {
$(
#[must_use]
#[allow(missing_docs)]
$vis const fn [<$fn _B>]($($param: $param_ty),*) -> [u8; $N] $fn_body
$(#[$DOCS])*
$vis const fn $fn($($param: $param_ty),*) -> $crate::StringNonul<$N> {
$crate::StringNonul::<$N>::_from_array_trusted(Ansi::[<$fn _B>]($($param),*))
}
)*
}};
(
$(
$(#[$DOCS:meta])*
$vis:vis const $const:ident: $const_ty:ty = $str:expr, $array:expr
);* $(;)?) => { $crate::paste! {
$(
#[allow(missing_docs, non_upper_case_globals)]
$vis const [<$const _B>]: $const_ty = $array;
$(#[$DOCS])*
$vis const $const: &str = $str;
)*
}};
(
$(
$(#[$DOCS:meta])*
$vis:vis const $const:ident: [u8; $N:literal] = Ansi::$fn:ident ($($param:expr),*)
);* $(;)?) => { $crate::paste! {
$(
#[allow(missing_docs, non_upper_case_globals)]
$vis const [<$const _B>]: [u8; $N] = $crate::Ansi::[<$fn _B>]($($param),*);
$(#[$DOCS])*
$vis const $const: $crate::StringNonul<$N> = $crate::Ansi::$fn($($param),*);
)*
}};
}
pub(crate) use _ansi_consts;