Compare commits

..

No commits in common. "eee043cd0f785780d4f7b32edac90244dbf900b8" and "e6f09d684a2ed369ed0c4166eefbaee87723e1d8" have entirely different histories.

2 changed files with 6 additions and 11 deletions

View file

@ -390,17 +390,13 @@ impl Register {
let desc = node.attribute("desc").map(str::to_string); let desc = node.attribute("desc").map(str::to_string);
let children: Vec<_> = { let children: Vec<_> = {
if node let mut child_elements = node.children().filter(|node| node.is_element());
.children() if child_elements.any(|node| node.tag_name().name().eq("value")) {
.filter(|node| node.is_element())
.any(|node| node.tag_name().name().eq("value"))
{
// Generate virtual single field under the register, to absorb difference between // Generate virtual single field under the register, to absorb difference between
// normal format // normal format
vec![Field::from_xml_register_dom(node)?] vec![Field::from_xml_register_dom(node)?]
} else { } else {
node.children() child_elements
.filter(|node| node.is_element())
.filter(|node| node.tag_name().name().eq("field")) .filter(|node| node.tag_name().name().eq("field"))
.map(Field::from_xml_dom) .map(Field::from_xml_dom)
.collect::<Result<_, _>>()? .collect::<Result<_, _>>()?
@ -520,9 +516,8 @@ impl Field {
/// Generate virtual Field from Registers node (piracy), guessing a lot of parameters. /// Generate virtual Field from Registers node (piracy), guessing a lot of parameters.
pub(crate) fn from_xml_register_dom(node: Node) -> Result<Self, DomConversionError> { pub(crate) fn from_xml_register_dom(node: Node) -> Result<Self, DomConversionError> {
// // Prepend "val_" to avoid name confliction with struct for accessing values // Prepend "val_" to avoid name confliction with struct for accessing values
// let name = "val_".to_string() + &util::get_name(node)?; let name = "val_".to_string() + &util::get_name(node)?;
let name = "field".to_string();
let mask = match node.attribute("mask") { let mask = match node.attribute("mask") {
Some(mask) => mask Some(mask) => mask
.parse_prefixed_u32() .parse_prefixed_u32()

View file

@ -46,7 +46,7 @@ pub fn generate(xml: &path::Path, out: &path::Path) -> Result<(), Error> {
log::debug!("xml parsed {doc:?}"); log::debug!("xml parsed {doc:?}");
let register_map = types::Module::from_xml_dom(doc.root_element(), xml_git_info)?; let register_map = types::Module::from_xml_dom(doc.root_element(), xml_git_info)?;
log::debug!("converted {register_map:#?}"); log::debug!("converted {register_map:?}");
let (_maps, errors) = register_map.validate(); let (_maps, errors) = register_map.validate();
if !errors.is_empty() { if !errors.is_empty() {