aboutsummaryrefslogtreecommitdiff
path: root/vendor/flate2/src/crc.rs
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/flate2/src/crc.rs')
-rw-r--r--vendor/flate2/src/crc.rs184
1 files changed, 0 insertions, 184 deletions
diff --git a/vendor/flate2/src/crc.rs b/vendor/flate2/src/crc.rs
deleted file mode 100644
index 16f5601..0000000
--- a/vendor/flate2/src/crc.rs
+++ /dev/null
@@ -1,184 +0,0 @@
-//! Simple CRC bindings backed by miniz.c
-
-use std::io;
-use std::io::prelude::*;
-
-use crc32fast::Hasher;
-
-/// The CRC calculated by a [`CrcReader`].
-///
-/// [`CrcReader`]: struct.CrcReader.html
-#[derive(Debug)]
-pub struct Crc {
- amt: u32,
- hasher: Hasher,
-}
-
-/// A wrapper around a [`Read`] that calculates the CRC.
-///
-/// [`Read`]: https://doc.rust-lang.org/std/io/trait.Read.html
-#[derive(Debug)]
-pub struct CrcReader<R> {
- inner: R,
- crc: Crc,
-}
-
-impl Default for Crc {
- fn default() -> Self {
- Self::new()
- }
-}
-
-impl Crc {
- /// Create a new CRC.
- pub fn new() -> Crc {
- Crc {
- amt: 0,
- hasher: Hasher::new(),
- }
- }
-
- /// Returns the current crc32 checksum.
- pub fn sum(&self) -> u32 {
- self.hasher.clone().finalize()
- }
-
- /// The number of bytes that have been used to calculate the CRC.
- /// This value is only accurate if the amount is lower than 2<sup>32</sup>.
- pub fn amount(&self) -> u32 {
- self.amt
- }
-
- /// Update the CRC with the bytes in `data`.
- pub fn update(&mut self, data: &[u8]) {
- self.amt = self.amt.wrapping_add(data.len() as u32);
- self.hasher.update(data);
- }
-
- /// Reset the CRC.
- pub fn reset(&mut self) {
- self.amt = 0;
- self.hasher.reset();
- }
-
- /// Combine the CRC with the CRC for the subsequent block of bytes.
- pub fn combine(&mut self, additional_crc: &Crc) {
- self.amt = self.amt.wrapping_add(additional_crc.amt);
- self.hasher.combine(&additional_crc.hasher);
- }
-}
-
-impl<R: Read> CrcReader<R> {
- /// Create a new `CrcReader`.
- pub fn new(r: R) -> CrcReader<R> {
- CrcReader {
- inner: r,
- crc: Crc::new(),
- }
- }
-}
-
-impl<R> CrcReader<R> {
- /// Get the Crc for this `CrcReader`.
- pub fn crc(&self) -> &Crc {
- &self.crc
- }
-
- /// Get the reader that is wrapped by this `CrcReader`.
- pub fn into_inner(self) -> R {
- self.inner
- }
-
- /// Get the reader that is wrapped by this `CrcReader` by reference.
- pub fn get_ref(&self) -> &R {
- &self.inner
- }
-
- /// Get a mutable reference to the reader that is wrapped by this `CrcReader`.
- pub fn get_mut(&mut self) -> &mut R {
- &mut self.inner
- }
-
- /// Reset the Crc in this `CrcReader`.
- pub fn reset(&mut self) {
- self.crc.reset();
- }
-}
-
-impl<R: Read> Read for CrcReader<R> {
- fn read(&mut self, into: &mut [u8]) -> io::Result<usize> {
- let amt = self.inner.read(into)?;
- self.crc.update(&into[..amt]);
- Ok(amt)
- }
-}
-
-impl<R: BufRead> BufRead for CrcReader<R> {
- fn fill_buf(&mut self) -> io::Result<&[u8]> {
- self.inner.fill_buf()
- }
- fn consume(&mut self, amt: usize) {
- if let Ok(data) = self.inner.fill_buf() {
- self.crc.update(&data[..amt]);
- }
- self.inner.consume(amt);
- }
-}
-
-/// A wrapper around a [`Write`] that calculates the CRC.
-///
-/// [`Write`]: https://doc.rust-lang.org/std/io/trait.Write.html
-#[derive(Debug)]
-pub struct CrcWriter<W> {
- inner: W,
- crc: Crc,
-}
-
-impl<W> CrcWriter<W> {
- /// Get the Crc for this `CrcWriter`.
- pub fn crc(&self) -> &Crc {
- &self.crc
- }
-
- /// Get the writer that is wrapped by this `CrcWriter`.
- pub fn into_inner(self) -> W {
- self.inner
- }
-
- /// Get the writer that is wrapped by this `CrcWriter` by reference.
- pub fn get_ref(&self) -> &W {
- &self.inner
- }
-
- /// Get a mutable reference to the writer that is wrapped by this `CrcWriter`.
- pub fn get_mut(&mut self) -> &mut W {
- &mut self.inner
- }
-
- /// Reset the Crc in this `CrcWriter`.
- pub fn reset(&mut self) {
- self.crc.reset();
- }
-}
-
-impl<W: Write> CrcWriter<W> {
- /// Create a new `CrcWriter`.
- pub fn new(w: W) -> CrcWriter<W> {
- CrcWriter {
- inner: w,
- crc: Crc::new(),
- }
- }
-}
-
-impl<W: Write> Write for CrcWriter<W> {
- fn write(&mut self, buf: &[u8]) -> io::Result<usize> {
- let amt = self.inner.write(buf)?;
- self.crc.update(&buf[..amt]);
- Ok(amt)
- }
-
- fn flush(&mut self) -> io::Result<()> {
- self.inner.flush()
- }
-}