#[inline]
pub fn is_alpha(c: u8) -> bool {
(c >= 0x41 && c <= 0x5A) || (c >= 0x61 && c <= 0x7A)
}
#[inline]
pub fn is_bit(c: u8) -> bool {
c == b'0' || c == b'1'
}
#[inline]
pub fn is_char(c: u8) -> bool {
c >= 0x01 && c <= 0x7F
}
#[inline]
pub fn is_cr(c: u8) -> bool {
c == 0x0D
}
#[inline]
pub fn is_crlf(i: &[u8]) -> bool {
if i.len() < 2 {
return false;
}
is_cr(i[0]) && is_lf(i[1])
}
#[inline]
pub fn is_ctl(c: u8) -> bool {
c <= 0x1F || c == 0x7F
}
#[inline]
pub fn is_digit(c: u8) -> bool {
c >= 0x30 && c <= 0x39
}
#[inline]
pub fn is_dquote(c: u8) -> bool {
c == 0x22
}
#[inline]
pub fn is_hexdig(c: u8) -> bool {
is_digit(c)
|| c == b'A'
|| c == b'B'
|| c == b'C'
|| c == b'D'
|| c == b'E'
|| c == b'F'
|| c == b'a'
|| c == b'b'
|| c == b'c'
|| c == b'd'
|| c == b'e'
|| c == b'f'
}
#[inline]
pub fn is_htab(c: u8) -> bool {
c == 0x09
}
#[inline]
pub fn is_lf(c: u8) -> bool {
c == 0x0A
}
#[inline]
pub fn is_octet(_: u8) -> bool {
return true;
}
#[inline]
pub fn is_sp(c: u8) -> bool {
c == 0x20
}
#[inline]
pub fn is_vchar(c: u8) -> bool {
c >= 0x21 && c <= 0x7E
}
#[inline]
pub fn is_wsp(c: u8) -> bool {
is_sp(c) || is_htab(c)
}
#[inline]
pub fn is_alphanum(c: u8) -> bool {
is_digit(c) || is_alpha(c)
}
#[inline]
pub fn is_reserved(c: u8) -> bool {
c == b';'
|| c == b'/'
|| c == b'?'
|| c == b':'
|| c == b'@'
|| c == b'&'
|| c == b'='
|| c == b'+'
|| c == b'$'
|| c == b','
}
#[inline]
pub fn is_unreserved(c: u8) -> bool {
is_alphanum(c) || is_mark(c)
}
#[inline]
pub fn is_mark(c: u8) -> bool {
c == b'-'
|| c == b'_'
|| c == b'.'
|| c == b'!'
|| c == b'~'
|| c == b'*'
|| c == b'\''
|| c == b'('
|| c == b')'
}
#[inline]
pub fn is_escaped(i: &[u8]) -> bool {
if i.len() < 3 {
return false;
}
i[0] == b'%' && is_hexdig(i[1]) && is_hexdig(i[2])
}
#[inline]
pub fn is_lhex(c: u8) -> bool {
is_digit(c) || c >= 0x61 && c <= 0x66
}
#[inline]
pub fn is_separators(c: u8) -> bool {
c == b'('
|| c == b')'
|| c == b'<'
|| c == b'>'
|| c == b'@'
|| c == b','
|| c == b';'
|| c == b':'
|| c == b'\\'
|| is_dquote(c)
|| c == b'/'
|| c == b'['
|| c == b']'
|| c == b'?'
|| c == b'='
|| c == b'{'
|| c == b'}'
|| is_sp(c)
|| is_htab(c)
}
#[inline]
pub fn is_word_char(c: u8) -> bool {
is_alphanum(c)
|| c == b'-'
|| c == b'.'
|| c == b'!'
|| c == b'%'
|| c == b'*'
|| c == b'_'
|| c == b'+'
|| c == b'`'
|| c == b'\''
|| c == b'~'
|| c == b'('
|| c == b')'
|| c == b'<'
|| c == b'>'
|| c == b':'
|| c == b'\\'
|| is_dquote(c)
|| c == b'/'
|| c == b'['
|| c == b']'
|| c == b'?'
|| c == b'{'
|| c == b'}'
}
#[inline]
pub fn is_quoted_pair(i: &[u8]) -> bool {
i[0] == b'\\' && (i[1] <= 0x09 || i[1] >= 0x0B && i[1] <= 0x0C || i[1] >= 0x0E && i[1] <= 0x7F)
}
#[inline]
pub fn is_token_char(c: u8) -> bool {
is_alphanum(c)
|| c == b'-'
|| c == b'.'
|| c == b'!'
|| c == b'%'
|| c == b'*'
|| c == b'_'
|| c == b'+'
|| c == b'`'
|| c == b'\''
|| c == b'~'
}
#[inline]
pub fn is_utf8_cont(c: u8) -> bool {
c >= 0x80 && c <= 0xBF
}
#[inline]
pub fn is_user_unreserved_char(c: u8) -> bool {
c == b'&'
|| c == b'='
|| c == b'+'
|| c == b'$'
|| c == b','
|| c == b';'
|| c == b'?'
|| c == b'/'
}
#[inline]
pub fn is_password_char(c: u8) -> bool {
is_unreserved(c) || c == b'&' || c == b'=' || c == b'+' || c == b'$' || c == b','
}