gst_plugin/
bytes.rs

1// Copyright (C) 2016-2017 Sebastian Dröge <sebastian@centricular.com>
2//
3// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
4// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
5// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
6// option. This file may not be copied, modified, or distributed
7// except according to those terms.
8
9pub 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 {}