use crate::structs::{ByteOrder, Settings, StructResult, VariantIndexType}; use serde::{Deserialize, Serialize}; #[derive(Serialize, Deserialize)] pub struct Eocdr { pub eocdr_disk: u16, pub cd_disk: u16, pub cd_disk_records: u16, pub cd_records: u16, pub cd_size: u32, pub cd_pointer: u32, pub comment_len: u16, } #[derive(Serialize, Deserialize)] pub struct Eocdr64Locator { pub eocdr64_disk: u32, pub eocdr64_pointer: u64, pub disks: u32, } #[derive(Serialize, Deserialize)] pub struct Eocdr64 { pub eocdr64_size: u64, pub version: u16, pub version_needed: u16, pub eocdr64_disk: u32, pub cd_disk: u32, pub cd_disk_records: u64, pub cd_records: u64, pub cd_size: u64, pub cd_pointer: u64, } #[derive(Serialize, Deserialize)] pub struct Cdr { pub version: u16, pub version_needed: u16, pub bit_flag: u16, pub compression_method: u16, pub dos_time: u16, pub dos_date: u16, pub crc: u32, pub compressed_size: u32, pub size: u32, pub name_len: u16, pub extra_field_len: u16, pub comment_len: u16, pub disk: u16, pub internal_attributes: u16, pub external_attributes: u32, pub header_pointer: u32, } #[derive(Serialize, Deserialize)] pub struct ExtraHeader { pub id: u16, pub size: u16, } #[allow(dead_code)] pub fn serialize(object: &mut T) -> StructResult> { Settings::new(ByteOrder::Le, VariantIndexType::U8).serialize(object) } pub fn deserialize<'de, T: Deserialize<'de>>(object: &'de [u8]) -> StructResult { Settings::new(ByteOrder::Le, VariantIndexType::U8).deserialize(object) }