Skip to content

Commit d04ede7

Browse files
committed
Format code
1 parent 6556874 commit d04ede7

File tree

7 files changed

+82
-29
lines changed

7 files changed

+82
-29
lines changed

encoding/src/decode/primitive_value.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
//! Parsing of primitive values
2-
use crate::error::{Result, InvalidValueReadError};
2+
use crate::error::{InvalidValueReadError, Result};
33
use dicom_core::chrono::{DateTime, FixedOffset, NaiveDate, NaiveTime, TimeZone};
44
use std::ops::{Add, Mul, Sub};
55

object/src/attribute.rs

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
use dicom_core::{Tag, VR, header::DataElementHeader};
2+
use std::io::Read;
3+
4+
/// Abstraction for any attribute in a DICOM object.
5+
pub trait Attribute<'a> {
6+
type Error;
7+
type Reader: 'a + Read;
8+
type Item: 'a;
9+
type ItemIter: IntoIterator<Item = Self::Item>;
10+
11+
/// Retrive the header information of this attribute.
12+
fn header(&self) -> DataElementHeader;
13+
14+
/// Retrieve the value representation.
15+
fn vr(&self) -> VR {
16+
self.header().vr
17+
}
18+
19+
/// Retrieve the tag.
20+
fn tag(&self) -> Tag {
21+
self.header().tag
22+
}
23+
24+
/// Read the entire value as a single string.
25+
fn str(&self) -> Result<&'a str, Self::Error>;
26+
27+
/// Read the entire value as raw bytes.
28+
fn raw_bytes(&self) -> Result<&'a [u8], Self::Error>;
29+
30+
/// Create a new byte reader for the value of this attribute.
31+
fn stream(&self) -> Result<Self::Reader, Self::Error>;
32+
}

object/src/mem.rs

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -216,10 +216,7 @@ where
216216
let cs = SpecificCharacterSet::Default;
217217
let mut dataset = DataSetReader::new_with_dictionary(file, dict.clone(), ts, cs)?;
218218
let obj = InMemDicomObject::build_object(&mut dataset, dict, false, Length::UNDEFINED)?;
219-
Ok(RootDicomObject {
220-
meta,
221-
obj,
222-
})
219+
Ok(RootDicomObject { meta, obj })
223220
}
224221
}
225222

parser/src/dataset/mod.rs

Lines changed: 24 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -43,16 +43,30 @@ impl PartialEq<Self> for DataToken {
4343
fn eq(&self, other: &Self) -> bool {
4444
use DataToken::*;
4545
match (self, other) {
46-
(ElementHeader(DataElementHeader { tag: tag1, vr: vr1, len: len1 }), ElementHeader(DataElementHeader { tag: tag2, vr: vr2, len: len2 })) => {
47-
tag1 == tag2 && vr1 == vr2 && len1.inner_eq(*len2)
48-
}
49-
(SequenceStart { tag: tag1, len: len1 }, SequenceStart { tag: tag2, len: len2 }) => {
50-
tag1 == tag2 && len1.inner_eq(*len2)
51-
},
52-
(ItemStart {len: len1}, ItemStart {len: len2}) => {
53-
len1.inner_eq(*len2)
54-
},
55-
(PrimitiveValue(v1), PrimitiveValue(v2)) => { v1 == v2 }
46+
(
47+
ElementHeader(DataElementHeader {
48+
tag: tag1,
49+
vr: vr1,
50+
len: len1,
51+
}),
52+
ElementHeader(DataElementHeader {
53+
tag: tag2,
54+
vr: vr2,
55+
len: len2,
56+
}),
57+
) => tag1 == tag2 && vr1 == vr2 && len1.inner_eq(*len2),
58+
(
59+
SequenceStart {
60+
tag: tag1,
61+
len: len1,
62+
},
63+
SequenceStart {
64+
tag: tag2,
65+
len: len2,
66+
},
67+
) => tag1 == tag2 && len1.inner_eq(*len2),
68+
(ItemStart { len: len1 }, ItemStart { len: len2 }) => len1.inner_eq(*len2),
69+
(PrimitiveValue(v1), PrimitiveValue(v2)) => v1 == v2,
5670
(ItemEnd, ItemEnd) | (SequenceEnd, SequenceEnd) => true,
5771
_ => false,
5872
}

parser/src/dataset/read.rs

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -709,7 +709,9 @@ mod tests {
709709
tag: Tag(0x0018, 0x6011),
710710
len: Length::UNDEFINED,
711711
},
712-
DataToken::ItemStart { len: Length::UNDEFINED },
712+
DataToken::ItemStart {
713+
len: Length::UNDEFINED,
714+
},
713715
DataToken::ElementHeader(DataElementHeader {
714716
tag: Tag(0x0018, 0x6012),
715717
vr: VR::US,
@@ -723,7 +725,9 @@ mod tests {
723725
}),
724726
DataToken::PrimitiveValue(PrimitiveValue::U16([2].as_ref().into())),
725727
DataToken::ItemEnd,
726-
DataToken::ItemStart { len: Length::UNDEFINED },
728+
DataToken::ItemStart {
729+
len: Length::UNDEFINED,
730+
},
727731
DataToken::ElementHeader(DataElementHeader {
728732
tag: Tag(0x0018, 0x6012),
729733
vr: VR::US,
@@ -742,5 +746,4 @@ mod tests {
742746

743747
validate_dataset_reader(DATA, ground_truth);
744748
}
745-
746749
}

parser/src/dataset/write.rs

Lines changed: 17 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -115,9 +115,7 @@ where
115115
self.last_de = Some(de.clone());
116116
self.write_impl(token)
117117
}
118-
_ => {
119-
self.write_impl(token)
120-
}
118+
_ => self.write_impl(token),
121119
}
122120
}
123121

@@ -128,9 +126,8 @@ where
128126
self.printer.encode_element_header(header)?;
129127
}
130128
SequenceStart { tag, len } => {
131-
self.printer.encode_element_header(
132-
DataElementHeader::new(tag, VR::SQ, len),
133-
)?;
129+
self.printer
130+
.encode_element_header(DataElementHeader::new(tag, VR::SQ, len))?;
134131
}
135132
SequenceEnd => {
136133
self.printer.encode_sequence_delimiter()?;
@@ -142,7 +139,9 @@ where
142139
self.printer.encode_item_delimiter()?;
143140
}
144141
PrimitiveValue(ref value) => {
145-
let last_de = self.last_de.as_ref()
142+
let last_de = self
143+
.last_de
144+
.as_ref()
146145
.ok_or_else(|| DataSetSyntaxError::UnexpectedToken(token.clone()))?;
147146
self.printer.encode_primitive(last_de, value)?;
148147
self.last_de = None;
@@ -156,7 +155,11 @@ where
156155
mod tests {
157156
use super::super::DataToken;
158157
use super::DataSetWriter;
159-
use dicom_core::{Tag, VR, header::{DataElementHeader, Length}, value::PrimitiveValue};
158+
use dicom_core::{
159+
header::{DataElementHeader, Length},
160+
value::PrimitiveValue,
161+
Tag, VR,
162+
};
160163
use dicom_encoding::text::DefaultCharacterSetCodec;
161164
use dicom_encoding::transfer_syntax::explicit_le::ExplicitVRLittleEndianEncoder;
162165

@@ -245,7 +248,9 @@ mod tests {
245248
tag: Tag(0x0018, 0x6011),
246249
len: Length::UNDEFINED,
247250
},
248-
DataToken::ItemStart { len: Length::UNDEFINED },
251+
DataToken::ItemStart {
252+
len: Length::UNDEFINED,
253+
},
249254
DataToken::ElementHeader(DataElementHeader {
250255
tag: Tag(0x0018, 0x6012),
251256
vr: VR::US,
@@ -259,7 +264,9 @@ mod tests {
259264
}),
260265
DataToken::PrimitiveValue(PrimitiveValue::U16([2].as_ref().into())),
261266
DataToken::ItemEnd,
262-
DataToken::ItemStart { len: Length::UNDEFINED },
267+
DataToken::ItemStart {
268+
len: Length::UNDEFINED,
269+
},
263270
DataToken::ElementHeader(DataElementHeader {
264271
tag: Tag(0x0018, 0x6012),
265272
vr: VR::US,

parser/src/parser.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,13 +8,13 @@ use chrono::FixedOffset;
88
use dicom_core::header::{DataElementHeader, Header, Length, SequenceItemHeader, Tag, VR};
99
use dicom_core::value::{PrimitiveValue, C};
1010
use dicom_encoding::decode::basic::{BasicDecoder, LittleEndianBasicDecoder};
11+
use dicom_encoding::decode::primitive_value::*;
1112
use dicom_encoding::decode::{BasicDecode, DecodeFrom};
1213
use dicom_encoding::error::{InvalidValueReadError, Result as EncodingResult, TextEncodingError};
1314
use dicom_encoding::text::{
1415
validate_da, validate_dt, validate_tm, DefaultCharacterSetCodec, DynamicTextCodec,
1516
SpecificCharacterSet, TextCodec, TextValidationOutcome,
1617
};
17-
use dicom_encoding::decode::primitive_value::*;
1818
use dicom_encoding::transfer_syntax::explicit_le::ExplicitVRLittleEndianDecoder;
1919
use dicom_encoding::transfer_syntax::{DynDecoder, TransferSyntax};
2020
use smallvec::{smallvec, SmallVec};

0 commit comments

Comments
 (0)