Skip to content

Commit 5654cb7

Browse files
committed
Make encode completely hidden behind "unproven" feature
1 parent b3d1906 commit 5654cb7

23 files changed

+172
-56
lines changed

src/lib.rs

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@ extern crate xmltree;
2929
#[macro_use]
3030
extern crate failure;
3131

32+
#[cfg(feature = "unproven")]
3233
use std::collections::HashMap;
3334

3435
use xmltree::Element;
@@ -45,6 +46,7 @@ use error::{SVDError};
4546
pub mod parse;
4647
use parse::Parse;
4748
// Encode defines encoding interfaces
49+
#[cfg(feature = "unproven")]
4850
pub mod encode;
4951
#[cfg(feature = "unproven")]
5052
use encode::Encode;
@@ -77,6 +79,7 @@ fn trim_utf8_bom(s: &str) -> &str {
7779
}
7880

7981
/// Helper to create new base xml elements
82+
#[cfg(feature = "unproven")]
8083
pub (crate) fn new_element(name: &str, text: Option<String>) -> Element {
8184
Element {
8285
name: String::from(name),
@@ -86,16 +89,12 @@ pub (crate) fn new_element(name: &str, text: Option<String>) -> Element {
8689
}
8790
}
8891

89-
#[cfg(test)]
90-
use std::fmt::Debug;
91-
#[cfg(test)]
92-
use types::Encode;
93-
9492
/// Generic test helper function
9593
/// Takes an array of (item, xml) pairs where the item implements
9694
/// Parse and Encode and tests object encoding and decoding
9795
#[cfg(test)]
98-
pub fn run_test<T: Parse<Error=SVDError, Object=T> + Encode<Error=SVDError> + Debug + PartialEq>(tests: &[(T, &str)]) {
96+
#[cfg(feature = "unproven")]
97+
pub fn run_test<T: Parse<Error=SVDError, Object=T> + Encode<Error=SVDError> + ::std::fmt::Debug + PartialEq>(tests: &[(T, &str)]) {
9998
for t in tests {
10099
let tree1 = Element::parse(t.1.as_bytes()).unwrap();
101100
let elem = T::parse(&tree1).unwrap();

src/svd/access.rs

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,10 @@
22
use xmltree::Element;
33

44
use elementext::ElementExt;
5-
use types::{Parse, Encode};
5+
use types::Parse;
6+
#[cfg(feature = "unproven")]
7+
use encode::Encode;
8+
#[cfg(feature = "unproven")]
69
use new_element;
710
use error::*;
811

@@ -34,6 +37,7 @@ impl Parse for Access {
3437
}
3538
}
3639

40+
#[cfg(feature = "unproven")]
3741
impl Encode for Access {
3842
type Error = SVDError;
3943

@@ -51,6 +55,7 @@ impl Encode for Access {
5155
}
5256

5357
#[cfg(test)]
58+
#[cfg(feature = "unproven")]
5459
mod tests {
5560
use super::*;
5661
use run_test;

src/svd/addressblock.rs

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,15 @@
11

2+
#[cfg(feature = "unproven")]
23
use std::collections::HashMap;
34

45
use xmltree::Element;
56
use elementext::ElementExt;
67

7-
use types::{Parse, Encode};
8+
use types::Parse;
9+
10+
#[cfg(feature = "unproven")]
11+
use encode::Encode;
12+
#[cfg(feature = "unproven")]
813
use new_element;
914
use error::SVDError;
1015

@@ -28,6 +33,7 @@ impl Parse for AddressBlock {
2833
}
2934
}
3035

36+
#[cfg(feature = "unproven")]
3137
impl Encode for AddressBlock {
3238
type Error = SVDError;
3339

@@ -46,6 +52,7 @@ impl Encode for AddressBlock {
4652
}
4753

4854
#[cfg(test)]
55+
#[cfg(feature = "unproven")]
4956
mod tests {
5057
use super::*;
5158
use run_test;

src/svd/bitrange.rs

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,9 @@
22
use xmltree::Element;
33
use failure::ResultExt;
44

5+
#[cfg(feature = "unproven")]
56
use new_element;
6-
use types::{Parse};
7+
use types::Parse;
78
use error::*;
89

910
#[derive(Clone, Copy, Debug, PartialEq)]
@@ -75,7 +76,7 @@ impl Parse for BitRange {
7576
})
7677
}
7778
}
78-
79+
#[cfg(feature = "unproven")]
7980
impl BitRange {
8081
// TODO: Encode method differs from Encode trait as it acts on a set of possible children, create an interface or decide how to better do this
8182
pub fn encode(&self) -> Result<Vec<Element>, SVDError> {
@@ -109,6 +110,7 @@ impl BitRange {
109110
}
110111

111112
#[cfg(test)]
113+
#[cfg(feature = "unproven")]
112114
mod tests {
113115
use super::*;
114116

src/svd/cluster.rs

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,12 +2,16 @@
22
use std::ops::Deref;
33
use xmltree::Element;
44

5-
use elementext::ElementExt;
65

7-
use types::{Parse, Encode};
6+
use types::Parse;
7+
8+
#[cfg(feature = "unproven")]
9+
use encode::Encode;
10+
#[cfg(feature = "unproven")]
11+
use elementext::ElementExt;
812
use error::*;
9-
use ::svd::clusterinfo::ClusterInfo;
10-
use ::svd::registerclusterarrayinfo::RegisterClusterArrayInfo;
13+
use svd::clusterinfo::ClusterInfo;
14+
use svd::registerclusterarrayinfo::RegisterClusterArrayInfo;
1115

1216
#[derive(Clone, Debug, PartialEq)]
1317
pub enum Cluster {
@@ -55,6 +59,7 @@ impl Parse for Cluster {
5559
}
5660
}
5761

62+
#[cfg(feature = "unproven")]
5863
impl Encode for Cluster {
5964
type Error = SVDError;
6065
// TODO: support Cluster encoding

src/svd/clusterinfo.rs

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,11 @@
33
use xmltree::Element;
44
use elementext::ElementExt;
55

6-
use types::{Parse, Encode};
6+
use types::Parse;
7+
8+
#[cfg(feature = "unproven")]
9+
use encode::Encode;
10+
#[cfg(feature = "unproven")]
711
use new_element;
812
use parse;
913

@@ -58,6 +62,7 @@ impl Parse for ClusterInfo {
5862
}
5963
}
6064

65+
#[cfg(feature = "unproven")]
6166
impl Encode for ClusterInfo {
6267
type Error = SVDError;
6368
fn encode(&self) -> Result<Element, SVDError> {

src/svd/cpu.rs

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,14 @@
11

2+
#[cfg(feature = "unproven")]
23
use std::collections::HashMap;
34

45
use xmltree::Element;
56

67
use elementext::ElementExt;
7-
use types::{Parse, Encode};
8+
use types::Parse;
9+
#[cfg(feature = "unproven")]
10+
use encode::Encode;
11+
#[cfg(feature = "unproven")]
812
use new_element;
913
use error::*;
1014
use svd::endian::Endian;
@@ -46,6 +50,7 @@ impl Parse for Cpu {
4650
}
4751
}
4852

53+
#[cfg(feature = "unproven")]
4954
impl Encode for Cpu {
5055
type Error = SVDError;
5156

@@ -76,6 +81,7 @@ impl Cpu {
7681

7782

7883
#[cfg(test)]
84+
#[cfg(feature = "unproven")]
7985
mod tests {
8086
use super::*;
8187
use run_test;

src/svd/defaults.rs

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,12 @@
11
use xmltree::Element;
22

33
use parse;
4-
use types::{Parse, Encode};
4+
use types::Parse;
5+
#[cfg(feature = "unproven")]
6+
use encode::EncodeChildren;
7+
#[cfg(feature = "unproven")]
8+
use encode::Encode;
9+
#[cfg(feature = "unproven")]
510
use new_element;
611
use error::*;
712

@@ -33,8 +38,10 @@ impl Parse for Defaults {
3338
}
3439
}
3540

36-
impl Defaults {
37-
pub fn encode_children(&self) -> Result<Vec<Element>, SVDError> {
41+
#[cfg(feature = "unproven")]
42+
impl EncodeChildren for Defaults {
43+
type Error = SVDError;
44+
fn encode(&self) -> Result<Vec<Element>, SVDError> {
3845
let mut children = Vec::new();
3946

4047
match self.size {
@@ -71,6 +78,7 @@ impl Defaults {
7178

7279

7380
#[cfg(test)]
81+
#[cfg(feature = "unproven")]
7482
mod tests {
7583
use super::*;
7684

@@ -101,7 +109,7 @@ mod tests {
101109
assert_eq!(parsed, expected, "Parsing tree failed");
102110

103111
let mut tree2 = new_element("mock", None);
104-
tree2.children = parsed.encode_children().unwrap();
112+
tree2.children = parsed.encode().unwrap();
105113
assert_eq!(tree1, tree2, "Encoding value failed");
106114
}
107115
}

src/svd/device.rs

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,15 @@
11

2+
#[cfg(feature = "unproven")]
23
use std::collections::HashMap;
34
use xmltree::Element;
45
use elementext::ElementExt;
56

67
use parse;
7-
use types::{Parse, Encode};
8+
use types::Parse;
9+
10+
#[cfg(feature = "unproven")]
11+
use encode::Encode;
12+
#[cfg(feature = "unproven")]
813
use new_element;
914
use ::error::SVDError;
1015
use ::svd::cpu::Cpu;
@@ -54,6 +59,7 @@ impl Parse for Device {
5459
}
5560
}
5661

62+
#[cfg(feature = "unproven")]
5763
impl Encode for Device {
5864
type Error = SVDError;
5965

src/svd/endian.rs

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,14 @@
11

2+
#[cfg(feature = "unproven")]
23
use std::collections::HashMap;
34

45
use xmltree::Element;
56

67
use elementext::ElementExt;
7-
use types::{Parse, Encode};
8+
use types::Parse;
9+
#[cfg(feature = "unproven")]
10+
use encode::Encode;
11+
812
use error::*;
913

1014
#[derive(Clone, Copy, Debug, PartialEq)]
@@ -32,6 +36,7 @@ impl Parse for Endian {
3236
}
3337
}
3438

39+
#[cfg(feature = "unproven")]
3540
impl Encode for Endian {
3641
type Error = SVDError;
3742

@@ -53,6 +58,7 @@ impl Encode for Endian {
5358
}
5459

5560
#[cfg(test)]
61+
#[cfg(feature = "unproven")]
5662
mod tests {
5763
use super::*;
5864
use run_test;

0 commit comments

Comments
 (0)