1 /*
2 *
3 * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
4 * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
5 * All rights reserved. See COPYRIGHT file for details.
6 *
7 * Source file for class DRTFixationDeviceSequence
8 *
9 * Generated automatically from DICOM PS 3.3-2017e
10 * File created on 2017-12-05 09:30:54
11 *
12 */
13
14
15 #include "dcmtk/config/osconfig.h" // make sure OS specific configuration is included first
16
17 #include "dcmtk/dcmrt/seq/drtfds.h"
18
19
20 // --- item class ---
21
Item(const OFBool emptyDefaultItem)22 DRTFixationDeviceSequence::Item::Item(const OFBool emptyDefaultItem)
23 : EmptyDefaultItem(emptyDefaultItem),
24 AccessoryCode(DCM_AccessoryCode),
25 FixationDeviceDescription(DCM_FixationDeviceDescription),
26 FixationDeviceLabel(DCM_FixationDeviceLabel),
27 FixationDevicePitchAngle(DCM_FixationDevicePitchAngle),
28 FixationDevicePosition(DCM_FixationDevicePosition),
29 FixationDeviceRollAngle(DCM_FixationDeviceRollAngle),
30 FixationDeviceType(DCM_FixationDeviceType)
31 {
32 }
33
34
Item(const Item & copy)35 DRTFixationDeviceSequence::Item::Item(const Item ©)
36 : EmptyDefaultItem(copy.EmptyDefaultItem),
37 AccessoryCode(copy.AccessoryCode),
38 FixationDeviceDescription(copy.FixationDeviceDescription),
39 FixationDeviceLabel(copy.FixationDeviceLabel),
40 FixationDevicePitchAngle(copy.FixationDevicePitchAngle),
41 FixationDevicePosition(copy.FixationDevicePosition),
42 FixationDeviceRollAngle(copy.FixationDeviceRollAngle),
43 FixationDeviceType(copy.FixationDeviceType)
44 {
45 }
46
47
~Item()48 DRTFixationDeviceSequence::Item::~Item()
49 {
50 }
51
52
operator =(const Item & copy)53 DRTFixationDeviceSequence::Item &DRTFixationDeviceSequence::Item::operator=(const Item ©)
54 {
55 if (this != ©)
56 {
57 EmptyDefaultItem = copy.EmptyDefaultItem;
58 AccessoryCode = copy.AccessoryCode;
59 FixationDeviceDescription = copy.FixationDeviceDescription;
60 FixationDeviceLabel = copy.FixationDeviceLabel;
61 FixationDevicePitchAngle = copy.FixationDevicePitchAngle;
62 FixationDevicePosition = copy.FixationDevicePosition;
63 FixationDeviceRollAngle = copy.FixationDeviceRollAngle;
64 FixationDeviceType = copy.FixationDeviceType;
65 }
66 return *this;
67 }
68
69
clear()70 void DRTFixationDeviceSequence::Item::clear()
71 {
72 if (!EmptyDefaultItem)
73 {
74 /* clear all DICOM attributes */
75 FixationDeviceType.clear();
76 FixationDeviceLabel.clear();
77 FixationDeviceDescription.clear();
78 FixationDevicePosition.clear();
79 FixationDevicePitchAngle.clear();
80 FixationDeviceRollAngle.clear();
81 AccessoryCode.clear();
82 }
83 }
84
85
isEmpty()86 OFBool DRTFixationDeviceSequence::Item::isEmpty()
87 {
88 return FixationDeviceType.isEmpty() &&
89 FixationDeviceLabel.isEmpty() &&
90 FixationDeviceDescription.isEmpty() &&
91 FixationDevicePosition.isEmpty() &&
92 FixationDevicePitchAngle.isEmpty() &&
93 FixationDeviceRollAngle.isEmpty() &&
94 AccessoryCode.isEmpty();
95 }
96
97
isValid() const98 OFBool DRTFixationDeviceSequence::Item::isValid() const
99 {
100 return !EmptyDefaultItem;
101 }
102
103
read(DcmItem & item)104 OFCondition DRTFixationDeviceSequence::Item::read(DcmItem &item)
105 {
106 OFCondition result = EC_IllegalCall;
107 if (!EmptyDefaultItem)
108 {
109 /* re-initialize object */
110 clear();
111 getAndCheckElementFromDataset(item, FixationDeviceType, "1", "1", "FixationDeviceSequence");
112 getAndCheckElementFromDataset(item, FixationDeviceLabel, "1", "2", "FixationDeviceSequence");
113 getAndCheckElementFromDataset(item, FixationDeviceDescription, "1", "3", "FixationDeviceSequence");
114 getAndCheckElementFromDataset(item, FixationDevicePosition, "1", "3", "FixationDeviceSequence");
115 getAndCheckElementFromDataset(item, FixationDevicePitchAngle, "1", "3", "FixationDeviceSequence");
116 getAndCheckElementFromDataset(item, FixationDeviceRollAngle, "1", "3", "FixationDeviceSequence");
117 getAndCheckElementFromDataset(item, AccessoryCode, "1", "3", "FixationDeviceSequence");
118 result = EC_Normal;
119 }
120 return result;
121 }
122
123
write(DcmItem & item)124 OFCondition DRTFixationDeviceSequence::Item::write(DcmItem &item)
125 {
126 OFCondition result = EC_IllegalCall;
127 if (!EmptyDefaultItem)
128 {
129 result = EC_Normal;
130 addElementToDataset(result, item, new DcmCodeString(FixationDeviceType), "1", "1", "FixationDeviceSequence");
131 addElementToDataset(result, item, new DcmShortString(FixationDeviceLabel), "1", "2", "FixationDeviceSequence");
132 addElementToDataset(result, item, new DcmShortText(FixationDeviceDescription), "1", "3", "FixationDeviceSequence");
133 addElementToDataset(result, item, new DcmShortString(FixationDevicePosition), "1", "3", "FixationDeviceSequence");
134 addElementToDataset(result, item, new DcmFloatingPointSingle(FixationDevicePitchAngle), "1", "3", "FixationDeviceSequence");
135 addElementToDataset(result, item, new DcmFloatingPointSingle(FixationDeviceRollAngle), "1", "3", "FixationDeviceSequence");
136 addElementToDataset(result, item, new DcmLongString(AccessoryCode), "1", "3", "FixationDeviceSequence");
137 }
138 return result;
139 }
140
141
getAccessoryCode(OFString & value,const signed long pos) const142 OFCondition DRTFixationDeviceSequence::Item::getAccessoryCode(OFString &value, const signed long pos) const
143 {
144 if (EmptyDefaultItem)
145 return EC_IllegalCall;
146 else
147 return getStringValueFromElement(AccessoryCode, value, pos);
148 }
149
150
getFixationDeviceDescription(OFString & value,const signed long pos) const151 OFCondition DRTFixationDeviceSequence::Item::getFixationDeviceDescription(OFString &value, const signed long pos) const
152 {
153 if (EmptyDefaultItem)
154 return EC_IllegalCall;
155 else
156 return getStringValueFromElement(FixationDeviceDescription, value, pos);
157 }
158
159
getFixationDeviceLabel(OFString & value,const signed long pos) const160 OFCondition DRTFixationDeviceSequence::Item::getFixationDeviceLabel(OFString &value, const signed long pos) const
161 {
162 if (EmptyDefaultItem)
163 return EC_IllegalCall;
164 else
165 return getStringValueFromElement(FixationDeviceLabel, value, pos);
166 }
167
168
getFixationDevicePitchAngle(Float32 & value,const unsigned long pos) const169 OFCondition DRTFixationDeviceSequence::Item::getFixationDevicePitchAngle(Float32 &value, const unsigned long pos) const
170 {
171 if (EmptyDefaultItem)
172 return EC_IllegalCall;
173 else
174 return OFconst_cast(DcmFloatingPointSingle &, FixationDevicePitchAngle).getFloat32(value, pos);
175 }
176
177
getFixationDevicePosition(OFString & value,const signed long pos) const178 OFCondition DRTFixationDeviceSequence::Item::getFixationDevicePosition(OFString &value, const signed long pos) const
179 {
180 if (EmptyDefaultItem)
181 return EC_IllegalCall;
182 else
183 return getStringValueFromElement(FixationDevicePosition, value, pos);
184 }
185
186
getFixationDeviceRollAngle(Float32 & value,const unsigned long pos) const187 OFCondition DRTFixationDeviceSequence::Item::getFixationDeviceRollAngle(Float32 &value, const unsigned long pos) const
188 {
189 if (EmptyDefaultItem)
190 return EC_IllegalCall;
191 else
192 return OFconst_cast(DcmFloatingPointSingle &, FixationDeviceRollAngle).getFloat32(value, pos);
193 }
194
195
getFixationDeviceType(OFString & value,const signed long pos) const196 OFCondition DRTFixationDeviceSequence::Item::getFixationDeviceType(OFString &value, const signed long pos) const
197 {
198 if (EmptyDefaultItem)
199 return EC_IllegalCall;
200 else
201 return getStringValueFromElement(FixationDeviceType, value, pos);
202 }
203
204
setAccessoryCode(const OFString & value,const OFBool check)205 OFCondition DRTFixationDeviceSequence::Item::setAccessoryCode(const OFString &value, const OFBool check)
206 {
207 OFCondition result = EC_IllegalCall;
208 if (!EmptyDefaultItem)
209 {
210 result = (check) ? DcmLongString::checkStringValue(value, "1") : EC_Normal;
211 if (result.good())
212 result = AccessoryCode.putOFStringArray(value);
213 }
214 return result;
215 }
216
217
setFixationDeviceDescription(const OFString & value,const OFBool check)218 OFCondition DRTFixationDeviceSequence::Item::setFixationDeviceDescription(const OFString &value, const OFBool check)
219 {
220 OFCondition result = EC_IllegalCall;
221 if (!EmptyDefaultItem)
222 {
223 result = (check) ? DcmShortText::checkStringValue(value) : EC_Normal;
224 if (result.good())
225 result = FixationDeviceDescription.putOFStringArray(value);
226 }
227 return result;
228 }
229
230
setFixationDeviceLabel(const OFString & value,const OFBool check)231 OFCondition DRTFixationDeviceSequence::Item::setFixationDeviceLabel(const OFString &value, const OFBool check)
232 {
233 OFCondition result = EC_IllegalCall;
234 if (!EmptyDefaultItem)
235 {
236 result = (check) ? DcmShortString::checkStringValue(value, "1") : EC_Normal;
237 if (result.good())
238 result = FixationDeviceLabel.putOFStringArray(value);
239 }
240 return result;
241 }
242
243
setFixationDevicePitchAngle(const Float32 value,const unsigned long pos)244 OFCondition DRTFixationDeviceSequence::Item::setFixationDevicePitchAngle(const Float32 value, const unsigned long pos)
245 {
246 if (EmptyDefaultItem)
247 return EC_IllegalCall;
248 else
249 return FixationDevicePitchAngle.putFloat32(value, pos);
250 }
251
252
setFixationDevicePosition(const OFString & value,const OFBool check)253 OFCondition DRTFixationDeviceSequence::Item::setFixationDevicePosition(const OFString &value, const OFBool check)
254 {
255 OFCondition result = EC_IllegalCall;
256 if (!EmptyDefaultItem)
257 {
258 result = (check) ? DcmShortString::checkStringValue(value, "1") : EC_Normal;
259 if (result.good())
260 result = FixationDevicePosition.putOFStringArray(value);
261 }
262 return result;
263 }
264
265
setFixationDeviceRollAngle(const Float32 value,const unsigned long pos)266 OFCondition DRTFixationDeviceSequence::Item::setFixationDeviceRollAngle(const Float32 value, const unsigned long pos)
267 {
268 if (EmptyDefaultItem)
269 return EC_IllegalCall;
270 else
271 return FixationDeviceRollAngle.putFloat32(value, pos);
272 }
273
274
setFixationDeviceType(const OFString & value,const OFBool check)275 OFCondition DRTFixationDeviceSequence::Item::setFixationDeviceType(const OFString &value, const OFBool check)
276 {
277 OFCondition result = EC_IllegalCall;
278 if (!EmptyDefaultItem)
279 {
280 result = (check) ? DcmCodeString::checkStringValue(value, "1") : EC_Normal;
281 if (result.good())
282 result = FixationDeviceType.putOFStringArray(value);
283 }
284 return result;
285 }
286
287
288 // --- sequence class ---
289
DRTFixationDeviceSequence(const OFBool emptyDefaultSequence)290 DRTFixationDeviceSequence::DRTFixationDeviceSequence(const OFBool emptyDefaultSequence)
291 : EmptyDefaultSequence(emptyDefaultSequence),
292 SequenceOfItems(),
293 CurrentItem(),
294 EmptyItem(OFTrue /*emptyDefaultItem*/)
295 {
296 CurrentItem = SequenceOfItems.end();
297 }
298
299
DRTFixationDeviceSequence(const DRTFixationDeviceSequence & copy)300 DRTFixationDeviceSequence::DRTFixationDeviceSequence(const DRTFixationDeviceSequence ©)
301 : EmptyDefaultSequence(copy.EmptyDefaultSequence),
302 SequenceOfItems(),
303 CurrentItem(),
304 EmptyItem(OFTrue /*emptyDefaultItem*/)
305 {
306 /* create a copy of the internal sequence of items */
307 Item *item = NULL;
308 OFListConstIterator(Item *) current = copy.SequenceOfItems.begin();
309 const OFListConstIterator(Item *) last = copy.SequenceOfItems.end();
310 while (current != last)
311 {
312 item = new Item(**current);
313 if (item != NULL)
314 {
315 SequenceOfItems.push_back(item);
316 } else {
317 /* memory exhausted, there is nothing we can do about it */
318 break;
319 }
320 ++current;
321 }
322 CurrentItem = SequenceOfItems.begin();
323 }
324
325
operator =(const DRTFixationDeviceSequence & copy)326 DRTFixationDeviceSequence &DRTFixationDeviceSequence::operator=(const DRTFixationDeviceSequence ©)
327 {
328 if (this != ©)
329 {
330 clear();
331 EmptyDefaultSequence = copy.EmptyDefaultSequence;
332 /* create a copy of the internal sequence of items */
333 Item *item = NULL;
334 OFListConstIterator(Item *) current = copy.SequenceOfItems.begin();
335 const OFListConstIterator(Item *) last = copy.SequenceOfItems.end();
336 while (current != last)
337 {
338 item = new Item(**current);
339 if (item != NULL)
340 {
341 SequenceOfItems.push_back(item);
342 } else {
343 /* memory exhausted, there is nothing we can do about it */
344 break;
345 }
346 ++current;
347 }
348 CurrentItem = SequenceOfItems.begin();
349 }
350 return *this;
351 }
352
353
~DRTFixationDeviceSequence()354 DRTFixationDeviceSequence::~DRTFixationDeviceSequence()
355 {
356 clear();
357 }
358
359
clear()360 void DRTFixationDeviceSequence::clear()
361 {
362 if (!EmptyDefaultSequence)
363 {
364 CurrentItem = SequenceOfItems.begin();
365 const OFListConstIterator(Item *) last = SequenceOfItems.end();
366 /* delete all items and free memory */
367 while (CurrentItem != last)
368 {
369 delete (*CurrentItem);
370 CurrentItem = SequenceOfItems.erase(CurrentItem);
371 }
372 /* make sure that the list is empty */
373 SequenceOfItems.clear();
374 CurrentItem = SequenceOfItems.end();
375 }
376 }
377
378
isEmpty()379 OFBool DRTFixationDeviceSequence::isEmpty()
380 {
381 return SequenceOfItems.empty();
382 }
383
384
isValid() const385 OFBool DRTFixationDeviceSequence::isValid() const
386 {
387 return !EmptyDefaultSequence;
388 }
389
390
getNumberOfItems() const391 size_t DRTFixationDeviceSequence::getNumberOfItems() const
392 {
393 return SequenceOfItems.size();
394 }
395
396
gotoFirstItem()397 OFCondition DRTFixationDeviceSequence::gotoFirstItem()
398 {
399 OFCondition result = EC_IllegalCall;
400 if (!SequenceOfItems.empty())
401 {
402 CurrentItem = SequenceOfItems.begin();
403 result = EC_Normal;
404 }
405 return result;
406 }
407
408
gotoNextItem()409 OFCondition DRTFixationDeviceSequence::gotoNextItem()
410 {
411 OFCondition result = EC_IllegalCall;
412 if (CurrentItem != SequenceOfItems.end())
413 {
414 ++CurrentItem;
415 result = EC_Normal;
416 }
417 return result;
418 }
419
420
gotoItem(const size_t num,OFListIterator (Item *)& iterator)421 OFCondition DRTFixationDeviceSequence::gotoItem(const size_t num, OFListIterator(Item *) &iterator)
422 {
423 OFCondition result = EC_IllegalCall;
424 if (!SequenceOfItems.empty())
425 {
426 size_t idx = num + 1;
427 iterator = SequenceOfItems.begin();
428 const OFListConstIterator(Item *) last = SequenceOfItems.end();
429 while ((--idx > 0) && (iterator != last))
430 ++iterator;
431 /* specified list item found? */
432 if ((idx == 0) && (iterator != last))
433 result = EC_Normal;
434 else
435 result = EC_IllegalParameter;
436 }
437 return result;
438 }
439
440
gotoItem(const size_t num,OFListConstIterator (Item *)& iterator) const441 OFCondition DRTFixationDeviceSequence::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const
442 {
443 OFCondition result = EC_IllegalCall;
444 if (!SequenceOfItems.empty())
445 {
446 size_t idx = num + 1;
447 iterator = SequenceOfItems.begin();
448 const OFListConstIterator(Item *) last = SequenceOfItems.end();
449 while ((--idx > 0) && (iterator != last))
450 ++iterator;
451 /* specified list item found? */
452 if ((idx == 0) && (iterator != last))
453 result = EC_Normal;
454 else
455 result = EC_IllegalParameter;
456 }
457 return result;
458 }
459
460
gotoItem(const size_t num)461 OFCondition DRTFixationDeviceSequence::gotoItem(const size_t num)
462 {
463 return gotoItem(num, CurrentItem);
464 }
465
466
getCurrentItem(Item * & item) const467 OFCondition DRTFixationDeviceSequence::getCurrentItem(Item *&item) const
468 {
469 OFCondition result = EC_IllegalCall;
470 if (CurrentItem != SequenceOfItems.end())
471 {
472 item = *CurrentItem;
473 result = EC_Normal;
474 }
475 return result;
476 }
477
478
getCurrentItem()479 DRTFixationDeviceSequence::Item &DRTFixationDeviceSequence::getCurrentItem()
480 {
481 if (CurrentItem != SequenceOfItems.end())
482 return **CurrentItem;
483 else
484 return EmptyItem;
485 }
486
487
getCurrentItem() const488 const DRTFixationDeviceSequence::Item &DRTFixationDeviceSequence::getCurrentItem() const
489 {
490 if (CurrentItem != SequenceOfItems.end())
491 return **CurrentItem;
492 else
493 return EmptyItem;
494 }
495
496
getItem(const size_t num,Item * & item)497 OFCondition DRTFixationDeviceSequence::getItem(const size_t num, Item *&item)
498 {
499 OFListIterator(Item *) iterator;
500 OFCondition result = gotoItem(num, iterator);
501 if (result.good())
502 item = *iterator;
503 return result;
504 }
505
506
getItem(const size_t num)507 DRTFixationDeviceSequence::Item &DRTFixationDeviceSequence::getItem(const size_t num)
508 {
509 OFListIterator(Item *) iterator;
510 if (gotoItem(num, iterator).good())
511 return **iterator;
512 else
513 return EmptyItem;
514 }
515
516
getItem(const size_t num) const517 const DRTFixationDeviceSequence::Item &DRTFixationDeviceSequence::getItem(const size_t num) const
518 {
519 OFListConstIterator(Item *) iterator;
520 if (gotoItem(num, iterator).good())
521 return **iterator;
522 else
523 return EmptyItem;
524 }
525
526
operator [](const size_t num)527 DRTFixationDeviceSequence::Item &DRTFixationDeviceSequence::operator[](const size_t num)
528 {
529 return getItem(num);
530 }
531
532
operator [](const size_t num) const533 const DRTFixationDeviceSequence::Item &DRTFixationDeviceSequence::operator[](const size_t num) const
534 {
535 return getItem(num);
536 }
537
538
addItem(Item * & item)539 OFCondition DRTFixationDeviceSequence::addItem(Item *&item)
540 {
541 OFCondition result = EC_IllegalCall;
542 if (!EmptyDefaultSequence)
543 {
544 item = new Item();
545 if (item != NULL)
546 {
547 SequenceOfItems.push_back(item);
548 result = EC_Normal;
549 } else
550 result = EC_MemoryExhausted;
551 }
552 return result;
553 }
554
555
insertItem(const size_t pos,Item * & item)556 OFCondition DRTFixationDeviceSequence::insertItem(const size_t pos, Item *&item)
557 {
558 OFCondition result = EC_IllegalCall;
559 if (!EmptyDefaultSequence)
560 {
561 OFListIterator(Item *) iterator;
562 result = gotoItem(pos, iterator);
563 if (result.good())
564 {
565 item = new Item();
566 if (item != NULL)
567 {
568 SequenceOfItems.insert(iterator, 1, item);
569 result = EC_Normal;
570 } else
571 result = EC_MemoryExhausted;
572 } else
573 result = addItem(item);
574 }
575 return result;
576 }
577
578
removeItem(const size_t pos)579 OFCondition DRTFixationDeviceSequence::removeItem(const size_t pos)
580 {
581 OFCondition result = EC_IllegalCall;
582 if (!EmptyDefaultSequence)
583 {
584 OFListIterator(Item *) iterator;
585 if (gotoItem(pos, iterator).good())
586 {
587 delete *iterator;
588 iterator = SequenceOfItems.erase(iterator);
589 result = EC_Normal;
590 } else
591 result = EC_IllegalParameter;
592 }
593 return result;
594 }
595
596
read(DcmItem & dataset,const OFString & card,const OFString & type,const char * moduleName)597 OFCondition DRTFixationDeviceSequence::read(DcmItem &dataset,
598 const OFString &card,
599 const OFString &type,
600 const char *moduleName)
601 {
602 OFCondition result = EC_IllegalCall;
603 if (!EmptyDefaultSequence)
604 {
605 /* re-initialize object */
606 clear();
607 /* retrieve sequence element from dataset */
608 DcmSequenceOfItems *sequence;
609 result = dataset.findAndGetSequence(DCM_FixationDeviceSequence, sequence);
610 if (sequence != NULL)
611 {
612 if (checkElementValue(*sequence, card, type, result, moduleName))
613 {
614 DcmStack stack;
615 OFBool first = OFTrue;
616 /* iterate over all sequence items */
617 while (result.good() && sequence->nextObject(stack, first /*intoSub*/).good())
618 {
619 DcmItem *ditem = OFstatic_cast(DcmItem *, stack.top());
620 if (ditem != NULL)
621 {
622 Item *item = new Item();
623 if (item != NULL)
624 {
625 result = item->read(*ditem);
626 if (result.good())
627 {
628 /* append new item to the end of the list */
629 SequenceOfItems.push_back(item);
630 first = OFFalse;
631 }
632 } else
633 result = EC_MemoryExhausted;
634 } else
635 result = EC_CorruptedData;
636 }
637 }
638 } else {
639 DcmSequenceOfItems element(DCM_FixationDeviceSequence);
640 checkElementValue(element, card, type, result, moduleName);
641 }
642 }
643 return result;
644 }
645
646
write(DcmItem & dataset,const OFString & card,const OFString & type,const char * moduleName)647 OFCondition DRTFixationDeviceSequence::write(DcmItem &dataset,
648 const OFString &card,
649 const OFString &type,
650 const char *moduleName)
651 {
652 OFCondition result = EC_IllegalCall;
653 if (!EmptyDefaultSequence)
654 {
655 result = EC_MemoryExhausted;
656 DcmSequenceOfItems *sequence = new DcmSequenceOfItems(DCM_FixationDeviceSequence);
657 if (sequence != NULL)
658 {
659 result = EC_Normal;
660 /* an empty optional sequence is not written */
661 if ((type == "2") || !SequenceOfItems.empty())
662 {
663 OFListIterator(Item *) iterator = SequenceOfItems.begin();
664 const OFListConstIterator(Item *) last = SequenceOfItems.end();
665 /* iterate over all sequence items */
666 while (result.good() && (iterator != last))
667 {
668 DcmItem *item = new DcmItem();
669 if (item != NULL)
670 {
671 /* append new item to the end of the sequence */
672 result = sequence->append(item);
673 if (result.good())
674 {
675 result = (*iterator)->write(*item);
676 ++iterator;
677 } else
678 delete item;
679 } else
680 result = EC_MemoryExhausted;
681 }
682 if (result.good())
683 {
684 /* insert sequence element into the dataset */
685 result = dataset.insert(sequence, OFTrue /*replaceOld*/);
686 }
687 if (DCM_dcmrtLogger.isEnabledFor(OFLogger::WARN_LOG_LEVEL))
688 checkElementValue(*sequence, card, type, result, moduleName);
689 if (result.good())
690 {
691 /* forget reference to sequence object (avoid deletion below) */
692 sequence = NULL;
693 }
694 }
695 else if (type == "1")
696 {
697 /* empty type 1 sequence not allowed */
698 result = RT_EC_InvalidValue;
699 if (DCM_dcmrtLogger.isEnabledFor(OFLogger::WARN_LOG_LEVEL))
700 checkElementValue(*sequence, card, type, result, moduleName);
701 }
702 /* delete sequence (if not inserted into the dataset) */
703 delete sequence;
704 }
705 }
706 return result;
707 }
708
709
710 // end of source file
711