atdf2svd 0.6.0

Tool to convert Atmel's ATDF files to SVD
Documentation
use crate::ElementExt;
use crate::chip;
use crate::util;

pub fn parse(interrupt: &xmltree::Element) -> crate::Result<chip::Interrupt> {
    debug_assert!(interrupt.name == "interrupt");

    let name = {
        let inst_name = interrupt.attr("name")?;
        interrupt
            .attr("module-instance")
            .map_or_else(|_| inst_name.clone(), |s| format!("{}_{}", s, inst_name))
    };
    let index = util::parse_int(interrupt.attr("index")?)?;
    let description = interrupt
        .attributes
        .get("caption")
        .and_then(|d| if !d.is_empty() { Some(d) } else { None })
        .cloned();

    Ok(chip::Interrupt {
        name,
        description,
        index,
    })
}