mirror of
https://gitlab.cern.ch/wotsubo/endcap-sl-software-ri-generator.git
synced 2025-06-08 05:55:44 +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]
|
## [unreleased]
|
||||||
|
|
||||||
|
### Changed
|
||||||
|
|
||||||
|
- Moved register value mask definitions from reg module to field value impl.
|
||||||
|
|
||||||
## [0.3.0] - 2025-03-27
|
## [0.3.0] - 2025-03-27
|
||||||
|
|
||||||
### Added
|
### Added
|
||||||
|
|
|
@ -232,11 +232,11 @@ fn generate_single_field(
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
FieldType::CustomValue(values) => {
|
FieldType::CustomValue(values) => {
|
||||||
let additional =
|
let values_enum_masks =
|
||||||
generate_custom_values_const_enumdef(&base_type, &snake_case_name, values);
|
generate_custom_values_const_enumdef(&base_type, &snake_case_name, values);
|
||||||
quote! {
|
quote! {
|
||||||
const #mask_name: #base_type = #mask_val;
|
const #mask_name: #base_type = #mask_val;
|
||||||
#additional
|
#values_enum_masks
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
@ -320,13 +320,8 @@ fn generate_single_ux_field(
|
||||||
(code_getter, code_setter)
|
(code_getter, code_setter)
|
||||||
}
|
}
|
||||||
|
|
||||||
fn custom_value_const_name(field_name: &Ident, value_name: &str) -> Ident {
|
fn custom_value_const_name(value_name: &str) -> Ident {
|
||||||
util::parse_to_ident(&format!(
|
util::parse_to_ident(&format!("VAL_{}", value_name.to_shouty_snake_case())).unwrap()
|
||||||
"{}_VAL_{}",
|
|
||||||
field_name.to_string().to_shouty_snake_case(),
|
|
||||||
value_name.to_shouty_snake_case()
|
|
||||||
))
|
|
||||||
.unwrap()
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Generate const var and value enum definition.
|
/// Generate const var and value enum definition.
|
||||||
|
@ -338,7 +333,7 @@ fn generate_custom_values_const_enumdef(
|
||||||
values: &[Value],
|
values: &[Value],
|
||||||
) -> TokenStream {
|
) -> TokenStream {
|
||||||
let consts = values.iter().map(|value| {
|
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;
|
let val = value.data;
|
||||||
quote! {
|
quote! {
|
||||||
const #const_name: #base_type = #val;
|
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();
|
util::parse_to_ident(&field_name.to_string().to_upper_camel_case()).unwrap();
|
||||||
|
|
||||||
quote! {
|
quote! {
|
||||||
#(#consts)*
|
|
||||||
pub enum #value_enum_name {
|
pub enum #value_enum_name {
|
||||||
#(#variants),*
|
#(#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
|
let (getter_match_arms, setter_match_arms): (Vec<_>, Vec<_>) = values
|
||||||
.iter()
|
.iter()
|
||||||
.map(|value| {
|
.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();
|
let variant_name = util::parse_to_ident(&value.name.to_upper_camel_case()).unwrap();
|
||||||
(
|
(
|
||||||
quote! {
|
quote! {
|
||||||
#const_name => #value_enum_name::#variant_name
|
#value_enum_name::#const_name => #value_enum_name::#variant_name
|
||||||
},
|
},
|
||||||
quote! {
|
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
|
let (getter_match_arms, setter_match_arms): (Vec<_>, Vec<_>) = values
|
||||||
.iter()
|
.iter()
|
||||||
.map(|value| {
|
.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();
|
let variant_name = util::parse_to_ident(&value.name.to_upper_camel_case()).unwrap();
|
||||||
(
|
(
|
||||||
quote! {
|
quote! {
|
||||||
#const_name => #value_enum_name::#variant_name
|
#value_enum_name::#const_name => #value_enum_name::#variant_name
|
||||||
},
|
},
|
||||||
quote! {
|
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