self.io.peek_byte()
}
+ /// Reads four-byte array from the stream.
+ pub fn read_tag(&mut self) -> ByteIOResult<[u8; 4]> {
+ let mut buf = [0u8; 4];
+ self.io.read_buf(&mut buf)?;
+ Ok(buf)
+ }
+
+ /// Reads four-byte array from the stream without advancing read position.
+ pub fn peek_tag(&mut self) -> ByteIOResult<[u8; 4]> {
+ let mut buf = [0u8; 4];
+ self.io.peek_buf(&mut buf)?;
+ Ok(buf)
+ }
+
/// Reads 16-bit big-endian integer from the stream.
pub fn read_u16be(&mut self) -> ByteIOResult<u16> {
read_int!(self, u16, 2, to_be)
}
fn peek_buf(&mut self, buf: &mut [u8]) -> ByteIOResult<usize> {
- let copy_size = if self.buf.len() - self.pos < buf.len() { self.buf.len() } else { buf.len() };
+ let copy_size = if self.buf.len() - self.pos < buf.len() { self.buf.len() - self.pos } else { buf.len() };
if copy_size == 0 { return Err(ByteIOError::EOF); }
let dst = &mut buf[0..copy_size];
dst.copy_from_slice(&self.buf[self.pos..][..copy_size]);