mirror of
https://codeberg.org/demostf/parser.git
synced 2026-06-04 02:24:12 +02:00
remove the need to keep the full stringtables in state
This commit is contained in:
parent
a0322d9885
commit
3783eb5d9e
5 changed files with 54 additions and 76 deletions
|
|
@ -72,21 +72,35 @@ impl ExtraData {
|
|||
}
|
||||
}
|
||||
|
||||
#[derive(BitRead, Clone, Default)]
|
||||
#[endianness = "LittleEndian"]
|
||||
#[derive(Clone, Default)]
|
||||
pub struct StringTableEntry {
|
||||
pub text: String,
|
||||
pub text: Option<String>,
|
||||
pub extra_data: Option<ExtraData>,
|
||||
}
|
||||
|
||||
impl StringTableEntry {
|
||||
pub fn text(&self) -> &str {
|
||||
self.text.as_ref().map(|s| s.as_str()).unwrap_or("")
|
||||
}
|
||||
}
|
||||
|
||||
impl BitRead<LittleEndian> for StringTableEntry {
|
||||
fn read(stream: &mut Stream) -> ReadResult<Self> {
|
||||
Ok(StringTableEntry {
|
||||
text: Some(stream.read()?),
|
||||
extra_data: stream.read()?
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
impl fmt::Debug for StringTableEntry {
|
||||
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
|
||||
match &self.extra_data {
|
||||
None => write!(f, "StringTableEntry {{ text: \"{}\" }}", self.text),
|
||||
None => write!(f, "StringTableEntry {{ text: \"{}\" }}", self.text()),
|
||||
Some(extra_data) => write!(
|
||||
f,
|
||||
"StringTableEntry{{ text: \"{}\" extra_data: {} bytes }}",
|
||||
self.text, extra_data.byte_len
|
||||
self.text(), extra_data.byte_len
|
||||
),
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue