Skip to content

Commit 05f449f

Browse files
WRRburrbull
authored andcommitted
Add a 'serde_svd' feature which adds serde derive macros. This facilitates easily serializing SVD files into other formats such as JSON.
1 parent 0061f56 commit 05f449f

23 files changed

+94
-0
lines changed

Cargo.toml

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,8 +11,14 @@ version = "0.7.0"
1111

1212
[features]
1313
unproven = []
14+
serde_svd = ["serde"]
1415

1516
[dependencies]
1617
either = "1.5"
1718
xmltree = "0.8"
1819
failure = "0.1"
20+
21+
[dependencies.serde]
22+
version = "1.0"
23+
features = ["derive"]
24+
optional = true

src/svd/access.rs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,10 @@ use crate::error::*;
88
use crate::new_element;
99
use crate::types::Parse;
1010

11+
#[cfg(feature = "serde_svd")]
12+
use super::serde::{ Deserialize, Serialize };
13+
14+
#[cfg_attr(feature = "serde_svd", derive(Deserialize, Serialize))]
1115
#[derive(Clone, Copy, Debug, PartialEq)]
1216
pub enum Access {
1317
ReadOnly,

src/svd/addressblock.rs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,10 @@ use crate::error::SVDError;
1212
#[cfg(feature = "unproven")]
1313
use crate::new_element;
1414

15+
#[cfg(feature = "serde_svd")]
16+
use super::serde::{ Deserialize, Serialize };
17+
18+
#[cfg_attr(feature = "serde_svd", derive(Deserialize, Serialize))]
1519
#[derive(Clone, Debug, PartialEq)]
1620
pub struct AddressBlock {
1721
pub offset: u32,

src/svd/bitrange.rs

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,13 +6,18 @@ use crate::error::*;
66
use crate::new_element;
77
use crate::types::Parse;
88

9+
#[cfg(feature = "serde_svd")]
10+
use super::serde::{ Deserialize, Serialize };
11+
12+
#[cfg_attr(feature = "serde_svd", derive(Deserialize, Serialize))]
913
#[derive(Clone, Copy, Debug, PartialEq)]
1014
pub struct BitRange {
1115
pub offset: u32,
1216
pub width: u32,
1317
pub range_type: BitRangeType,
1418
}
1519

20+
#[cfg_attr(feature = "serde_svd", derive(Deserialize, Serialize))]
1621
#[derive(Clone, Copy, Debug, PartialEq)]
1722
pub enum BitRangeType {
1823
BitRange,

src/svd/cluster.rs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,10 @@ use crate::svd::{
1313
registerclusterarrayinfo::RegisterClusterArrayInfo,
1414
};
1515

16+
#[cfg(feature = "serde_svd")]
17+
use super::serde::{ Deserialize, Serialize };
18+
19+
#[cfg_attr(feature = "serde_svd", derive(Deserialize, Serialize))]
1620
#[derive(Clone, Debug, PartialEq)]
1721
pub enum Cluster {
1822
Single(ClusterInfo),

src/svd/clusterinfo.rs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,10 @@ use crate::svd::{
1414
registerproperties::RegisterProperties,
1515
};
1616

17+
#[cfg(feature = "serde_svd")]
18+
use super::serde::{ Deserialize, Serialize };
19+
20+
#[cfg_attr(feature = "serde_svd", derive(Deserialize, Serialize))]
1721
#[derive(Clone, Debug, PartialEq)]
1822
pub struct ClusterInfo {
1923
pub name: String,

src/svd/cpu.rs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,10 @@ use crate::new_element;
1212
use crate::svd::endian::Endian;
1313
use crate::types::Parse;
1414

15+
#[cfg(feature = "serde_svd")]
16+
use super::serde::{ Deserialize, Serialize };
17+
18+
#[cfg_attr(feature = "serde_svd", derive(Deserialize, Serialize))]
1519
#[derive(Clone, Debug, PartialEq)]
1620
pub struct Cpu {
1721
pub name: String,

src/svd/device.rs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,10 @@ use crate::svd::{
1717
peripheral::Peripheral,
1818
};
1919

20+
#[cfg(feature = "serde_svd")]
21+
use super::serde::{ Deserialize, Serialize };
22+
23+
#[cfg_attr(feature = "serde_svd", derive(Deserialize, Serialize))]
2024
#[derive(Clone, Debug)]
2125
pub struct Device {
2226
pub name: String,

src/svd/endian.rs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,10 @@ use crate::types::Parse;
1010

1111
use crate::error::*;
1212

13+
#[cfg(feature = "serde_svd")]
14+
use super::serde::{ Deserialize, Serialize };
15+
16+
#[cfg_attr(feature = "serde_svd", derive(Deserialize, Serialize))]
1317
#[derive(Clone, Copy, Debug, PartialEq)]
1418
pub enum Endian {
1519
Little,

src/svd/enumeratedvalue.rs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,10 @@ use crate::error::*;
1313
use crate::new_element;
1414
use crate::types::Parse;
1515

16+
#[cfg(feature = "serde_svd")]
17+
use super::serde::{ Deserialize, Serialize };
18+
19+
#[cfg_attr(feature = "serde_svd", derive(Deserialize, Serialize))]
1620
#[derive(Clone, Debug, PartialEq)]
1721
pub struct EnumeratedValue {
1822
pub name: String,

0 commit comments

Comments
 (0)