Use generic types

This commit is contained in:
2025-06-19 14:27:19 +08:00
parent 6e45e90878
commit 63286fe5a0
4 changed files with 9 additions and 9 deletions

View File

@@ -51,7 +51,7 @@ struct HuffmanNode {
}
pub struct DscDecoder<'a> {
stream: MsbBitStream<'a>,
stream: MsbBitStream<MemReaderRef<'a>>,
key: u32,
magic: u32,
output_size: u32,

View File

@@ -166,7 +166,7 @@ impl Script for BgiCBG {
}
struct CbgDecoder<'a> {
stream: MsbBitStream<'a>,
stream: MsbBitStream<MemReaderRef<'a>>,
info: &'a BgiCBGHeader,
color_type: CbgColorType,
key: u32,
@@ -568,7 +568,7 @@ impl HuffmanTree {
Self { nodes }
}
fn decode_token(&self, stream: &mut MsbBitStream<'_>) -> Result<usize> {
fn decode_token(&self, stream: &mut MsbBitStream<MemReaderRef<'_>>) -> Result<usize> {
let mut node_index = self.nodes.len() - 1;
loop {
let bit = stream.get_next_bit()?;

View File

@@ -4,7 +4,7 @@ use anyhow::Result;
use std::io::Write;
pub struct LZWDecoder<'a> {
m_input: MsbBitStream<'a>,
m_input: MsbBitStream<MemReaderRef<'a>>,
m_output_size: u32,
}

View File

@@ -1,15 +1,15 @@
use crate::ext::io::*;
use anyhow::Result;
use std::io::Write;
use std::io::{Read, Write};
pub struct MsbBitStream<'a> {
pub m_input: MemReaderRef<'a>,
pub struct MsbBitStream<T: Read> {
pub m_input: T,
m_bits: u32,
pub m_cached_bits: u32,
}
impl<'a> MsbBitStream<'a> {
pub fn new(input: MemReaderRef<'a>) -> Self {
impl<T: Read> MsbBitStream<T> {
pub fn new(input: T) -> Self {
MsbBitStream {
m_input: input,
m_bits: 0,