svd_encoder/
addressblock.rs1use 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}