Skip to content

Commit 43bdf10

Browse files
bors[bot]burrbull
andauthored
Merge #145
145: implement From for Builders r=Emilgardis a=burrbull Co-authored-by: Andrey Zgarbul <[email protected]>
2 parents 561aa27 + 7d578f5 commit 43bdf10

File tree

10 files changed

+133
-0
lines changed

10 files changed

+133
-0
lines changed

CHANGELOG.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,8 @@ and this project adheres to [Semantic Versioning](http://semver.org/).
77

88
## [Unreleased]
99

10+
- Added implementations of `From<Type>` for `TypeBuilder`'s
11+
1012
## [v0.10.1] - 2021-04-17
1113

1214
- Added `DeriveFrom` implementation for `FieldInfo`

src/svd/clusterinfo.rs

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,20 @@ pub struct ClusterInfoBuilder {
5252
children: Option<Vec<RegisterCluster>>,
5353
}
5454

55+
impl From<ClusterInfo> for ClusterInfoBuilder {
56+
fn from(c: ClusterInfo) -> Self {
57+
Self {
58+
name: Some(c.name),
59+
address_offset: Some(c.address_offset),
60+
derived_from: c.derived_from,
61+
description: c.description,
62+
header_struct_name: c.header_struct_name,
63+
default_register_properties: c.default_register_properties,
64+
children: Some(c.children),
65+
}
66+
}
67+
}
68+
5569
impl ClusterInfoBuilder {
5670
pub fn name(mut self, value: String) -> Self {
5771
self.name = Some(value);

src/svd/cpu.rs

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,20 @@ pub struct CpuBuilder {
4646
has_vendor_systick: Option<bool>,
4747
}
4848

49+
impl From<Cpu> for CpuBuilder {
50+
fn from(c: Cpu) -> Self {
51+
Self {
52+
name: Some(c.name),
53+
revision: Some(c.revision),
54+
endian: Some(c.endian),
55+
mpu_present: Some(c.mpu_present),
56+
fpu_present: Some(c.fpu_present),
57+
nvic_priority_bits: Some(c.nvic_priority_bits),
58+
has_vendor_systick: Some(c.has_vendor_systick),
59+
}
60+
}
61+
}
62+
4963
impl CpuBuilder {
5064
pub fn name(mut self, value: String) -> Self {
5165
self.name = Some(value);

src/svd/device.rs

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -69,6 +69,22 @@ pub struct DeviceBuilder {
6969
default_register_properties: RegisterProperties,
7070
}
7171

72+
impl From<Device> for DeviceBuilder {
73+
fn from(d: Device) -> Self {
74+
Self {
75+
name: Some(d.name),
76+
schema_version: d.schema_version,
77+
version: d.version,
78+
description: d.description,
79+
address_unit_bits: d.address_unit_bits,
80+
width: d.width,
81+
cpu: d.cpu,
82+
peripherals: Some(d.peripherals),
83+
default_register_properties: d.default_register_properties,
84+
}
85+
}
86+
}
87+
7288
impl DeviceBuilder {
7389
pub fn name(mut self, value: String) -> Self {
7490
self.name = Some(value);

src/svd/dimelement.rs

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,16 @@ pub struct DimElementBuilder {
3232
dim_index: Option<Vec<String>>,
3333
}
3434

35+
impl From<DimElement> for DimElementBuilder {
36+
fn from(d: DimElement) -> Self {
37+
Self {
38+
dim: Some(d.dim),
39+
dim_increment: Some(d.dim_increment),
40+
dim_index: d.dim_index,
41+
}
42+
}
43+
}
44+
3545
impl DimElementBuilder {
3646
pub fn dim(mut self, value: u32) -> Self {
3747
self.dim = Some(value);

src/svd/enumeratedvalue.rs

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,17 @@ pub struct EnumeratedValueBuilder {
4848
is_default: Option<bool>,
4949
}
5050

51+
impl From<EnumeratedValue> for EnumeratedValueBuilder {
52+
fn from(e: EnumeratedValue) -> Self {
53+
Self {
54+
name: Some(e.name),
55+
description: e.description,
56+
value: e.value,
57+
is_default: e.is_default,
58+
}
59+
}
60+
}
61+
5162
impl EnumeratedValueBuilder {
5263
pub fn name(mut self, value: String) -> Self {
5364
self.name = Some(value);

src/svd/enumeratedvalues.rs

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,17 @@ pub struct EnumeratedValuesBuilder {
4747
values: Option<Vec<EnumeratedValue>>,
4848
}
4949

50+
impl From<EnumeratedValues> for EnumeratedValuesBuilder {
51+
fn from(e: EnumeratedValues) -> Self {
52+
Self {
53+
name: e.name,
54+
usage: e.usage,
55+
derived_from: e.derived_from,
56+
values: Some(e.values),
57+
}
58+
}
59+
}
60+
5061
impl EnumeratedValuesBuilder {
5162
pub fn name(mut self, value: Option<String>) -> Self {
5263
self.name = value;

src/svd/fieldinfo.rs

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -67,6 +67,21 @@ pub struct FieldInfoBuilder {
6767
modified_write_values: Option<ModifiedWriteValues>,
6868
}
6969

70+
impl From<FieldInfo> for FieldInfoBuilder {
71+
fn from(f: FieldInfo) -> Self {
72+
Self {
73+
name: Some(f.name),
74+
bit_range: Some(f.bit_range),
75+
derived_from: f.derived_from,
76+
description: f.description,
77+
access: f.access,
78+
enumerated_values: Some(f.enumerated_values),
79+
write_constraint: f.write_constraint,
80+
modified_write_values: f.modified_write_values,
81+
}
82+
}
83+
}
84+
7085
impl FieldInfoBuilder {
7186
pub fn name(mut self, value: String) -> Self {
7287
self.name = Some(value);

src/svd/peripheral.rs

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -83,6 +83,24 @@ pub struct PeripheralBuilder {
8383
derived_from: Option<String>,
8484
}
8585

86+
impl From<Peripheral> for PeripheralBuilder {
87+
fn from(p: Peripheral) -> Self {
88+
Self {
89+
name: Some(p.name),
90+
base_address: Some(p.base_address),
91+
version: p.version,
92+
display_name: p.display_name,
93+
group_name: p.group_name,
94+
description: p.description,
95+
address_block: p.address_block,
96+
interrupt: p.interrupt,
97+
default_register_properties: p.default_register_properties,
98+
registers: p.registers,
99+
derived_from: p.derived_from,
100+
}
101+
}
102+
}
103+
86104
impl PeripheralBuilder {
87105
pub fn name(mut self, value: String) -> Self {
88106
self.name = Some(value);

src/svd/registerinfo.rs

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -93,6 +93,28 @@ pub struct RegisterInfoBuilder {
9393
modified_write_values: Option<ModifiedWriteValues>,
9494
}
9595

96+
impl From<RegisterInfo> for RegisterInfoBuilder {
97+
fn from(r: RegisterInfo) -> Self {
98+
Self {
99+
name: Some(r.name),
100+
address_offset: Some(r.address_offset),
101+
alternate_group: r.alternate_group,
102+
alternate_register: r.alternate_register,
103+
derived_from: r.derived_from,
104+
description: r.description,
105+
properties: RegisterProperties {
106+
size: r.size,
107+
access: r.access,
108+
reset_value: r.reset_value,
109+
reset_mask: r.reset_mask,
110+
},
111+
fields: r.fields,
112+
write_constraint: r.write_constraint,
113+
modified_write_values: r.modified_write_values,
114+
}
115+
}
116+
}
117+
96118
impl RegisterInfoBuilder {
97119
pub fn name(mut self, value: String) -> Self {
98120
self.name = Some(value);

0 commit comments

Comments
 (0)