Skip to content

Commit 7b9e9ad

Browse files
committed
add maybe_array constructors
1 parent 366e2fd commit 7b9e9ad

File tree

5 files changed

+33
-0
lines changed

5 files changed

+33
-0
lines changed

svd-rs/CHANGELOG.md

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

88
## Unreleased
99

10+
- add `maybe_array` constructors
1011
- Bump MSRV to 1.65.0
1112
- Bump `regex` to 1.10
1213

svd-rs/src/cluster.rs

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -203,6 +203,14 @@ impl ClusterInfo {
203203
pub const fn array(self, dim: DimElement) -> Cluster {
204204
Cluster::Array(self, dim)
205205
}
206+
/// Construct single [`Cluster`] or array
207+
pub fn maybe_array(self, dim: Option<DimElement>) -> Cluster {
208+
if let Some(dim) = dim {
209+
self.array(dim)
210+
} else {
211+
self.single()
212+
}
213+
}
206214
/// Modify an existing [`ClusterInfo`] based on a [builder](ClusterInfoBuilder).
207215
pub fn modify_from(
208216
&mut self,

svd-rs/src/field.rs

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -248,6 +248,14 @@ impl FieldInfo {
248248
pub const fn array(self, dim: DimElement) -> Field {
249249
Field::Array(self, dim)
250250
}
251+
/// Construct single [`Field`] or array
252+
pub fn maybe_array(self, dim: Option<DimElement>) -> Field {
253+
if let Some(dim) = dim {
254+
self.array(dim)
255+
} else {
256+
self.single()
257+
}
258+
}
251259
/// Modify an existing [`FieldInfo`] based on a [builder](FieldInfoBuilder).
252260
pub fn modify_from(
253261
&mut self,

svd-rs/src/peripheral.rs

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -313,6 +313,14 @@ impl PeripheralInfo {
313313
pub const fn array(self, dim: DimElement) -> Peripheral {
314314
Peripheral::Array(self, dim)
315315
}
316+
/// Construct single [`Peripheral`] or array
317+
pub fn maybe_array(self, dim: Option<DimElement>) -> Peripheral {
318+
if let Some(dim) = dim {
319+
self.array(dim)
320+
} else {
321+
self.single()
322+
}
323+
}
316324
/// Modify an existing [`Peripheral`] based on a [builder](PeripheralInfoBuilder).
317325
pub fn modify_from(
318326
&mut self,

svd-rs/src/register.rs

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -288,6 +288,14 @@ impl RegisterInfo {
288288
pub const fn array(self, dim: DimElement) -> Register {
289289
Register::Array(self, dim)
290290
}
291+
/// Construct single [`Register`] or array
292+
pub fn maybe_array(self, dim: Option<DimElement>) -> Register {
293+
if let Some(dim) = dim {
294+
self.array(dim)
295+
} else {
296+
self.single()
297+
}
298+
}
291299
/// Modify an existing [`RegisterInfo`] based on a [builder](RegisterInfoBuilder).
292300
pub fn modify_from(
293301
&mut self,

0 commit comments

Comments
 (0)