const CMARK_CTYPE_CLASS: [u8; 256] = [
0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 2, 2, 2, 2, 2, 2,
2, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 2, 2, 2, 2, 2,
2, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 2, 2, 2, 2, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
];
pub fn isspace(ch: &u8) -> bool {
*ch < 0x80 && CMARK_CTYPE_CLASS[*ch as usize] == 1
}
pub fn ispunct(ch: &u8) -> bool {
*ch < 0x80 && CMARK_CTYPE_CLASS[*ch as usize] == 2
}
pub fn isdigit(ch: &u8) -> bool {
*ch < 0x80 && CMARK_CTYPE_CLASS[*ch as usize] == 3
}
pub fn isalpha(ch: &u8) -> bool {
*ch < 0x80 && CMARK_CTYPE_CLASS[*ch as usize] == 4
}
pub fn isalnum(ch: &u8) -> bool {
*ch < 0x80 && (CMARK_CTYPE_CLASS[*ch as usize] == 3 || CMARK_CTYPE_CLASS[*ch as usize] == 4)
}