Replace Data with File

This commit is contained in:
Jaby 2022-10-10 20:59:37 +02:00 committed by Jaby
parent 045b9d5c48
commit a42d624a2d
3 changed files with 21 additions and 21 deletions

View File

@ -1,28 +1,28 @@
use psxcdgen_ex::types::{layout::Layout, CDDesc, Data, Directory}; use psxcdgen_ex::types::{layout::Layout, CDDesc, File, Directory};
use tool_helper::Error; use tool_helper::Error;
fn populate() -> Result<CDDesc, Error> { fn populate() -> Result<CDDesc, Error> {
let mut desc = CDDesc::new(); let mut desc = CDDesc::new();
let file = Data::new("Planschi.jpg")?; let file = File::new("Planschi.jpg")?;
let file2 = Data::new("Wuff.png")?; let file2 = File::new("Wuff.png")?;
let folder = { let folder = {
let mut folder = Directory::new("Sub")?; let mut folder = Directory::new("Sub")?;
let sub_folder = { let sub_folder = {
let mut folder = Directory::new("SubSub")?; let mut folder = Directory::new("SubSub")?;
folder.add_data(Data::new("Blubb.bin")?); folder.add_file(File::new("Blubb.bin")?);
folder folder
}; };
folder.add_dir(sub_folder); folder.add_dir(sub_folder);
folder.add_data(Data::new("Schwimm.jpg")?); folder.add_file(File::new("Schwimm.jpg")?);
folder.add_data(Data::new("Miau.png")?); folder.add_file(File::new("Miau.png")?);
folder folder
}; };
desc.root.add_dir(folder); desc.root.add_dir(folder);
desc.root.add_data(file); desc.root.add_file(file);
desc.root.add_data(file2); desc.root.add_file(file2);
Ok(desc) Ok(desc)
} }
@ -34,7 +34,7 @@ fn run_main() -> Result<(), Error> {
Layout::SystemArea(_) => println!("SystemArea:"), Layout::SystemArea(_) => println!("SystemArea:"),
Layout::PVD(_) => println!("PVD:"), Layout::PVD(_) => println!("PVD:"),
Layout::Directory{name, properties: _} => println!("Dir: {}", name), Layout::Directory{name, properties: _} => println!("Dir: {}", name),
Layout::Data(data) => println!("File: {}", data), Layout::File(file) => println!("File: {}", file),
} }
} }
Ok(()) Ok(())

View File

@ -30,13 +30,13 @@ macro_rules! declare_memory_layout {
SystemArea(&'a $($val),* SystemArea), SystemArea(&'a $($val),* SystemArea),
PVD(&'a $($val),* PrimaryVolumeDescriptor), PVD(&'a $($val),* PrimaryVolumeDescriptor),
Directory{name: &'a $($val),* DirectoryName, properties: &'a $($val),* Properties}, Directory{name: &'a $($val),* DirectoryName, properties: &'a $($val),* Properties},
Data(&'a $($val),* Data) File(&'a $($val),* File)
} }
fn [< add_dir_and_subdir $(_$val),* >]<'a>(layout: &mut Vec<[< Layout$($val:camel),* >]::<'a>>, dir: &'a $($val),* Directory) { fn [< add_dir_and_subdir $(_$val),* >]<'a>(layout: &mut Vec<[< Layout$($val:camel),* >]::<'a>>, dir: &'a $($val),* Directory) {
layout.push([< Layout$($val:camel),* >]::Directory{name: &$($val),* dir.name, properties: &$($val),* dir.properties}); layout.push([< Layout$($val:camel),* >]::Directory{name: &$($val),* dir.name, properties: &$($val),* dir.properties});
for data in dir.data.[< iter$(_$val),* >]() { for file in dir.files.[< iter$(_$val),* >]() {
layout.push([< Layout$($val:camel),* >]::Data(data)); layout.push([< Layout$($val:camel),* >]::File(file));
} }
for dir in dir.dirs.[< iter$(_$val),* >]() { for dir in dir.dirs.[< iter$(_$val),* >]() {

View File

@ -47,21 +47,21 @@ impl PrimaryVolumeDescriptor {
pub struct Directory { pub struct Directory {
name: DirectoryName, name: DirectoryName,
properties: Properties, properties: Properties,
data: Vec<Data>, files: Vec<File>,
dirs: Vec<Directory> dirs: Vec<Directory>
} }
impl Directory { impl Directory {
pub fn new(dir_name: &str) -> Result<Directory, Error> { pub fn new(dir_name: &str) -> Result<Directory, Error> {
Ok(Directory{name: DirectoryName::from_str(dir_name)?, properties: Properties::default(), data: Vec::new(), dirs: Vec::new()}) Ok(Directory{name: DirectoryName::from_str(dir_name)?, properties: Properties::default(), files: Vec::new(), dirs: Vec::new()})
} }
pub fn add_dir(&mut self, dir: Directory) { pub fn add_dir(&mut self, dir: Directory) {
self.dirs.push(dir); self.dirs.push(dir);
} }
pub fn add_data(&mut self, data: Data) { pub fn add_file(&mut self, file: File) {
self.data.push(data); self.files.push(file);
} }
} }
@ -71,18 +71,18 @@ impl std::fmt::Display for Directory {
} }
} }
pub struct Data { pub struct File {
name: FileName, name: FileName,
properties: Properties properties: Properties
} }
impl Data { impl File {
pub fn new(file_name: &str) -> Result<Data, Error> { pub fn new(file_name: &str) -> Result<File, Error> {
Ok(Data{name: FileName::from_str(file_name)?, properties: Properties::default()}) Ok(File{name: FileName::from_str(file_name)?, properties: Properties::default()})
} }
} }
impl std::fmt::Display for Data { impl std::fmt::Display for File {
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
write!(f, "File: {}", self.name) write!(f, "File: {}", self.name)
} }