svd_encoder/
writeconstraint.rs

1use super::{new_node, Config, Element, Encode, EncodeError};
2
3use crate::svd::{WriteConstraint, WriteConstraintRange};
4
5impl Encode for WriteConstraint {
6    type Error = EncodeError;
7
8    fn encode_with_config(&self, _config: &Config) -> Result<Element, EncodeError> {
9        let v = match *self {
10            WriteConstraint::WriteAsRead(v) => new_node("writeAsRead", format!("{}", v)),
11            WriteConstraint::UseEnumeratedValues(v) => {
12                new_node("useEnumeratedValues", format!("{}", v))
13            }
14            WriteConstraint::Range(v) => v.encode_node()?,
15        };
16
17        let mut elem = Element::new("writeConstraint");
18        elem.children = vec![v];
19        Ok(elem)
20    }
21}
22
23impl Encode for WriteConstraintRange {
24    type Error = EncodeError;
25
26    fn encode_with_config(&self, _config: &Config) -> Result<Element, EncodeError> {
27        let mut elem = Element::new("range");
28        elem.children = vec![
29            new_node("minimum", format!("{}", self.min)),
30            new_node("maximum", format!("{}", self.max)),
31        ];
32        Ok(elem)
33    }
34}