use std::io::Result as IoResult;
use byteorder::ByteOrder;
pub trait ReadSlice<'a> {
fn read_u8(&mut self) -> IoResult<u8>;
fn read_u16<B: ByteOrder>(&mut self) -> IoResult<u16>;
fn read_u32<B: ByteOrder>(&mut self) -> IoResult<u32>;
fn read_u64<B: ByteOrder>(&mut self) -> IoResult<u64>;
fn read_u128<B: ByteOrder>(&mut self) -> IoResult<u128>;
fn read_uint32<B: ByteOrder>(&mut self, nb_bytes: usize) -> IoResult<u32>;
fn read_uint64<B: ByteOrder>(&mut self, nb_bytes: usize) -> IoResult<u64>;
fn read_uint128<B: ByteOrder>(&mut self, nb_bytes: usize) -> IoResult<u128>;
fn read_i8(&mut self) -> IoResult<i8>;
fn read_i16<B: ByteOrder>(&mut self) -> IoResult<i16>;
fn read_i32<B: ByteOrder>(&mut self) -> IoResult<i32>;
fn read_i64<B: ByteOrder>(&mut self) -> IoResult<i64>;
fn read_i128<B: ByteOrder>(&mut self) -> IoResult<i128>;
fn read_int32<B: ByteOrder>(&mut self, nb_bytes: usize) -> IoResult<i32>;
fn read_int64<B: ByteOrder>(&mut self, nb_bytes: usize) -> IoResult<i64>;
fn read_int128<B: ByteOrder>(&mut self, nb_bytes: usize) -> IoResult<i128>;
fn read_f32<B: ByteOrder>(&mut self) -> IoResult<f32>;
fn read_f64<B: ByteOrder>(&mut self) -> IoResult<f64>;
fn read_slice(&mut self, nb_bytes: usize) -> IoResult<&'a [u8]>;
fn read_slice_to_end(&mut self) -> &'a [u8];
fn move_forward(&mut self, nb_bytes: usize) -> IoResult<()>;
}