1pub use byteorder::{BigEndian, LittleEndian, ReadBytesExt, WriteBytesExt};
10use std::io;
11
12pub trait ReadBytesExtShort: io::Read {
13 fn read_u16le(&mut self) -> io::Result<u16> {
14 self.read_u16::<LittleEndian>()
15 }
16 fn read_i16le(&mut self) -> io::Result<i16> {
17 self.read_i16::<LittleEndian>()
18 }
19 fn read_u32le(&mut self) -> io::Result<u32> {
20 self.read_u32::<LittleEndian>()
21 }
22 fn read_i32le(&mut self) -> io::Result<i32> {
23 self.read_i32::<LittleEndian>()
24 }
25 fn read_u64le(&mut self) -> io::Result<u64> {
26 self.read_u64::<LittleEndian>()
27 }
28 fn read_i64le(&mut self) -> io::Result<i64> {
29 self.read_i64::<LittleEndian>()
30 }
31 fn read_uintle(&mut self, nbytes: usize) -> io::Result<u64> {
32 self.read_uint::<LittleEndian>(nbytes)
33 }
34 fn read_intle(&mut self, nbytes: usize) -> io::Result<i64> {
35 self.read_int::<LittleEndian>(nbytes)
36 }
37 fn read_f32le(&mut self) -> io::Result<f32> {
38 self.read_f32::<LittleEndian>()
39 }
40 fn read_f64le(&mut self) -> io::Result<f64> {
41 self.read_f64::<LittleEndian>()
42 }
43 fn read_u16be(&mut self) -> io::Result<u16> {
44 self.read_u16::<BigEndian>()
45 }
46 fn read_i16be(&mut self) -> io::Result<i16> {
47 self.read_i16::<BigEndian>()
48 }
49 fn read_u32be(&mut self) -> io::Result<u32> {
50 self.read_u32::<BigEndian>()
51 }
52 fn read_i32be(&mut self) -> io::Result<i32> {
53 self.read_i32::<BigEndian>()
54 }
55 fn read_u64be(&mut self) -> io::Result<u64> {
56 self.read_u64::<BigEndian>()
57 }
58 fn read_i64be(&mut self) -> io::Result<i64> {
59 self.read_i64::<BigEndian>()
60 }
61 fn read_uintbe(&mut self, nbytes: usize) -> io::Result<u64> {
62 self.read_uint::<BigEndian>(nbytes)
63 }
64 fn read_intbe(&mut self, nbytes: usize) -> io::Result<i64> {
65 self.read_int::<BigEndian>(nbytes)
66 }
67 fn read_f32be(&mut self) -> io::Result<f32> {
68 self.read_f32::<BigEndian>()
69 }
70 fn read_f64be(&mut self) -> io::Result<f64> {
71 self.read_f64::<BigEndian>()
72 }
73}
74
75impl<T> ReadBytesExtShort for T where T: ReadBytesExt {}
76
77pub trait WriteBytesExtShort: WriteBytesExt {
78 fn write_u16le(&mut self, n: u16) -> io::Result<()> {
79 self.write_u16::<LittleEndian>(n)
80 }
81 fn write_i16le(&mut self, n: i16) -> io::Result<()> {
82 self.write_i16::<LittleEndian>(n)
83 }
84 fn write_u32le(&mut self, n: u32) -> io::Result<()> {
85 self.write_u32::<LittleEndian>(n)
86 }
87 fn write_i32le(&mut self, n: i32) -> io::Result<()> {
88 self.write_i32::<LittleEndian>(n)
89 }
90 fn write_u64le(&mut self, n: u64) -> io::Result<()> {
91 self.write_u64::<LittleEndian>(n)
92 }
93 fn write_i64le(&mut self, n: i64) -> io::Result<()> {
94 self.write_i64::<LittleEndian>(n)
95 }
96 fn write_uintle(&mut self, n: u64, nbytes: usize) -> io::Result<()> {
97 self.write_uint::<LittleEndian>(n, nbytes)
98 }
99 fn write_intle(&mut self, n: i64, nbytes: usize) -> io::Result<()> {
100 self.write_int::<LittleEndian>(n, nbytes)
101 }
102 fn write_f32le(&mut self, n: f32) -> io::Result<()> {
103 self.write_f32::<LittleEndian>(n)
104 }
105 fn write_f64le(&mut self, n: f64) -> io::Result<()> {
106 self.write_f64::<LittleEndian>(n)
107 }
108 fn write_u16be(&mut self, n: u16) -> io::Result<()> {
109 self.write_u16::<BigEndian>(n)
110 }
111 fn write_i16be(&mut self, n: i16) -> io::Result<()> {
112 self.write_i16::<BigEndian>(n)
113 }
114 fn write_u32be(&mut self, n: u32) -> io::Result<()> {
115 self.write_u32::<BigEndian>(n)
116 }
117 fn write_i32be(&mut self, n: i32) -> io::Result<()> {
118 self.write_i32::<BigEndian>(n)
119 }
120 fn write_u64be(&mut self, n: u64) -> io::Result<()> {
121 self.write_u64::<BigEndian>(n)
122 }
123 fn write_i64be(&mut self, n: i64) -> io::Result<()> {
124 self.write_i64::<BigEndian>(n)
125 }
126 fn write_uintbe(&mut self, n: u64, nbytes: usize) -> io::Result<()> {
127 self.write_uint::<BigEndian>(n, nbytes)
128 }
129 fn write_intbe(&mut self, n: i64, nbytes: usize) -> io::Result<()> {
130 self.write_int::<BigEndian>(n, nbytes)
131 }
132 fn write_f32be(&mut self, n: f32) -> io::Result<()> {
133 self.write_f32::<BigEndian>(n)
134 }
135 fn write_f64be(&mut self, n: f64) -> io::Result<()> {
136 self.write_f64::<BigEndian>(n)
137 }
138}
139
140impl<T> WriteBytesExtShort for T where T: WriteBytesExt {}