1use crate::{code, UnpackError};
2use byteorder::ReadBytesExt;
3use std::io;
4
5pub fn read_code<R: io::Read>(rd: &mut R) -> Result<code::Code, UnpackError> {
6 read_data_u8(rd).map(code::Code::from)
7}
8
9#[doc(hidden)]
10pub fn read_data_u8<R: io::Read>(rd: &mut R) -> Result<u8, UnpackError> {
11 rd.read_u8().map_err(UnpackError::InvalidData)
12}
13
14#[doc(hidden)]
15pub fn read_data_u16<R: io::Read>(rd: &mut R) -> Result<u16, UnpackError> {
16 rd.read_u16::<byteorder::BigEndian>()
17 .map_err(UnpackError::InvalidData)
18}
19
20#[doc(hidden)]
21pub fn read_data_u32<R: io::Read>(rd: &mut R) -> Result<u32, UnpackError> {
22 rd.read_u32::<byteorder::BigEndian>()
23 .map_err(UnpackError::InvalidData)
24}
25
26#[doc(hidden)]
27pub fn read_data_u64<R: io::Read>(rd: &mut R) -> Result<u64, UnpackError> {
28 rd.read_u64::<byteorder::BigEndian>()
29 .map_err(UnpackError::InvalidData)
30}
31
32#[doc(hidden)]
33pub fn read_data_i8<R: io::Read>(rd: &mut R) -> Result<i8, UnpackError> {
34 rd.read_i8().map_err(UnpackError::InvalidData)
35}
36
37#[doc(hidden)]
38pub fn read_data_i16<R: io::Read>(rd: &mut R) -> Result<i16, UnpackError> {
39 rd.read_i16::<byteorder::BigEndian>()
40 .map_err(UnpackError::InvalidData)
41}
42
43#[doc(hidden)]
44pub fn read_data_i32<R: io::Read>(rd: &mut R) -> Result<i32, UnpackError> {
45 rd.read_i32::<byteorder::BigEndian>()
46 .map_err(UnpackError::InvalidData)
47}
48
49#[doc(hidden)]
50pub fn read_data_i64<R: io::Read>(rd: &mut R) -> Result<i64, UnpackError> {
51 rd.read_i64::<byteorder::BigEndian>()
52 .map_err(UnpackError::InvalidData)
53}
54
55#[doc(hidden)]
56pub fn read_data_f32<R: io::Read>(rd: &mut R) -> Result<f32, UnpackError> {
57 rd.read_f32::<byteorder::BigEndian>()
58 .map_err(UnpackError::InvalidData)
59}
60
61#[doc(hidden)]
62pub fn read_data_f64<R: io::Read>(rd: &mut R) -> Result<f64, UnpackError> {
63 rd.read_f64::<byteorder::BigEndian>()
64 .map_err(UnpackError::InvalidData)
65}
66
67#[doc(hidden)]
68pub fn read_data<R: io::Read>(rd: &mut R, buf: &mut [u8]) -> Result<(), UnpackError> {
69 rd.read_exact(buf).map_err(UnpackError::InvalidData)
70}