Replace Data with File

This commit is contained in:
jaby 2022-10-10 20:59:37 +02:00
parent 3f898e084f
commit cb9ca1e678
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;
fn populate() -> Result<CDDesc, Error> {
let mut desc = CDDesc::new();
let file = Data::new("Planschi.jpg")?;
let file2 = Data::new("Wuff.png")?;
let file = File::new("Planschi.jpg")?;
let file2 = File::new("Wuff.png")?;
let folder = {
let mut folder = Directory::new("Sub")?;
let sub_folder = {
let mut folder = Directory::new("SubSub")?;
folder.add_data(Data::new("Blubb.bin")?);
folder.add_file(File::new("Blubb.bin")?);
folder
};
folder.add_dir(sub_folder);
folder.add_data(Data::new("Schwimm.jpg")?);
folder.add_data(Data::new("Miau.png")?);
folder.add_file(File::new("Schwimm.jpg")?);
folder.add_file(File::new("Miau.png")?);
folder
};
desc.root.add_dir(folder);
desc.root.add_data(file);
desc.root.add_data(file2);
desc.root.add_file(file);
desc.root.add_file(file2);
Ok(desc)
}
@ -34,7 +34,7 @@ fn run_main() -> Result<(), Error> {
Layout::SystemArea(_) => println!("SystemArea:"),
Layout::PVD(_) => println!("PVD:"),
Layout::Directory{name, properties: _} => println!("Dir: {}", name),
Layout::Data(data) => println!("File: {}", data),
Layout::File(file) => println!("File: {}", file),
}
}
Ok(())

View File

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

View File

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