svd_encoder/
addressblock.rs

1use crate::config::format_number;
2
3use super::{new_node, Config, Element, Encode, EncodeError, XMLNode};
4
5impl Encode for crate::svd::AddressBlock {
6    type Error = EncodeError;
7
8    fn encode_with_config(&self, config: &Config) -> Result<Element, EncodeError> {
9        let mut children = vec![
10            new_node(
11                "offset",
12                format_number(self.offset, config.address_block_offset),
13            ),
14            new_node("size", format_number(self.size, config.address_block_size)),
15            self.usage.encode_node()?,
16        ];
17        if let Some(v) = &self.protection {
18            children.push(v.encode_node()?);
19        };
20        let mut elem = Element::new("addressBlock");
21        elem.children = children;
22        Ok(elem)
23    }
24}
25
26impl Encode for crate::svd::AddressBlockUsage {
27    type Error = EncodeError;
28
29    fn encode_with_config(&self, _config: &Config) -> Result<Element, EncodeError> {
30        let mut elem = Element::new("usage");
31        elem.children.push(XMLNode::Text(self.as_str().to_string()));
32        Ok(elem)
33    }
34}