pub mod err;
pub mod unaligned;
pub use err::Error;
pub use err::ErrorKind;
pub trait PackedRead {
fn read_boolean(&mut self) -> Result<bool, Error>;
fn read_2s_compliment_binary_integer(&mut self, bit_len: u64) -> Result<i64, Error>;
fn read_constrained_whole_number(
&mut self,
lower_bound: i64,
upper_bound: i64,
) -> Result<i64, Error>;
fn read_length_determinant(
&mut self,
lower_bound: Option<u64>,
upper_bound: Option<u64>,
) -> Result<u64, Error>;
fn read_normally_small_length(&mut self) -> Result<u64, Error>;
fn read_normally_small_non_negative_whole_number(&mut self) -> Result<u64, Error>;
fn read_non_negative_binary_integer(
&mut self,
lower_bound: Option<u64>,
upper_bound: Option<u64>,
) -> Result<u64, Error>;
fn read_semi_constrained_whole_number(&mut self, lower_bound: i64) -> Result<i64, Error>;
fn read_unconstrained_whole_number(&mut self) -> Result<i64, Error>;
fn read_bitstring(
&mut self,
lower_bound_size: Option<u64>,
upper_bound_size: Option<u64>,
extensible: bool,
) -> Result<(Vec<u8>, u64), Error>;
fn read_octetstring(
&mut self,
lower_bound_size: Option<u64>,
upper_bound_size: Option<u64>,
extensible: bool,
) -> Result<Vec<u8>, Error>;
fn read_choice_index(&mut self, std_variants: u64, extensible: bool) -> Result<u64, Error>;
fn read_enumeration_index(&mut self, std_variants: u64, extensible: bool)
-> Result<u64, Error>;
}
pub trait PackedWrite {
fn write_boolean(&mut self, boolean: bool) -> Result<(), Error>;
fn write_2s_compliment_binary_integer(&mut self, bit_len: u64, value: i64)
-> Result<(), Error>;
fn write_constrained_whole_number(
&mut self,
lower_bound: i64,
upper_bound: i64,
value: i64,
) -> Result<(), Error>;
fn write_length_determinant(
&mut self,
lower_bound: Option<u64>,
upper_bound: Option<u64>,
length: u64,
) -> Result<Option<u64>, Error>;
fn write_normally_small_length(&mut self, value: u64) -> Result<(), Error>;
fn write_normally_small_non_negative_whole_number(&mut self, value: u64) -> Result<(), Error>;
fn write_non_negative_binary_integer(
&mut self,
lower_bound: Option<u64>,
upper_bound: Option<u64>,
value: u64,
) -> Result<(), Error>;
fn write_semi_constrained_whole_number(
&mut self,
lower_bound: i64,
value: i64,
) -> Result<(), Error>;
fn write_unconstrained_whole_number(&mut self, value: i64) -> Result<(), Error>;
fn write_bitstring(
&mut self,
lower_bound_size: Option<u64>,
upper_bound_size: Option<u64>,
extensible: bool,
src: &[u8],
offset: u64,
len: u64,
) -> Result<(), Error>;
fn write_octetstring(
&mut self,
lower_bound_size: Option<u64>,
upper_bound_size: Option<u64>,
extensible: bool,
src: &[u8],
) -> Result<(), Error>;
fn write_choice_index(
&mut self,
std_variants: u64,
extensible: bool,
index: u64,
) -> Result<(), Error>;
fn write_enumeration_index(
&mut self,
std_variants: u64,
extensible: bool,
index: u64,
) -> Result<(), Error>;
}