#![macro_use]
#[macro_export]
macro_rules! read_ptr(($p:ident, $rem:ident, $size:ty) => ({
#[allow(unused_assignments)]
use core::mem;
let mut dp: *const $size = mem::transmute($p);
let data: $size = *dp;
dp = dp.offset(1);
$rem -= mem::size_of::<$size>();
$p = mem::transmute(dp);
data.to_le()
}));