mirror of
https://github.com/lifegpc/msg-tool.git
synced 2026-06-24 12:47:04 +08:00
Use generic types
This commit is contained in:
@@ -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,
|
||||||
|
|||||||
@@ -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()?;
|
||||||
|
|||||||
@@ -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,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -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,
|
||||||
|
|||||||
Reference in New Issue
Block a user