macro_rules! submit_error {
($iter:expr, $error:expr) => ({
bs_jump!($iter.context, bs_available!($iter.context));
(*$iter.on_error)($error($iter.context.byte));
return None;
});
}
macro_rules! submit_name {
($iter:expr) => ({
return Some((
unsafe {
let mut s = String::with_capacity($iter.name.len());
s.as_mut_vec().extend_from_slice(&$iter.name);
s
},
None
));
});
}
macro_rules! submit_name_value {
($name:expr, $value:expr) => ({
return Some((
unsafe {
let mut s = String::with_capacity($name.len());
s.as_mut_vec().extend_from_slice(&$name);
s
},
unsafe {
let mut s = String::with_capacity($value.len());
s.as_mut_vec().extend_from_slice(&$value);
Some(s)
}
));
});
($iter:expr) => ({
return Some((
unsafe {
let mut s = String::with_capacity($iter.name.len());
s.as_mut_vec().extend_from_slice(&$iter.name);
s
},
unsafe {
let mut s = String::with_capacity($iter.value.len());
s.as_mut_vec().extend_from_slice(&$iter.value);
Some(s)
}
));
});
}
mod decode;
mod field;
mod query;
#[cfg(test)]
mod test;
pub use util::decode::{ DecodeError, decode };
pub use util::field::{ FieldError, FieldIterator };
pub use util::query::{ QueryError, QueryIterator };