svd_rs/readaction.rs
1/// Specifies the side effect following a read operation
2#[cfg_attr(
3 feature = "serde",
4 derive(serde::Deserialize, serde::Serialize),
5 serde(rename_all = "camelCase")
6)]
7#[derive(Clone, Copy, Debug, PartialEq, Eq)]
8pub enum ReadAction {
9 /// The register/field is cleared (set to zero) following a read operation
10 Clear,
11
12 /// The register/field is set (set to ones) following a read operation
13 Set,
14
15 /// The register/field is modified in some way after a read operation
16 Modify,
17
18 /// One or more dependent resources other than the current register/field are immediately affected by a read operation
19 ModifyExternal,
20}
21
22impl Default for ReadAction {
23 fn default() -> Self {
24 Self::Modify
25 }
26}
27
28impl ReadAction {
29 /// Parse a string into an [`ReadAction`] value, returning [`Option::None`] if the string is not valid.
30 pub fn parse_str(s: &str) -> Option<Self> {
31 use self::ReadAction::*;
32 match s {
33 "clear" => Some(Clear),
34 "set" => Some(Set),
35 "modify" => Some(Modify),
36 "modifyExternal" => Some(ModifyExternal),
37 _ => None,
38 }
39 }
40
41 /// Convert this [`ReadAction`] into a static string.
42 pub const fn as_str(self) -> &'static str {
43 match self {
44 Self::Clear => "clear",
45 Self::Set => "set",
46 Self::Modify => "modify",
47 Self::ModifyExternal => "modifyExternal",
48 }
49 }
50}