use lib::{mem, ptr};
use super::algorithm::*;
#[doc(hidden)]
#[derive(Clone, Copy, Debug, PartialEq, Eq)]
pub struct ParseState {
pub curr: *const u8,
pub trunc: *const u8,
}
#[allow(dead_code)]
impl ParseState {
#[inline(always)]
pub unsafe extern "C" fn new(p: *const u8)
-> ParseState
{
ParseState {
curr: p,
trunc: ptr::null()
}
}
#[inline(always)]
pub unsafe extern "C" fn truncated_bytes(&self)
-> usize
{
if self.is_truncated() {
distance(self.trunc, self.curr)
} else {
0
}
}
#[inline(always)]
pub unsafe extern "C" fn is_truncated(&self) -> bool {
!self.trunc.is_null()
}
#[inline(always)]
pub unsafe extern "C" fn increment(&mut self) {
self.curr = self.curr.add(1);
}
#[inline(always)]
pub unsafe extern "C" fn set_default_trunc(&mut self) {
if self.trunc.is_null() {
self.trunc = self.curr;
}
}
#[inline(always)]
pub unsafe extern "C" fn ltrim_char(&mut self, last: *const u8, c: u8) {
self.curr = ltrim_char_range(self.curr, last, c);
}
}