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