mirror of
https://gitlab.cern.ch/wotsubo/endcap-sl-software-ri-generator.git
synced 2025-04-11 16:07:55 +09:00
Refactor const def
This commit is contained in:
parent
e6e7ada193
commit
b5d165a3f5
2 changed files with 19 additions and 17 deletions
|
@ -7,6 +7,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|||
|
||||
## [unreleased]
|
||||
|
||||
### Changed
|
||||
|
||||
- Moved register value mask definitions from reg module to field value impl.
|
||||
|
||||
## [0.3.0] - 2025-03-27
|
||||
|
||||
### Added
|
||||
|
|
|
@ -232,11 +232,11 @@ fn generate_single_field(
|
|||
}
|
||||
}
|
||||
FieldType::CustomValue(values) => {
|
||||
let additional =
|
||||
let values_enum_masks =
|
||||
generate_custom_values_const_enumdef(&base_type, &snake_case_name, values);
|
||||
quote! {
|
||||
const #mask_name: #base_type = #mask_val;
|
||||
#additional
|
||||
#values_enum_masks
|
||||
}
|
||||
}
|
||||
};
|
||||
|
@ -320,13 +320,8 @@ fn generate_single_ux_field(
|
|||
(code_getter, code_setter)
|
||||
}
|
||||
|
||||
fn custom_value_const_name(field_name: &Ident, value_name: &str) -> Ident {
|
||||
util::parse_to_ident(&format!(
|
||||
"{}_VAL_{}",
|
||||
field_name.to_string().to_shouty_snake_case(),
|
||||
value_name.to_shouty_snake_case()
|
||||
))
|
||||
.unwrap()
|
||||
fn custom_value_const_name(value_name: &str) -> Ident {
|
||||
util::parse_to_ident(&format!("VAL_{}", value_name.to_shouty_snake_case())).unwrap()
|
||||
}
|
||||
|
||||
/// Generate const var and value enum definition.
|
||||
|
@ -338,7 +333,7 @@ fn generate_custom_values_const_enumdef(
|
|||
values: &[Value],
|
||||
) -> TokenStream {
|
||||
let consts = values.iter().map(|value| {
|
||||
let const_name = custom_value_const_name(field_name, &value.name);
|
||||
let const_name = custom_value_const_name(&value.name);
|
||||
let val = value.data;
|
||||
quote! {
|
||||
const #const_name: #base_type = #val;
|
||||
|
@ -356,10 +351,13 @@ fn generate_custom_values_const_enumdef(
|
|||
util::parse_to_ident(&field_name.to_string().to_upper_camel_case()).unwrap();
|
||||
|
||||
quote! {
|
||||
#(#consts)*
|
||||
pub enum #value_enum_name {
|
||||
#(#variants),*
|
||||
}
|
||||
|
||||
impl #value_enum_name {
|
||||
#(#consts)*
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -376,14 +374,14 @@ fn generate_single_custom_values_field(
|
|||
let (getter_match_arms, setter_match_arms): (Vec<_>, Vec<_>) = values
|
||||
.iter()
|
||||
.map(|value| {
|
||||
let const_name = custom_value_const_name(&snake_case_name, &value.name);
|
||||
let const_name = custom_value_const_name(&value.name);
|
||||
let variant_name = util::parse_to_ident(&value.name.to_upper_camel_case()).unwrap();
|
||||
(
|
||||
quote! {
|
||||
#const_name => #value_enum_name::#variant_name
|
||||
#value_enum_name::#const_name => #value_enum_name::#variant_name
|
||||
},
|
||||
quote! {
|
||||
#value_enum_name::#variant_name => #const_name
|
||||
#value_enum_name::#variant_name => #value_enum_name::#const_name
|
||||
},
|
||||
)
|
||||
})
|
||||
|
@ -596,14 +594,14 @@ fn generate_multiple_custom_values_field(
|
|||
let (getter_match_arms, setter_match_arms): (Vec<_>, Vec<_>) = values
|
||||
.iter()
|
||||
.map(|value| {
|
||||
let const_name = custom_value_const_name(&snake_case_name, &value.name);
|
||||
let const_name = custom_value_const_name(&value.name);
|
||||
let variant_name = util::parse_to_ident(&value.name.to_upper_camel_case()).unwrap();
|
||||
(
|
||||
quote! {
|
||||
#const_name => #value_enum_name::#variant_name
|
||||
#value_enum_name::#const_name => #value_enum_name::#variant_name
|
||||
},
|
||||
quote! {
|
||||
#value_enum_name::#variant_name => #const_name
|
||||
#value_enum_name::#variant_name => #value_enum_name::#const_name
|
||||
},
|
||||
)
|
||||
})
|
||||
|
|
Loading…
Add table
Reference in a new issue