add get_enc_len to Decoder trait
This commit is contained in:
parent
493376a805
commit
ecfd10adbc
3 changed files with 14 additions and 7 deletions
|
|
@ -5,6 +5,7 @@ use crate::fot::raw::Raw;
|
||||||
pub trait Decoder: Sized {
|
pub trait Decoder: Sized {
|
||||||
fn decode(raw: &Raw, offset: usize, size: usize) -> Result<Self>;
|
fn decode(raw: &Raw, offset: usize, size: usize) -> Result<Self>;
|
||||||
fn encode(&self) -> Raw;
|
fn encode(&self) -> Raw;
|
||||||
|
fn get_enc_len(&self) -> usize;
|
||||||
}
|
}
|
||||||
|
|
||||||
impl Decoder for String {
|
impl Decoder for String {
|
||||||
|
|
@ -21,4 +22,8 @@ impl Decoder for String {
|
||||||
str.push(0);
|
str.push(0);
|
||||||
Raw { offset: 0, size: str.len(), mem: str}
|
Raw { offset: 0, size: str.len(), mem: str}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fn get_enc_len(&self) -> usize {
|
||||||
|
self.len() + 1
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -8,12 +8,6 @@ pub struct Tag {
|
||||||
pub version: String
|
pub version: String
|
||||||
}
|
}
|
||||||
|
|
||||||
impl Tag {
|
|
||||||
pub fn get_tag_len(&self) -> usize {
|
|
||||||
self.name.len() + 1 + self.version.len() + 1
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
impl Decoder for Tag {
|
impl Decoder for Tag {
|
||||||
fn decode(raw: &Raw, offset: usize, size: usize) -> Result<Self> {
|
fn decode(raw: &Raw, offset: usize, size: usize) -> Result<Self> {
|
||||||
let name = String::decode(raw, offset, size)?;
|
let name = String::decode(raw, offset, size)?;
|
||||||
|
|
@ -22,9 +16,13 @@ impl Decoder for Tag {
|
||||||
}
|
}
|
||||||
|
|
||||||
fn encode(&self) -> Raw {
|
fn encode(&self) -> Raw {
|
||||||
Raw::join(0, self.get_tag_len(), &mut [
|
Raw::join(0, self.get_enc_len(), &mut [
|
||||||
self.name.encode(),
|
self.name.encode(),
|
||||||
self.version.encode()
|
self.version.encode()
|
||||||
])
|
])
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fn get_enc_len(&self) -> usize {
|
||||||
|
self.name.get_enc_len() + self.version.get_enc_len()
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -49,4 +49,8 @@ impl Decoder for World {
|
||||||
Raw { offset: Self::WORLD_HDR_LEN, size: data.len(), mem: data}
|
Raw { offset: Self::WORLD_HDR_LEN, size: data.len(), mem: data}
|
||||||
])
|
])
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fn get_enc_len(&self) -> usize {
|
||||||
|
Self::WORLD_HDR_LEN + self.data.mem.len()
|
||||||
|
}
|
||||||
}
|
}
|
||||||
Loading…
Add table
Reference in a new issue