Pass Version by ref

This commit is contained in:
widberg 2026-05-11 14:56:25 -04:00
parent 8d74b911e5
commit bb40bebf5d
9 changed files with 26 additions and 36 deletions

View file

@ -122,7 +122,7 @@ pub fn create(
let resource: Resource =
bff_class
.class
.to_resource(version.clone(), platform, &name_context)?;
.to_resource(version, platform, &name_context)?;
if resources.contains_key(&resource.name) {
return Err(crate::error::BffCliError::DuplicateResource {

View file

@ -89,10 +89,9 @@ pub fn create_resource(
.as_ref()
.unwrap_or(&bff_class.header.version);
let resource: Resource =
bff_class
.class
.to_resource(version.clone(), platform, &name_context)?;
let resource: Resource = bff_class
.class
.to_resource(version, platform, &name_context)?;
let mut resource_writer = BufWriter::new(File::create(resource_path)?);
Resource::dump_bff_resource(

View file

@ -155,13 +155,13 @@ fn export_bff_resource(
rich_suffix: &String,
) -> BffCliResult<()> {
let platform = bigfile.manifest().platform;
let version = bigfile.manifest().version.clone();
let version = &bigfile.manifest().version;
let header = BffResourceHeader {
platform,
version: version.clone(),
};
let class: Class = Class::from_resource(resource, version.clone(), platform, name_context)?;
let class: Class = Class::from_resource(resource, version, platform, name_context)?;
let bff_class = BffClass { header, class };
let class_name = resource.class_name.with_context(name_context).to_string();

View file

@ -57,12 +57,8 @@ pub fn extract_resource(
version: version.clone(),
};
let class: Class = Class::from_resource(
&bff_resource.resource,
version.clone(),
platform,
&name_context,
)?;
let class: Class =
Class::from_resource(&bff_resource.resource, version, platform, &name_context)?;
let bff_class = BffClass { header, class };
std::fs::create_dir(directory)?;

View file

@ -98,7 +98,7 @@ impl BigFile {
for (&name, resource) in &self.resources {
let references = Class::from_resource(
resource,
self.manifest.version.clone(),
&self.manifest.version,
self.manifest.platform,
name_context,
)

View file

@ -37,7 +37,7 @@ where
{
fn from_resource(
resource: &Resource,
_version: Version,
_version: &Version,
platform: Platform,
name_context: &NameContext,
) -> BffResult<Self> {
@ -99,7 +99,7 @@ where
{
fn to_resource(
&self,
_version: Version,
_version: &Version,
platform: Platform,
name_context: &NameContext,
) -> BffResult<Resource> {

View file

@ -102,7 +102,7 @@ macro_rules! classes {
impl crate::traits::FromResource for Class {
fn from_resource(
resource: &crate::bigfile::resource::Resource,
version: crate::bigfile::versions::Version,
version: &crate::bigfile::versions::Version,
platform: crate::bigfile::platforms::Platform,
name_context: &crate::names::NameContext,
) -> crate::BffResult<Class> {
@ -114,7 +114,7 @@ macro_rules! classes {
)*
};
}
Err(crate::error::UnimplementedClassError::new(resource.name, resource.class_name, version, platform).into())
Err(crate::error::UnimplementedClassError::new(resource.name, resource.class_name, version.clone(), platform).into())
}
}
};
@ -123,7 +123,7 @@ macro_rules! classes {
impl crate::traits::ToResource for Class {
fn to_resource(
&self,
version: crate::bigfile::versions::Version,
version: &crate::bigfile::versions::Version,
platform: crate::bigfile::platforms::Platform,
name_context: &crate::names::NameContext,
) -> crate::BffResult<crate::bigfile::resource::Resource> {
@ -200,12 +200,12 @@ macro_rules! classes {
impl crate::traits::FromResource for $class {
fn from_resource(
resource: &crate::bigfile::resource::Resource,
version: crate::bigfile::versions::Version,
version: &crate::bigfile::versions::Version,
platform: crate::bigfile::platforms::Platform,
_name_context: &crate::names::NameContext,
) -> crate::BffResult<$class> {
Err(
crate::error::UnimplementedClassError::new(resource.name, resource.class_name, version, platform).into(),
crate::error::UnimplementedClassError::new(resource.name, resource.class_name, version.clone(), platform).into(),
)
}
}
@ -213,7 +213,7 @@ macro_rules! classes {
impl crate::traits::ToResource for $class {
fn to_resource(
&self,
_version: crate::bigfile::versions::Version,
_version: &crate::bigfile::versions::Version,
_platform: crate::bigfile::platforms::Platform,
_name_context: &crate::names::NameContext,
) -> crate::BffResult<crate::bigfile::resource::Resource> {
@ -269,7 +269,7 @@ macro_rules! classes {
impl crate::traits::FromResource for $class {
fn from_resource(
resource: &crate::bigfile::resource::Resource,
version: crate::bigfile::versions::Version,
version: &crate::bigfile::versions::Version,
platform: crate::bigfile::platforms::Platform,
name_context: &crate::names::NameContext,
) -> crate::BffResult<$class> {
@ -281,7 +281,7 @@ macro_rules! classes {
Ok(std::boxed::Box::new(shadow_class).into())
})*
_ => Err(
crate::error::UnimplementedClassError::new(resource.name, resource.class_name, version, platform).into(),
crate::error::UnimplementedClassError::new(resource.name, resource.class_name, version.clone(), platform).into(),
),
}
}
@ -291,7 +291,7 @@ macro_rules! classes {
#[expect(unused_imports)]
fn to_resource(
&self,
version: crate::bigfile::versions::Version,
version: &crate::bigfile::versions::Version,
platform: crate::bigfile::platforms::Platform,
name_context: &crate::names::NameContext,
) -> crate::BffResult<crate::bigfile::resource::Resource> {

View file

@ -7,7 +7,7 @@ use crate::names::NameContext;
pub trait FromResource: Sized {
fn from_resource(
resource: &Resource,
version: Version,
version: &Version,
platform: Platform,
name_context: &NameContext,
) -> BffResult<Self>;
@ -16,7 +16,7 @@ pub trait FromResource: Sized {
pub trait ToResource {
fn to_resource(
&self,
version: Version,
version: &Version,
platform: Platform,
name_context: &NameContext,
) -> BffResult<Resource>;

View file

@ -61,16 +61,11 @@ fn roundtrip_resources(bigfile_path_str: String) {
let mut reader = BufReader::new(f);
let mut name_context = probe_name_context(&mut reader, platform);
let bigfile = BigFile::read_platform(&mut reader, platform, &None, &name_context).unwrap();
let version = bigfile.manifest().version.clone();
let version = &bigfile.manifest().version;
for bff_resource in bigfile.bff_resources() {
let class: Class = Class::from_resource(
bff_resource.resource,
version.clone(),
platform,
&name_context,
)
.unwrap();
let class: Class =
Class::from_resource(bff_resource.resource, version, platform, &name_context).unwrap();
let bff_class = BffClass {
header: BffResourceHeader {
platform,
@ -90,7 +85,7 @@ fn roundtrip_resources(bigfile_path_str: String) {
let new_resource: Resource = roundtripped_bff_class
.class
.to_resource(version.clone(), platform, &name_context)
.to_resource(version, platform, &name_context)
.unwrap();
let resource_name = bff_resource
.resource