From 687d938689f02d36e626b238a840535fd70365d1 Mon Sep 17 00:00:00 2001 From: Wataru Otsubo Date: Tue, 29 Jul 2025 19:11:50 +0900 Subject: [PATCH] update(generator): use Mmapped instead of AxiC2c1Spec --- src/generator.rs | 24 +++++++++++----------- src/generator/codegen_registerspec_impl.rs | 12 +++++------ 2 files changed, 18 insertions(+), 18 deletions(-) diff --git a/src/generator.rs b/src/generator.rs index 83d3dfd..310b9dc 100644 --- a/src/generator.rs +++ b/src/generator.rs @@ -313,7 +313,7 @@ impl CodeGen for Block { ModuleBlockElements::Block(_) => { let child_upper_camel_name = util::parse_to_ident(&child_name.to_upper_camel_case())?; Ok(quote! { - pub fn #snake_case_name(&self) -> #snake_case_name::#child_upper_camel_name { + pub fn #snake_case_name(&self) -> #snake_case_name::#child_upper_camel_name { #snake_case_name::#child_upper_camel_name::new(self.mem_ptr) } }) @@ -323,7 +323,7 @@ impl CodeGen for Block { match ®ister.multiple { None => { Ok(quote! { - pub fn #snake_case_name(&self) -> #snake_case_name::#child_upper_camel_name { + pub fn #snake_case_name(&self) -> #snake_case_name::#child_upper_camel_name { #snake_case_name::#child_upper_camel_name::new(self.mem_ptr) } }) @@ -337,7 +337,7 @@ impl CodeGen for Block { } }); Ok(quote! { - pub fn #snake_case_name(&self) -> [#snake_case_name::#child_upper_camel_name; #num_multiple] { + pub fn #snake_case_name(&self) -> [#snake_case_name::#child_upper_camel_name; #num_multiple] { [ #(#elements),* ] } }) @@ -350,9 +350,9 @@ impl CodeGen for Block { }).collect::, CodeGenError>>()?; let parent_struct = if parent_name == util::parse_to_ident("RegisterInterface").unwrap() { - quote! {#parent_name} + quote! {#parent_name} } else { - quote! {#parent_name<'a, T>} + quote! {#parent_name<'a, M>} }; let child_mods = self @@ -372,7 +372,7 @@ impl CodeGen for Block { use std::marker::PhantomData; - use crate::axic2c1::spec::AxiC2c1Spec; + use mmapped_reg::mmapped::Mmapped; use super::#parent_name; @@ -380,12 +380,12 @@ impl CodeGen for Block { const OFFSET: usize = #addr; - pub struct #upper_camel_name<'a, T: AxiC2c1Spec> { + pub struct #upper_camel_name<'a, M: Mmapped> { mem_ptr: *mut u32, _marker: PhantomData<&'a mut #parent_struct>, } - impl #upper_camel_name<'_, T> { + impl> #upper_camel_name<'_, M> { pub(crate) fn new(parent_ptr: *mut u32) -> Self { #upper_camel_name { mem_ptr: unsafe { parent_ptr.add(OFFSET) }, @@ -469,16 +469,16 @@ impl CodeGen for Register { use std::marker::PhantomData; - use crate::axic2c1::spec::AxiC2c1Spec; + use mmapped_reg::mmapped::Mmapped; const OFFSET: usize = #addr; - pub struct #reg_name<'a, T: AxiC2c1Spec> { + pub struct #reg_name<'a, M: Mmapped> { mem_ptr: *mut u32, - _marker: PhantomData<&'a mut super::#parent_name<'a, T>>, + _marker: PhantomData<&'a mut super::#parent_name<'a, M>>, } - impl #reg_name<'_, T> { + impl> #reg_name<'_, M> { pub(crate) fn new(parent_ptr: *mut u32) -> Self { #reg_name { mem_ptr: unsafe { parent_ptr.add(OFFSET) }, diff --git a/src/generator/codegen_registerspec_impl.rs b/src/generator/codegen_registerspec_impl.rs index fc3dfb6..23eb455 100644 --- a/src/generator/codegen_registerspec_impl.rs +++ b/src/generator/codegen_registerspec_impl.rs @@ -11,19 +11,19 @@ pub(super) fn gen_registerspec_impl( ) -> TokenStream { let impl_rw = match modf { RwSpecifier::R => quote! { - impl crate::register_spec::Readable for #reg_name<'_, T> {} + impl> crate::register_spec::Readable for #reg_name<'_, M> {} }, RwSpecifier::W => quote! { - impl crate::register_spec::Writable for #reg_name<'_, T> {} + impl> crate::register_spec::Writable for #reg_name<'_, M> {} }, RwSpecifier::RW => quote! { - impl crate::register_spec::Readable for #reg_name<'_, T> {} - impl crate::register_spec::Writable for #reg_name<'_, T> {} - impl crate::register_spec::Modifiable for #reg_name<'_, T> {} + impl> crate::register_spec::Readable for #reg_name<'_, M> {} + impl> crate::register_spec::Writable for #reg_name<'_, M> {} + impl> crate::register_spec::Modifiable for #reg_name<'_, M> {} }, }; quote! { - impl crate::register_spec::RegisterSpec for #reg_name<'_, T> { + impl> crate::register_spec::RegisterSpec for #reg_name<'_, M> { type Ux = #type_ux; type T = #type_t;