use crate::{NSTDBool, NSTDChar, NSTDChar32};
use nstdapi::nstdapi;
#[inline]
#[nstdapi]
pub const fn nstd_core_cty_is_unicode(chr: NSTDChar32) -> NSTDBool {
char::from_u32(chr).is_some()
}
macro_rules! gen_deterministic {
(
$(#[$meta:meta])*
$name: ident,
$method: ident
) => {
$(#[$meta])*
#[inline]
#[nstdapi]
#[allow(trivial_numeric_casts)]
pub const fn $name(chr: NSTDChar) -> NSTDBool {
(chr as u8).$method()
}
};
}
gen_deterministic!(
nstd_core_cty_is_ascii,
is_ascii
);
gen_deterministic!(
nstd_core_cty_is_alphabetic,
is_ascii_alphabetic
);
gen_deterministic!(
nstd_core_cty_is_numeric,
is_ascii_digit
);
gen_deterministic!(
nstd_core_cty_is_alphanumeric,
is_ascii_alphanumeric
);
gen_deterministic!(
nstd_core_cty_is_hexdigit,
is_ascii_hexdigit
);
gen_deterministic!(
nstd_core_cty_is_lowercase,
is_ascii_lowercase
);
gen_deterministic!(
nstd_core_cty_is_uppercase,
is_ascii_uppercase
);
gen_deterministic!(
nstd_core_cty_is_whitespace,
is_ascii_whitespace
);
gen_deterministic!(
nstd_core_cty_is_control,
is_ascii_control
);
gen_deterministic!(
nstd_core_cty_is_punctuation,
is_ascii_punctuation
);
gen_deterministic!(
nstd_core_cty_is_graphic,
is_ascii_graphic
);