- for(ListDocEntry::iterator i=docEntries.begin();i!=docEntries.end();++i) {
- if ( (*i)->GetGroup() == 0xfffe && (*i)->GetElement() == 0xe000 )
- continue;
- if ( group < (*i)->GetGroup() ||
- (group == (*i)->GetGroup() && element < (*i)->GetElement()) ){
- // instead of ReplaceOrCreateByNumber
- // that is a method of gdcmDocument :-(
- gdcmDocEntry *Entry;
- TagKey key = gdcmDictEntry::TranslateToKey(group, element);
- if ( ! ptagHT->count(key)) {
- // we assume a Public Dictionnary *is* loaded
- gdcmDict *PubDict = gdcmGlobal::GetDicts()->GetDefaultPubDict();
- // if the invoked (group,elem) doesn't exist inside the Dictionary
- // we create a VirtualDictEntry
- gdcmDictEntry *DictEntry = PubDict->GetDictEntryByNumber(group, element);
- if (DictEntry == NULL) {
- DictEntry=gdcmGlobal::GetDicts()->NewVirtualDictEntry(group,element,"UN","??","??");
- }
- // we assume the constructor didn't fail
- Entry = new gdcmDocEntry(DictEntry);
- /// \todo
- /// ----
- /// better we don't assume too much !
- /// gdcmSQItem is now used to describe any DICOMDIR related object
- ///
- } else {
- Entry = ptagHT->find(key)->second;
- }
- ((gdcmValEntry*)Entry)->SetValue(val);
- Entry->SetLength(val.length());
- docEntries.insert(i,Entry);
- return true;
- }
- if (group == (*i)->GetGroup() && element == (*i)->GetElement() ) {
- ((gdcmValEntry*)(*i))->SetValue(val);
- (*i)->SetLength(val.length());
- return true;
- }
- }
-}
-//-----------------------------------------------------------------------------
-// Protected
+/**
+ * \brief Clear the std::list from given entry BUT keep the entry.
+ * @param entryToRemove Entry to remove.
+ * @return true if the entry was found and removed; false otherwise
+ */
+bool SQItem::RemoveEntryNoDestroy(DocEntry *entryToRemove)
+{
+ for(ListDocEntry::iterator it = DocEntries.begin();
+ it != DocEntries.end();
+ ++it)
+ {
+ if ( *it == entryToRemove )
+ {
+ DocEntries.erase(it);
+ gdcmWarningMacro( "One element removed, no destroyed: "
+ << entryToRemove->GetKey() );
+ return true;
+ }
+ }
+
+ gdcmWarningMacro( "Entry not found:" << entryToRemove->GetKey() );
+ return false ;
+}
+
+/**
+ * \brief Remove all entry in the Sequence Item
+ */
+void SQItem::ClearEntry()
+{
+ for(ListDocEntry::iterator cc = DocEntries.begin();
+ cc != DocEntries.end();
+ ++cc)
+ {
+ delete *cc;
+ }
+ DocEntries.clear();
+}