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> { pub struct DscDecoder<'a> {
stream: MsbBitStream<'a>, stream: MsbBitStream<MemReaderRef<'a>>,
key: u32, key: u32,
magic: u32, magic: u32,
output_size: u32, output_size: u32,

View File

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

View File

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

View File

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