@@ -117,9 +117,7 @@ struct Element {
117117 u32 limit = $ + length;
118118 Element value[while ($ < limit)];
119119 }
120- return;
121- }
122- if (tag_value(tag) == Item) {
120+ } else if (tag_value(tag) == Item) {
123121 // sequence Item or encapsulated Pixel Data fragment
124122 if (tag_value(parent.tag) == PixelData) {
125123 // Pixel Data fragment
@@ -137,29 +135,27 @@ struct Element {
137135 u32 limit = $ + length;
138136 Element value[while ($ < limit)];
139137 }
140- return;
141- }
142- if (tag_value(tag) == ItemDelimitationItem || tag_value(tag) == SequenceDelimitationItem) {
138+ } else if (tag_value(tag) == ItemDelimitationItem || tag_value(tag) == SequenceDelimitationItem) {
143139 std::assert(length == 0, "delimitation items should have zero length");
144140 break;
145- }
146- if (length == UNDEFINED_LENGTH) {
141+ } else if (length == UNDEFINED_LENGTH) {
147142 std::error(std::format("expected defined length for {} [{}]", tag, vr));
148- }
149- match (vr) {
150- ("AE"|"AS"|"CS"|"DA"|"DS"|"DT"|"IS"|"LO"|"PN"|"SH"|"TM"|"UC"|"UI"): StringValues value;
151- ("AT"): Values<Tag> value;
152- ("FL"|"OF"): Values<float> value;
153- ("FD"|"OD"): Values<double> value;
154- ("LT"|"ST"|"UR"|"UT"): char value[length];
155- ("OB"|"UN"): std::mem::Bytes<length> value;
156- ("OL"|"UL"): Values<u32> value;
157- ("OV"|"UV"): Values<u64> value;
158- ("OW"|"US"): Values<u16> value;
159- ("SL"): Values<s32> value;
160- ("SS"): Values<s16> value;
161- ("SV"): Values<s64> value;
162- (_): std::mem::Bytes<length> value;
143+ } else {
144+ match (vr) {
145+ ("AE"|"AS"|"CS"|"DA"|"DS"|"DT"|"IS"|"LO"|"PN"|"SH"|"TM"|"UC"|"UI"): StringValues value;
146+ ("AT"): Values<Tag> value;
147+ ("FL"|"OF"): Values<float> value;
148+ ("FD"|"OD"): Values<double> value;
149+ ("LT"|"ST"|"UR"|"UT"): char value[length];
150+ ("OB"|"UN"): std::mem::Bytes<length> value;
151+ ("OL"|"UL"): Values<u32> value;
152+ ("OV"|"UV"): Values<u64> value;
153+ ("OW"|"US"): Values<u16> value;
154+ ("SL"): Values<s32> value;
155+ ("SS"): Values<s16> value;
156+ ("SV"): Values<s64> value;
157+ (_): std::mem::Bytes<length> value;
158+ }
163159 }
164160} [[format_read("format_element")]];
165161
0 commit comments