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