svd_encoder/
enumeratedvalues.rs

1use super::{new_node, Config, Element, Encode, EncodeError};
2
3use crate::{config::change_case, svd::EnumeratedValues};
4
5impl Encode for EnumeratedValues {
6    type Error = EncodeError;
7
8    fn encode_with_config(&self, config: &Config) -> Result<Element, EncodeError> {
9        let mut base = Element::new("enumeratedValues");
10
11        if let Some(d) = &self.name {
12            base.children.push(new_node(
13                "name",
14                change_case(d, config.enumerated_values_name),
15            ));
16        };
17
18        if let Some(v) = &self.usage {
19            base.children.push(v.encode_node()?);
20        };
21
22        if let Some(v) = &self.derived_from {
23            base.attributes.insert(
24                String::from("derivedFrom"),
25                change_case(v, config.enumerated_values_name),
26            );
27        }
28
29        for v in &self.values {
30            base.children.push(v.encode_node_with_config(config)?);
31        }
32
33        Ok(base)
34    }
35}